使用ATC命令转换ONNX模型
本节介绍如何使用ATC命令自动转换.onnx格式的模型文件,并在昇腾AI处理器上基于图模型执行。
对于PyTorch、TensorFlow、MindSpore等前端框架导出的模型文件,GE提供了模型转换的能力,支持通过ATC命令行工具转化为适配昇腾AI处理器的离线模型并基于图模式执行。ATC目前已支持:
- *.onnx格式的模型转换成*.om格式的模型
- *.pb格式的模型转换成*.om格式的模型
- *.air格式的模型转换成*.om格式的模型
- *.prototxt与*.caffemodel格式的模型转换成*.om格式的模型
下面以*.onnx格式的模型转换成*.om格式的模型为例,介绍基本使用方法:
- 获取ONNX网络模型。
单击Link进入ModelZoo页面,查看README.md中“快速上手>模型推理”章节获取*.onnx模型文件,再以CANN软件包运行用户将获取的文件上传至开发环境任意目录,例如上传到$HOME/module/目录下。
- 使用ATC命令行工具进行模型转换(以*.onnx模型举例)。
atc --model=$HOME/module/resnet50*.onnx --framework=5 --output=$HOME/module/out/onnx_resnet50 --soc_version=<soc_version>
- --model:原始网络模型文件路径与文件名。
- --framework:原始网络模型框架类型,“3”代表TensorFlow模型,“5”代表ONNX模型,“1”代表MindSpore框架*.air格式的模型文件或TorchAir通过export导出的标准*.air格式文件
- --output:存放转换后的离线模型的路径以及文件名,例如,若配置为“$HOME/module/out/tf_resnet50”,则转换后的离线模型存储路径为“$HOME/module/out/”,转换后的离线模型名称为“tf_resnet50.om”。
- --soc_version:昇腾AI处理器的型号。取值查询方法如下:
- 针对如下产品型号:在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,获取Name信息。实际配置值为AscendName,例如Name取值为xxxyy,实际配置值为Ascendxxxyy。
Atlas A2 训练系列产品 /Atlas 800I A2 推理产品 /A200I A2 Box 异构组件Atlas 200I/500 A2 推理产品 Atlas 推理系列产品 Atlas 训练系列产品 - 针对如下产品型号,在安装昇腾AI处理器的服务器执行npu-smi info -t board -i id -c chip_id命令进行查询,获取Chip Name和NPU Name信息,实际配置值为Chip Name_NPU Name。例如Chip Name取值为Ascendxxx,NPU Name取值为1234,实际配置值为Ascendxxx_1234。其中:
- id:设备id,通过npu-smi info -l命令查出的NPU ID即为设备id。
- chip_id:芯片id,通过npu-smi info -m命令查出的Chip ID即为芯片id。
Atlas A3 训练系列产品 /Atlas A3 推理系列产品
- 针对如下产品型号:在安装昇腾AI处理器的服务器执行npu-smi info命令进行查询,获取Name信息。实际配置值为AscendName,例如Name取值为xxxyy,实际配置值为Ascendxxxyy。
- 若提示如下信息,则说明模型转换成功。
1
ATC run success, welcome to the next use.
成功执行命令后,*.onnx模型将会被转换成适配昇腾AI处理器的*.om离线模型,在--output参数指定的路径下,可查看生成的*.om离线模型文件。
- 后续操作。
转换成*.om离线模型后,可以调用acl接口加载转换好的*.om离线模型,执行模型推理。详细的模型加载与推理的方法可参见“推理应用开发流程”。