完成了ONNX框架的适配插件开发后,即可实现从ONNX框架调用Ascend C自定义算子。下面以一个仅包含LeakRelu算子的ONNX框架网络为例(该网络中的LeakyRelu算子通过适配插件映射为自定义的LeakyRelu算子),呈现一个使用推理工具进行推理的过程,目的在于让您快速体验推理场景下网络中自定义算子调用的过程。
在完成如下步骤之前,您需要先参考上文内容完成自定义LeakyRelu算子kernel侧和host侧的开发、ONNX适配插件的开发,并完成算子的编译部署。
LeakyRelu算子实现的完整样例请参考LINK。ONNX框架调用的完整示例请参考LINK。
wget https://obs-9be7.obs.cn-east-2.myhuaweicloud.com/AscendC/leaky_relu.onnx
atc --model=$HOME/module/leaky_relu.onnx --framework=5 --soc_version=<soc_version> --output=$HOME/module/out/leaky_relu --input_shape="X:8,16,1024" --input_format=ND
关键参数的解释如下:
如果无法确定具体的<soc_version>,则在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,在查询到的“Name”前增加Ascend信息,例如“Name”对应取值为xxxyy,实际配置的<soc_version>值为Ascendxxxyy。
... start compile Ascend C operator LeakyReluCustom. kernel name is leaky_relu_custom compile Ascend C operator: LeakyReluCustom success! ... ATC run success
成功执行命令后,在--output参数指定的路径下,可查看离线模型(如:leaky_relu.om)。
./msame --model "$HOME/module/out/leaky_relu.om" --output "$HOME/module/out/" --outfmt TXT --loop 1