首页 > 其他分享 >基于香橙派AIpro将开源框架模型转换为昇腾模型

基于香橙派AIpro将开源框架模型转换为昇腾模型

时间:2024-04-12 10:12:59浏览次数:27  
标签:AIpro resnet50 ATC -- 模型 香橙 HOME mod

本文分享自华为云社区《如何基于香橙派AIpro将开源框架模型转换为昇腾模型》,作者:昇腾CANN。

在前面的介绍中,我们知道了如何基于香橙派AIpro开发AI推理应用,也大致了解到在推理之前,需要把原始网络模型 (可能是 PyTorch 的、TensorFlow,可能是Caffe的等等) 转换成 .om 模型,然后才能调用昇腾的aclmdlExecute 等模型执行接口在香橙派AIpro进行模型推理。这个模型转换的过程就要用到 ATC 工具,目前 ATC 工具直接支持从 Caffe、ONNX、TensorFlow 以及 MindSpore模型的转换,所以如果你的训练框架是 PyTorch,则需要做 torch.onnx.export 操作导出成ONNX模型后才能使用ATC工具。

01 ATC工具简介

昇腾张量编译器(Ascend Tensor Compiler,简称ATC)是昇腾模型转换工具,它可以将开源框架的网络模型(例如TensorFlow、ONNX等)转换为昇腾AI处理器支持的模型文件(.om格式),用于后续的模型推理。

模型转换过程中,ATC会进行算子调度优化、权重数据重排、内存使用优化等操作,对开源框架的网络模型做进一步调优,使其高效地在昇腾AI处理器上执行。

1.png

主要过程:

  1. 开源框架网络模型经过Parser解析后,转换为昇腾的中间图IR Graph。
  2. 中间图IR Graph经过图准备,图拆分,图优化,图编译等一系列操作后,转成适配昇腾AI处理器的*.om模型文件。
  3. 用户可调用AscendCL提供的模型加载、执行等接口实现模型推理。

02 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:指定模型转换时昇腾AI处理器的版本,可执行npu-smi info命令进行查询,在查询到的“Name”前增加Ascend信息,例如“Name”对应取值为xxxyy。
  • --model:原始网络模型文件路径,含文件名。
  • --weight:原始网络模型权重文件路径,含文件名,仅当原始网络模型是Caffe时需要指定。
  • --output:转换后的*.om模型文件路径,含文件名,转换成功后,模型文件名自动以.om后缀结尾。

3、若提示ATC run success信息,则说明模型转换成功。

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

03 ATC工具高阶用法介绍

上述只给出了ATC工具进行模型转换最基本的命令,下面介绍ATC工具支持的更多特性,方便用户进一步了解。

1、ATC工具支持将原始模型文件或昇腾*.om模型文件转换成json格式

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

  • 原始模型文件—>json文件
atc --mode=1 --framework=0 --om=$HOME/mod/resnet50.prototxt --json=$HOME/mod/out/caffe_resnet50.json
  • 昇腾*.om模型文件—>json文件
atc --mode=1 --om=$HOME/mod/out/caffe_resnet50.om --json=$HOME/mod/out/caffe_resnet50.json

2、ATC工具支持自定义*.om模型的输入输出数据类型

模型转换时支持指定网络模型的输入或输出节点的数据类型、Format,支持设置精度等。此处的示例命令场景是针对Caffe框架ResNet50网络模型,转换后的模型输入为FP16类型,指定Pooling算子作为输出,并且该输出节点为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" 

3、ATC工具支持设置动态BatchSize/动态分辨率

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

  • 动态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 ”决定。

04 更多学习资源

[1]香橙派AIpro开源样例代码:https://gitee.com/ascend/EdgeAndRobotics

[2]昇腾文档中心:https://www.hiascend.com/zh/document

[3]香橙派AIpro学习资源一站式导航:https://www.hiascend.com/forum/thread-0285140173361311056-1-1.html

点击关注,第一时间了解华为云新鲜技术~

 

标签:AIpro,resnet50,ATC,--,模型,香橙,HOME,mod
From: https://www.cnblogs.com/huaweiyun/p/18130592

