极智AI | 昇腾CANN ATC模型转换

简介: 大家好,我是极智视界,本文介绍一下 昇腾 CANN ATC 模型转换。

大家好,我是极智视界,本文介绍一下 昇腾 CANN ATC 模型转换

昇腾 CANN 的全称是 Compute Architecture for Neural Networks,是昇腾针对 AI 场景推出的异构计算架构,通过提供多层次的编程接口,支持用户快速构建基于昇腾平台的AI应用和业务。用过昇腾的同学应该都清楚,需要把咱们的原始模型 (可能是 pytorch 的,可能是 tf 的,可能是 caffe 的,也可能是 darknet 的) 转换成 .om 模型,然后才能调用 AclLiteModel::ExecuteEx() 进行模型的推理。这个 模型转换的过程 就要用到 CANN 的 ATC 工具。目前 ATC 工具直接支持从 caffe、onnx、tf pb 以及 mindspore 模型的转换,所以如果你的训练框架是 pytorch,则需要做 torch.onnx.export 的操作;如果你的训练框架是 darknet,则需要做 darknet -> caffedarknet -> onnx 的转换,之后才能用到 ATC。以上说的是整网模型,当然 ATC 还支持用 Ascend IR 定义的单算子的 om 转换。因此就形成了如下的 ATC 功能架构图:

在使用 ATC 流程时,需要先安装好 CANN 开发环境,然后准备好需要转换的模型文件(caffemodel、onnxmodel、pbmodel、mindsporemodel、json单算子模型),然后可以开始使用 ATC(可选 AIPP 配置)。整体ATC 工具的执行流程如下:

来解释一下 AIPP 配置:AIPP 是 ATC 的高级功能,AIPP 全称 Artificial Intelligence Pre-Processing 智能图像预处理,用于在昇腾 AI Core 上完成图像预处理,包括改变图像尺寸(crop + padding,reisze(暂时还不支持))、色域转换 (转换图像格式:BGR->RGB、YUV->BGR 等)、归一化 (减均值除方差),在 AIPP 图像数据预处理之后再把数据喂给模型推理。可以说,有了 AIPP,你一般不用在模型外面再自己写预处理了。自己在模型外面写预处理有几个弊端:(1) 开发 AI Core 是有门槛的 (TBE 或 TIK开发方式);(2) 如果你用 AI CPU (注意:所谓的 AI CPU 也是昇腾卡上的计算资源,不是直观理解的 CPU) 去写预处理算子,一方面也是有门槛的 (可能比 AI Core 开发门槛低一点),另一方面性能也不会好到哪里去;(3) 如果你干脆就直接跑在 CPU 上,那么可能会涉及 deviceTohost / hostTodevice 的数据拷贝,而且本身 CPU 就比较慢。

下面我整理了一下 ATC 的传参,主要包括 总体选项输入选项输出选项目标芯片选项功能配置选项模型调优选项算子调优选项调试选项,如下:


好了,以上分享了 昇腾 CANN ATC 模型转换,希望我的分享能对你的学习有一点帮助。


logo_show.gif

相关文章
|
1天前
|
机器学习/深度学习 人工智能 算法
AI大模型学习理论基础
本文探讨了AI大模型学习的理论基础,包括深度学习(模拟神经元工作原理,通过多层非线性变换提取特征)、神经网络结构(如前馈、循环和卷积网络)、训练方法(监督、无监督、强化学习)、优化算法(如SGD及其变种)、正则化(L1、L2和dropout防止过拟合)以及迁移学习(利用预训练模型加速新任务学习)。这些理论基础推动了AI大模型在复杂任务中的应用和人工智能的发展。
|
4天前
|
人工智能 搜索推荐 决策智能
【AI Agent系列】【阿里AgentScope框架】1. 深入源码:详细解读AgentScope中的智能体定义以及模型配置的流程
【AI Agent系列】【阿里AgentScope框架】1. 深入源码:详细解读AgentScope中的智能体定义以及模型配置的流程
35 0
|
4天前
|
数据采集 存储 人工智能
【AI大模型应用开发】【LangChain系列】实战案例4:再战RAG问答,提取在线网页数据,并返回生成答案的来源
【AI大模型应用开发】【LangChain系列】实战案例4:再战RAG问答,提取在线网页数据,并返回生成答案的来源
29 0
|
4天前
|
数据采集 存储 人工智能
【AI大模型应用开发】【LangChain系列】实战案例2:通过URL加载网页内容 - LangChain对爬虫功能的封装
【AI大模型应用开发】【LangChain系列】实战案例2:通过URL加载网页内容 - LangChain对爬虫功能的封装
14 0
|
4天前
|
人工智能 Python
【AI大模型应用开发】【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案
【AI大模型应用开发】【LangChain系列】实战案例1:用LangChain写Python代码并执行来生成答案
9 0
|
4天前
|
人工智能 监控 数据处理
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】1. 快速上手数据集与测试评估过程
18 0
|
4天前
|
人工智能 监控 数据可视化
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】0. 一文全览Tracing功能,让你的程序运行过程一目了然
【AI大模型应用开发】【LangSmith: 生产级AI应用维护平台】0. 一文全览Tracing功能,让你的程序运行过程一目了然
8 0
|
4天前
|
人工智能 API 开发者
【AI大模型应用开发】0.2 智谱AI API接入详细步骤和简单应用
【AI大模型应用开发】0.2 智谱AI API接入详细步骤和简单应用
16 0
|
4天前
|
数据采集 人工智能 数据可视化
【AI大模型应用开发】【LangChain系列】4. 从Chain到LCEL:探索和实战LangChain的巧妙设计
【AI大模型应用开发】【LangChain系列】4. 从Chain到LCEL:探索和实战LangChain的巧妙设计
17 0
|
4天前
|
存储 人工智能 JSON
【AI大模型应用开发】【LangChain系列】3. 一文了解LangChain的记忆模块(理论实战+细节)
本文介绍了LangChain库中用于处理对话会话记忆的组件。Memory功能用于存储和检索先前的交互信息,以便在对话中提供上下文。目前,LangChain的Memory大多处于测试阶段,其中较为成熟的是`ChatMessageHistory`。Memory类型包括:`ConversationBufferMemory`(保存对话历史数组)、`ConversationBufferWindowMemory`(限制为最近的K条对话)和`ConversationTokenBufferMemory`(根据Token数限制上下文长度)。
13 0