searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

昇腾张量编译器介绍

2024-05-28 08:51:15
19
0

ATC工具简介

昇腾张量编译器(Ascend Tensor Compiler,简称ATC)是异构计算架构CANN体系下的模型转换工具, 它可以将开源框架的网络模型以及Ascend IR定义的单算子描述文件(json格式)转换为昇腾AI处理器支持的.om格式离线模型。其功能架构如下图所示。

zh-cn_image_0000001655708265.png

模型转换过程中,ATC会进行算子调度优化、权重数据重排、内存使用优化等具体操作,对原始的深度学习模型进行进一步的调优,从而满足部署场景下的高性能需求,使其能够高效执行在昇腾AI处理器上。

安装流程

ATC工具存在于CANN开发套件包(toolkit),理论上完成CANN相关安装及配置即可使用ATC工具。

运行流程

zh-cn_image_0000001655428541.png

命令行实例

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所有参数设定详解,可参考如下全景图

zh-cn_image_0000001405665632.png

模型转换耗时较长的问题

若开发环境架构为aarch64,可能存在模型转换耗时较长的问题,可以使用numactl工具指定CPU核后进行模型转换,步骤如下:

  1. 以ATC安装用户登录开发环境,执行su root命令切换到root用户
  2. 确保开发环境已连接网络后,使用对应系统下包管理器(如yum)安装numactl工具
yum -y install numactl
  1. 在原有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核心,可根据实际情况自行修改。

0条评论
0 / 1000
LuckyJack
1文章数
0粉丝数
LuckyJack
1 文章 | 0 粉丝