ONNXã®æé©åãä¸éã試ãã¦ã¿ãã®ã§ã¾ã¨ãã
ãµãã¼ããã¦ããæé©åä¸è¦§ã®åå¾
ãµãã¼ããã¦ããæé©åã¯ãget_available_passesã§åå¾ã§ãã¾ãã
from onnx import optimizer all_passes = optimizer.get_available_passes()
大ããåããã¨ããã®ããã«åé¡ã§ãã¾ãã
- æå³ã®ãªãOpã®åé¤ ï¼eliminate_deadendçï¼
- 2ã¤ã®Opã®fusionãï¼fuse_matmul_add_bias_into_gemmçï¼
- Convã¸ã®fusionãï¼fuse_add_bias_into_convçï¼
- ãã®ä»
convã¸ã®fuseã¯å ¨ãåããããã¼ã¸ã§ã³ã¢ããå¾ ã¡ã§ãã
æé©åã®çµæ
Qiitaã«ããããã¾ã¨ãã¾ããã
- 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 æé©å
nop
nopã¯æé©åã®ãã¹ã¨ãã¦æå®ã§ãã¾ãããä½ãæé©åãã¾ãããä»ã®æé©åã®ãã³ãã¬ã¼ãã§ãã
lift_lexical_references
ããã¯ä¸æã試ããã¨ãã§ãã¾ããã§ãããLoopãæ¡ä»¶åå²ã§é層çã«ãªã£ã¦ãã¾ã£ã¦ããã°ã©ãããã©ããã«ããããã§ãããåãããã¨ãã§ãã¾ããã§ããããã¼ã¸ã§ã³ã¢ããæã«è©¦ãã¦ã¿ããã§ãã
splitæé©å
ãããå¯ä¸é¢ç½ãã£ãæé©åã§ãã
ã°ã©ãã®ä¸ã§æ¯åè¨ç®ããªãã¨ãããªãæã¨ãä¸åº¦ã ãè¨ç®ããã°ããæãå¥ã®ã°ã©ãã«åé¢ãã¾ãã
ãã®ã°ã©ãã§èãã¾ãã
å·¦ä¸ã®Addã宿°ã®ã¿ã®è¶³ãç®ã§ããã°ã©ãã®è¨ç®ãå®è¡ããæã«æ¯åè¨ç®ããå¿ è¦ãç¡ãé¨åã§ããçãä¸ã®Addã¯ãå ¥åXã«ãã£ã¦çµæãå¤ããã®ã§æ¯åè¨ç®å¿ è¦ã§ããããããsplitæé©åãè¡ã£ã¦ã°ã©ããåé¢ããã¨ä»¥ä¸ã®2ã¤ã«ãªãã¾ãã
å·¦ãä¸åº¦ã ãè¨ç®ããã°ããã°ã©ããå³ãï¼ãã®çµæã使ã£ã¦ï¼æ¨è«æã«æ¯åè¨ç®ããã°ã©ãã«ãªãã¾ãã
ã³ã³ãã¤ã©ã§ãããã宿°ã®ç³è¾¼ã¿ï¼å®æ°ä¼æï¼ãå®ç¾ããããã®æé©åã§ããONNXã®å ´åå®è¡æã®è¨ç®ç²¾åº¦ãããããªãã®ã§ãã¹ãï¼æé©åã®å®è¡ç°å¢ï¼ã§ç³è¾¼ãã§ãã¾ãã®ã§ã¯ãªããç³ã¿è¾¼ã¿ã®è¨ç®ãonnx runtimeå´ã«è¨ç®ãããæå³ãããã®ããªã¨æãã¾ããã
æå¾ã«
ONNXã®åå¼·ãå ¼ãã¦é çªã«ãã£ã¦ã¿ã¾ãããéä¸ã§é£½ãã¦ãã¾ãã¾ãããæå¾ã®splitæé©åãé¢ç½ãã¦ããã£ãã§ãã
ã°ã©ãã®æé©åã¯ã©ã®ãã¬ã¼ã ã¯ã¼ã¯ã§ãããã®ã§ãåå¥ã®ãã¬ã¼ã¯ã¼ã¯ã§ããããæ¸ããã«ONNXã§ããã®ã¯åççãªãããã¾ãããããã®ç¨åº¦ãªãããããæ¸ãã¦ãããã§ãããæä½ã®ããã®APIã¯ãããä¸åä¸ã®ã¬ã¤ã¤ã¼æ¬²ããã
Qiitaã¯æ¸ãã°æ¸ãã»ã©ã誰ãããããã¦ããªãè¨äºã§ããæ¤ç´¢ã®ä¸ã«ããã®ã§ãå¾®å¦ãªæ°æã¡ã«ãªãã¾ãããæ¤ç´¢ãã¼ã¸ã®3ãã¼ã¸ç®ãããã§åºã¦ãããã°è¯ããã§ãããããããã®ã¯é£ããã®ããªãä»åãQiitaã¨ã¯ã¦ãªã«åããããªè¨äºãæ¸ããã®ããSEOåã®æ¯è¼ããããã£ãã¨ããã®ãããã¾ããã©ããªããã¨ããã