本文分享自华为云社区《使用ATC工具将主流开源框架模型转换为昇腾模型云社区华为云》,作者:昇腾CANN。什么是ATC,它能做什么? 昇腾张量编译器(AscendTensorCompiler,简称ATC)是昇腾CANN架构体系下的模型转换工具:什么是ATC,它能做什么?它可以将开源框架的网络模型(例如TensorFlow、ONNX等)转换为昇腾AI处理器支持的模型文件(。om格式),用于后续的模型推理。它可以将基于AscendIR定义的单算子描述文件(。json格式)转换为昇腾AI处理器支持的模型文件(。om格式),用于后续在整网中验证算子功能。 模型转换过程中,ATC会进行算子调度优化、权重数据重排、内存使用优化等操作,对开源框架的网络模型做进一步调优,使其高效地在昇腾AI处理器上执行。ATC工具功能架构 开源框架网络模型编译流程:使用ATC工具转换模型时,开源框架网络模型经过Parser解析后,转换为昇腾的中间图IRGraph。中间图IRGraph经过图准备,图拆分,图优化,图编译等一系列操作后,转成适配昇腾AI处理器的。om模型文件。后续用户可调用AscendCL提供的模型加载、执行等接口实现模型推理。单算子编译流程:使用ATC工具转换单算子时,单算子经过编译后,转换成适配昇腾AI处理器的单算子。om模型文件。后续用户可调用AscendCL提供的单算子模型加载、执行等接口在整网中验证单算子功能。如何使用ATC工具 下面以Caffe框架ResNet50网络模型为例,介绍如何使用ATC工具转换模型。 1。将Caffe框架ResNet50网络模型的模型文件。prototxt、权重文件。caffemodel上传至ATC工具所在的Linux服务器。 2。执行如下命令进行模型转换。atcframework0socversion{socversion}modelHOMEmodresnet50。prototxtweightHOMEmodresnet50。caffemodeloutputHOMEmoduleoutcafferesnet50 参数解释如下:framework:原始网络模型框架类型,0表示Caffe框架。socversion:指定模型转换时昇腾AI处理器的版本,例如Ascend310。model:原始网络模型文件路径,含文件名。weight:原始网络模型权重文件路径,含文件名,仅当原始网络模型是Caffe时需要指定。output:转换后的。om模型文件路径,含文件名,转换成功后,模型文件名自动以。om后缀结尾。 3。若提示ATCrunsuccess信息,则说明模型转换成功。 在output参数指定的路径下,可查看转换后的模型文件,例如cafferesnet50。om。ATC工具支持更多特性 上述只给出了ATC工具进行模型转换最基本的命令,本章节给出ATC工具支持的更多特性,方便用户进一步了解。ATC工具支持将原始模型文件或昇腾。om模型文件转换成json格式:原始模型文件json文件atcmode1framework0omHOMEmodresnet50。prototxtjsonHOMEmodoutcafferesnet50。json昇腾。om模型文件json文件atcmode1omHOMEmodoutcafferesnet50。omjsonHOMEmodoutcafferesnet50。jsonATC工具支持自定义。om模型的输入输出数据类型: 模型转换时支持指定网络模型的输入或输出节点的数据类型、Format,支持设置精度等。 此处的示例命令场景:针对Caffe框架ResNet50网络模型,转换后的模型输入为FP16类型,指定Pooling算子作为输出,并且该输出节点为FP16类型。atcframework0socversion{socversion}modelHOMEmodresnet50。prototxtweightHOMEmodresnet50。caffemodeloutputHOMEmodoutcafferesnet50inputfp16nodesdataoutnodespool1:0outputtypepool1:0:FP16ATC工具支持设置动态BatchSize动态分辨率: 某些推理场景,如检测出目标后再执行目标识别网络,由于目标个数不固定导致目标识别网络输入BatchSize不固定;如果每次推理都按照最大的BatchSize或最大分辨率进行计算,会造成计算资源浪费,因此,模型转换需要支持动态BatchSize和动态分辨率的设置,实际推理时,通过AscendCL接口设置本次推理所需的BatchSize和动态分辨率。 动态BatchSizeatcframework0socversion{socversion}modelHOMEmodresnet50。prototxtweightHOMEmodresnet50。caffemodeloutputHOMEmodoutcafferesnet50inputshapedata:1,3,224,224dynamicbatchsize1,2,4,8 其中,inputshape中的1表示设置动态BatchSize,具体支持哪些BatchSize由dynamicbatchsize决定。 动态分辨率atcframework0socversion{socversion}modelHOMEmodresnet50。prototxtweightHOMEmodresnet50。caffemodeloutputHOMEmodoutcafferesnet50inputshapedata:1,3,1,1dynamicimagesize224,224;448,448 其中,inputshape中的1,1表示设置动态分辨率,具体支持哪些分辨率由dynamicimagesize决定。更多介绍 关于ATC工具更多参数和特性说明,请登录昇腾社区查阅: 〔1〕昇腾文档中心 〔2〕昇腾社区在线课程 〔2〕昇腾论坛 点击下方,第一时间了解华为云新鲜技术 华为云博客大数据博客AI博客云计算博客开发者中心华为云 华为云开发者联盟