---
title: 【CANN文档速递07期】模型转换浅谈-官方技术文章-昇腾社区
description: 昇腾张量编译器（Ascend Tensor Compiler，简称ATC）是昇腾CANN架构体系下的模型转换工具。
keywords: CANN,文档速递,模型转换浅谈,官方技术文章,昇腾社区,ATC,什么是,它能做什么
url: https://www.hiascend.com/developer/techArticles/20220527-2?envFlag=1
section: (其他)
---

# 【CANN文档速递07期】模型转换浅谈-官方技术文章-昇腾社区

URL: https://www.hiascend.com/developer/techArticles/20220527-2?envFlag=1
描述: 昇腾张量编译器（Ascend Tensor Compiler，简称ATC）是昇腾CANN架构体系下的模型转换工具。
关键词: CANN,文档速递,模型转换浅谈,官方技术文章,昇腾社区,ATC,什么是,它能做什么

官方技术文章 [了解详情](https://www.hiascend.com/zh/developer/techArticles)

【CANN文档速递07期】模型转换浅谈

【CANN文档速递07期】模型转换浅谈

实战经验

发表于: 2022/05/27

## 01什么是ATC，它能做什么？

昇腾张量编译器（Ascend Tensor Compiler，简称ATC）是昇腾CANN架构体系下的模型转换工具：

● 它可以将开源框架的网络模型或Ascend IR定义的单算子描述文件(json格式)转换为昇腾AI处理器支持的.om格式离线模型。

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

其中，开源框架网络模型支持情况如下：

## 02 ATC工具功能架构

开源框架网络模型场景：

1.	开源框架网络模型经过Parser解析后，转换为中间态IR Graph。

2.	中间态IR经过图准备，图拆分，图优化，图编译等一系列操作后，转成适配昇腾AI处理器的离线模型。

3.	用户将转换后的离线模型上传到板端环境，通过AscendCL接口加载模型文件实现推理过程。

单算子描述文件场景：

1.	通过ATC工具进行单算子编译后，转成适配昇腾AI处理器的单算子离线模型。

2.	用户将转换后的单算子模型文件上传到板端环境，通过AscendCL接口加载单算子模型文件来验证单算子功能。

## 03如何使用ATC工具

下面以Caffe框架ResNet-50网络模型为例，为您演示如何借助ATC工具进行模型转换。

1.	参见昇腾社区相关文档安装CANN软件包，并设置ATC运行所需环境变量。在任意路径执行atc --help命令，若回显参数信息，则说明ATC工具能正常使用。

2.	准备要进行转换的ResNet-50网络模型文件*.prototxt、权重文件*.caffemodel，然后上传到ATC工具所在Linux服务器。

3.	执行如下命令进行模型转换。

参数解释如下：

--framework：原始网络模型框架类型，0表示Caffe框架。

--soc_version：指定模型转换时昇腾AI处理器的版本，例如Ascend310。

--model：原始网络模型文件路径与文件名。

--weight：原始网络模型权重文件路径与文件名，仅当原始网络模型是Caffe时需要指定。

--output：

•	若是开源框架的网络模型：存放转换后的离线模型的路径及文件名，文件名以指定的为准，自动以.om后缀结尾。

•	若是单算子描述文件：存放转换后的单算子模型的路径。

4.	若提示ATC run success信息，则说明模型转换成功。

在--output参数指定的路径下，可查看离线模型：caffe_resnet50.om。

## 04 ATC工具高级特性

上述只给出了ATC工具进行模型转换最基本的命令，本章节给出ATC工具支持的更多高级特性，方便用户进一步了解，如下场景假设用户已经准备好待转换的模型

原始模型文件或离线模型转成json文件

如果用户不方便查看原始模型或离线模型的参数信息时，可以将原始模型或离线模型转成json文件进行查看。

•	原始模型文件转json文件

• 离线模型转json文件

该场景下需要先将原始模型转成离线模型，然后再将离线模型转成json文件。

自定义离线模型的输入输出数据类型

模型转换时支持指定网络模型的输入、输出节点的Datatype、Format、支持精度选择等高级参数。例如，针对Caffe框架ResNet50网络模型，要求转换后模型输入为FP16类型，指定Pooling算子作为输出，并且该输出节点为FP16类型，则转换命令为：

离线模型支持动态BatchSize/动态分辨率

某些推理场景，如检测出人脸后再执行人脸识别网络，由于人脸个数不固定导致人脸识别网络输入BatchSize不固定；如果每次推理都按照最大的BatchSize或最大分辨率进行计算，会造成计算资源浪费，因此，模型转换需要支持动态BatchSize和动态分辨率的设置，实际推理时，通过AscendCL接口设置具体的BatchSize和动态分辨率。

•	动态BatchSize

其中，“--input_shape ”中的“-1”表示设置动态BatchSize，具体支持哪些BatchSize由“--dynamic_batch_size”决定。

•	动态分辨率

其中，“--input_shape ”中的“-1,-1”表示设置动态分辨率，具体支持哪些分辨率由“--dynamic_image_size ”决定。

## 05 更多介绍

关于ATC工具更多参数和特性说明，请登录昇腾社区，阅读相关文档：https://www.hiascend.com/document [了解详情](https://www.hiascend.com/document)

昇腾CANN文档中心致力于为开发者提供更优质的内容和更便捷的开发体验，助力CANN开发者共建AI生态。任何意见和建议都可以在昇腾社区反馈，您的每一份关注都是我们前进的动力。

本页内容
