ATC工具简介
昇腾张量编译器(Ascend Tensor Compiler,简称ATC)是异构计算架构CANN体系下的模型转换工具, 它可以将开源框架的网络模型以及Ascend IR定义的单算子描述文件(json格式)转换为昇腾AI处理器支持的.om格式离线模型。其功能架构如下图所示。
模型转换过程中,ATC会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够高效执行在昇腾AI处理器上。
安装流程
ATC工具存在于CANN开发套件包(toolkit),理论上完成CANN相关安装及配置即可使用ATC工具。
运行流程
命令行实例
ATC工具为CLI工具,请在命令行中直接执行,一个命令行实例如下,该实例将基于caffe框架训练得到的ResNet-50模型转换为适用于昇腾计算平台的om离线模型
atc --model=caffe_model/resnet50.prototxt --weight=caffe_model/resnet50.caffemodel --framework=0 --output=model/resnet50 --soc_version=Ascend310P3 --input_format=NCHW --input_fp16_nodes=data --output_type=FP32 --out_nodes=prob:0
转换离线om模型任务中atc工具的四个必填参数为
--soc_version (通过npu-smi工具查询)
--model(转换前原始模型,caffe框架需要搭配--weight参数使用)
--output(转换后离线模型的存放路径)
--framework(原始网络模型框架类型,0:Caffe;1:MindSpore;3:TensorFlow;5:ONNX)
ATC所有参数设定详解,可参考如下全景图
模型转换耗时较长的问题
若开发环境架构为aarch64,可能存在模型转换耗时较长的问题,可以使用numactl工具指定CPU核后进行模型转换,步骤如下:
- 以ATC安装用户登录开发环境,执行su root命令切换到root用户
- 确保开发环境已连接网络后,使用对应系统下包管理器(如yum)安装numactl工具
yum -y install numactl
- 在原有atc命令的基础上,可通过numactl -C指定编号16到31的CPU核来处理模型转换操作,如命令行实例中的任务,可修改为
numactl -C 16-31 --localalloc
atc --model=caffe_model/resnet50.prototxt --weight=caffe_model/resnet50.caffemodel --framework=0 --output=model/resnet50 --soc_version=Ascend310P3 --input_format=NCHW --input_fp16_nodes=data --output_type=FP32 --out_nodes=prob:0
此处指定编号16到31的CPU核心,可根据实际情况自行修改。