算子是组成模型的基本单元。模型转换时,会进行算子融合来达到网络性能提升的目的。当模型中存在算子融合规则未覆盖且可融合的算子时,模型转换完成则无法达到最优性能。本节以YOLOV5模型为例,介绍通过专家系统UB算子融合推荐功能自动发现并输出模型中可融合的Cube和Vector算子,帮助用户快速定位可融合算子,提升模型性能。
以HwHiAiUser用户为例执行以下操作。
OM离线模型文件存放路径为${data_path}数据目录根路径的project目录下。
. /home/HwHiAiUser/Ascend/ascend-toolkit/set_env.sh
msadvisor -d /home/HwHiAiUser/data -c model
-d参数数据指定OM离线模型文件的路径,指定到数据目录的根目录(包含所有专家系统输入数据的目录);UB算子融合推荐功能属于对模型的分析,所以-c参数配置值为model。
根据专家系统UB算子融合推荐功能输出结果,可以对图1进行融合。
具体融合操作需开发者自行修改算子代码,完成融合后的模型结构示例如图2所示。
图中以YOLOV5网络模型的Conv2D、Mul和AscendQuart算子融合为Conv2D算子为例,左侧部分为融合前的YOLOV5网络模型结构,右侧部分为优化后的YOLOV5网络模型结构,可以看到优化后模型结构得到了简化。
通过专家系统工具前后两次对OM模型的UB算子融合分析,并对比两次输出结果可知专家系统工具可以快速准确定位到模型中的可融合算子,减少用户的定位时间,提升效率。