ONNXには最適化の機能も含まれています。
このプログラムを実行すると、サポートしている最適化の一覧を表示できます。
from onnx import optimizer
all_passes = optimizer.get_available_passes()
print("Available optimization passes:")
for p in all_passes:
print(p)
print()
順番に実行してみたい。
Available optimization passes:
eliminate_deadend
eliminate_identity
eliminate_nop_dropout
eliminate_nop_monotone_argmax
eliminate_nop_pad
eliminate_nop_transpose
eliminate_unused_initializer
extract_constant_to_initializer
fuse_add_bias_into_conv
fuse_bn_into_conv
fuse_consecutive_concats
fuse_consecutive_log_softmax
fuse_consecutive_reduce_unsqueeze
fuse_consecutive_squeezes
fuse_consecutive_transposes
fuse_matmul_add_bias_into_gemm
fuse_pad_into_conv
fuse_transpose_into_gemm
lift_lexical_references
nop
split_init
split_predict
onnxのバージョン
実行したONNXのバージョンです。バージョン上がれば内容も変わりそうです。
>>> import onnx
>>> onnx.__version__
'1.5.0'
1.5.0ですね。1
実際に最適化を試してみた 2 3
- ONNXでeliminate_deadend 最適化
- ONNXで eliminate_identity 最適化
- ONNXで eliminate_nop_dropout 最適化
- ONNXで eliminate_nop_monotone_argmax 最適化
- ONNXで eliminate_nop_pad 最適化
- ONNXで eliminate_nop_transpose 最適化
- ONNXで eliminate_unused_initializer 最適化
- ONNXで extract_constant_to_initializer 最適化
- ONNXで fuse_add_bias_into_conv 最適化(駄目でした)
- ONNXで fuse_bn_into_conv 最適化(駄目でした)
- ONNXで fuse_consecutive_concats 最適化
- ONNXで fuse_consecutive_log_softmax 最適化
- ONNXで fuse_consecutive_reduce_unsqueeze 最適化
- ONNXで fuse_consecutive_squeezes 最適化
- ONNXで fuse_consecutive_transposes 最適化
- ONNXで fuse_matmul_add_bias_into_gemm 最適化
- ONNXで fuse_pad_into_conv 最適化(駄目でした)
- ONNXで fuse_transpose_into_gemm 最適化
- ONNXで split 最適化