首页 > 自考资讯 > 自考知识

ATC:一个能将主流开源框架模型转换为昇腾模型的神奇工具

头条共创 2024-07-05

本文由华为云社区分享《使用ATC工具将主流开源框架模型转换为昇腾模型-云社区-华为云》,作者:升腾CANN。

什么是ATC,它能做什么?

Ascend Tensor Compiler(简称ATC)是基于Ascend CANN架构系统的模型转换工具。什么是ATC?它能为您做什么?

您可以将开源框架(TensorFlow、ONNX等)中的网络模型转换为升腾AI处理器支持的模型文件(.om格式),用于后续的模型推理。您可以将基于Ascend IR定义的单个算子描述文件(*.json格式)转换为Ascend AI处理器支持的模型文件(.om格式)。稍后可以使用它来验证网络上的操作员功能。在模型转换过程中,ATC会进行优化算子调度、重新排列权重数据、优化内存使用等操作,进一步优化开源框架中的网络模型,并利用Ascend AI处理器在上面高效运行。

ATC工具功能架构

1445c98740034561bca65af35447e448~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1720716999&x-signature=AB4Ya5iZHWRpWaj82C0QE7pEfrI%3D 开源框架网络模型编译流程:使用ATC工具转换模型时,开源框架网络模型经过解析器解析,转换为升腾的中间图IR图。经过图准备、图划分、图优化、图编译等一系列操作,中间图IR图被转换为与升腾AI处理器兼容的*.om模型文件。后续用户可以调用AscendCL提供的模型加载、执行等接口来实现模型推理。单算子编译流程:使用ATC工具转换单算子时,会编译并转换为与升腾AI处理器兼容的单算子*.om模型文件。后续用户可以调用AscendCL提供的单算子模型加载和运行接口来验证全网单算子功能。

如何使用ATC工具

下面以Caffe框架ResNet-50网络模型为例,演示如何使用ATC工具对模型进行改造。

1、将Caffe框架ResNet-50网络模型的模型文件*.prototxt和权重文件*.caffemodel上传到ATC工具所在的Linux服务器。

2. 运行以下命令转换模型。

atc --framework=0 --soc_version=${soc_version} --model=$HOME/mod/resnet50.prototxt --weight=$HOME/mod/resnet50.caffemodel --output=$HOME/module/out/caffe_resnet50参数解释如下:

--framework:原始网络模型框架类型。 0表示Caffe框架。 --soc_version:转换模型时指定Ascend AI处理器版本(例如Ascend310)。 --model:原始网络模型文件路径,包括文件名。 --weight:如果原始网络模型是Caffe,则只需指定原始网络模型权重文件路径(包括文件名)。 --output:转换后的*.om模型文件路径(含文件名) 如果转换成功,模型文件名会自动以.om后缀结尾。 3. 如果看到ATC执行成功的消息,则模型转换成功。

您可以在--output参数指定的路径下查看转换后的模型文件(例如caffe_resnet50.om)。

ATC工具支持更多特性

以上仅展示了使用ATC工具进行模型转换的最基本命令。本章介绍ATC 工具支持的其他功能,以供用户进一步理解。

ATC工具支持将原始模型文件或升腾*.om模型文件转换为json格式。 - 原始模型文件- json文件atc --mode=1 --framework=0 --om=$HOME/mod/resnet50.prototxt - -json=$HOME/mod/out/caffe_resnet50.json - 升腾*.om模型file - json file atc --mode=1 --om=$HOME/mod/out/caffe_resnet50.om - -json=$HOME/mod/out/caffe_resnet50.json ATC工具支持*.om模型输入,支持自定义输出数据类型。支持模型转换时指定网络模型输入或输出节点的数据类型和格式。支持设置精度等

命令场景示例:对于Caffe框架ResNet50网络模型,转换后的模型输入为FP16类型,指定池化算子为输出,输出节点为FP16类型。

atc --framework=0 --soc_version=${soc_version} --model=$HOME/mod/resnet50.prototxt --weight=$HOME/mod/resnet50.caffemodel --output=$HOME/mod/out/caffe_resnet50 --input_fp16_nodes='data' --out_nodes='pool1:0' --output_type='pool1:0:FP16' ATC 工具支持动态BatchSize/动态分辨率设置。在一些推理场景中,比如检测到目标,然后运行目标识别网络,目标识别网络的输入BatchSize不固定,因为目标的数值不固定,所以每次推理都是,存在浪费计算资源,因此模型转换必须支持该设置。实际推理时,通过AscendCL接口设置本次推理所需的BatchSize和动态分辨率。

- 动态批量大小

atc --framework=0 --soc_version=${soc_version} --model=$HOME/mod/resnet50.prototxt --weight=$HOME/mod/resnet50.caffemodel --output=$HOME/mod/out/caffe_resnet50 --input_shape='data:-1,3,224,224' --dynamic_batch_size='1,2,4,8' 其中--input_shape中的“-1”表示设置动态BatchSize,具体支持的BatchSize由'. --dynamic_batch_size”确定。

- 动态分辨率

atc --framework=0 --soc_version=${soc_version} --model=$HOME/mod/resnet50.prototxt --weight=$HOME/mod/resnet50.caffemodel --output=$HOME/mod/out/caffe_resnet50 --input_shape='data:1,3,-1,-1' --dynamic_image_size='224,224;448,448' 其中“--input_shape”的“-1,-1”表示动态分辨率设置,具体表示哪些分辨率支持的。速率由“--dynamic_image_size”确定。

了解

更多介绍

ATC工具的参数和功能的更多信息,请登录升腾社区。

[1]升腾文献中心

[2]升腾社区在线课程

[2]升腾论坛

点击下方抢先了解华为云新技术~

华为云博客_大数据博客_AI博客_云计算博客_开发者中心-华为云

#华为云开发者联盟#

版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。

猜你喜欢