相关文章

  • 读论文-基于注意力机制的浅层图像隐写分析模型
    前言今天要读的论文是一篇名为《基于注意力机制的浅层图像隐写分析模型》,文章提出了一种基于注意力机制的浅层图像隐写分析模型,通过使用一个浅层神经网络控制模型参数量和训练时间,引入注意力模块,加速模型收敛,提升模型检测的准确率。要引用本文:请使用如下格式:段明月,李爽,钟小......
  • 【论文随笔】推荐系统综述_推荐模型、推荐技术与应用领域(A Survey of Recommendation
    前言今天读的论文为一篇于2022年1月3日发表的论文,这篇文章是关于推荐系统的综述,主要研究了推荐系统在不同服务领域的应用趋势,包括推荐模型、技术和应用领域。通过分析2010年至2021年间发表的顶级文章和顶级会议论文,系统化了推荐系统模型和技术的研究,并分析了按年份的研究趋势。文......
  • PYTHON用时变马尔可夫区制转换(MARKOV REGIME SWITCHING)自回归模型分析经济时间序列|附
    全文下载链接:http://tecdat.cn/?p=22617最近我们被客户要求撰写关于MRS的研究报告,包括一些图形和统计输出。本文提供了一个在统计模型中使用马可夫转换模型模型的例子,来复现Kim和Nelson(1999)中提出的一些结果。它应用了Hamilton(1989)的滤波器和Kim(1994)的平滑器  %matplot......
  • R语言基于决策树的银行信贷风险预警模型
    原文链接:http://tecdat.cn/?p=2783原文出处:拓端数据部落公众号 引言我国经济高速发展,个人信贷业务也随着快速发展,而个人信贷业务对提高内需,促进消费也有拉动作用。有正必有反,在个人信贷业务规模不断扩大的同时,信贷的违约等风险问题也日益突出,一定程度上制约着我国的信贷市场......
  • 人工智能_大模型030_大模型开发框架003_Semantic Kernel中Native Function嵌套调用_SK
    ###4.2、NativeFunction嵌套调用(选)**注意:**NativeFunction的嵌套调用,本质上就是函数嵌套。官方给的写法是在Kernel的设计思想下的实现,通过Kernel来获取函数并执行,观感上较为晦涩。实际开发中,可以根据个人对SK内核与设计理念的理解,自行选择使用以下写法,或使用普......
  • 艾科瑞特科技:自然语言处理-全任务支持零样本学习模型-中文版
    艾科瑞特科技:自然语言处理-全任务支持零样本学习模型-中文版关键词:目标检测、目标跟踪、图像识别、图像分类、视频分析、自然语言处理、自然语言分析、计算机视觉、人工智能、AIGC、AI、大模型、多模态大模型、API、Docker、镜像、API市场、云市场、国产软件、信创内容摘要:......
  • 基于LEAP模型的能源环境发展、碳排放建模预测及不确定性分析实践应用
     在国家“3060”碳达峰碳中和的政策背景下,如何寻求经济-能源-环境的平衡有效发展是国家、省份、城市及园区等不同级别经济体的重要课题。根据国家政策、当地能源结构、能源技术发展水平以及相关碳排放指标制定合理有效的低碳能源发展规划需要以科学准确的能源环境发展预测模型......
  • 单线程Reactor模型
    1.如何理解reactorreactor是一种设计模式。用于处理事件驱动的系统。reactor模式,主要有两个组件:reactor反应器:负责监听所有事件,当事件发生时,调用相应的处理程序。reactor本身时一个事件循环,负责处理I/O事件。handler处理程序:处理特点类型的事件。当reactor接收......
  • 一文搞懂计算机视觉模型
    计算机视觉,这个曾经让科学家们望而生畏的领域,如今在深度学习的加持下,正迎来前所未有的发展。你是否好奇,是哪些深度学习模型让计算机拥有了“慧眼”?让我们一起揭开这些模型的神秘面纱。/1卷积神经网络(CNNs)。它们就像是视觉任务的万金油,无论是图像分类、目标检测还是人......
  • 基于PSO的NARMAX模型参数辨识算法matlab仿真
    目录1.算法仿真效果2.MATLAB源码3.算法概述4.部分参考文献1.算法仿真效果matlab2022a仿真结果如下:......