CANN/ge图引擎概念原理

发布时间:2026/11/9 3:07:09

CANN/ge图引擎概念原理 概念原理【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/geTensor/Node/GraphAscend IRAscend Intermediate Representation昇腾中间表示是AI处理器专用的抽象数据结构用于表达计算流程。基于GE图引擎能力PyTorch、TensorFlow、MindSpore、PaddlePaddle等主流AI框架的算法模型可以统一转换为使用Ascend IR表示的计算图同时也支持用户自定义构建计算图后续的编译加速优化均基于该计算图完成。图 1使用Ascend IR表示的计算图 ![IR表示的计算图](https://raw.gitcode.com/cann/ge/raw/243ea8d2d8f7623dd210c0867dde5782ec5594a9/docs/zh/user_guides/graph_dev/figures/ascend_ir_compute_graph.png 使用Ascend-IR表示的计算图?utm_sourcegitcode_repo_files)Ascend IR主要包括张量Tensor、NodeOperator、Graph三个维度的信息。Tensor包括Tensor描述及数据两部分Tensor描述包括了该Tensor的name、dtype、shape、format信息。表 1TensorDesc属性说明|属性|定义| |--|--| |名称name|用于对Tensor进行索引不同Tensor的name需要保持唯一。| |形状shape|Tensor的形状例如(10, )或者(1024, 1024)或者(2, 3, 4)等。如形状(3, 4)表示第一维有3个元素第二维有4个元素(3, 4)表示一个3行4列的矩阵数组。形式(i1, i2, …, in)其中i1到in均为正整数。| |数据类型dtype|Tensor对象的数据类型。取值范围float16, float32, int8, int16, int32, uint8, uint16, bfloat16, bool等。| |数据排布格式format|数据的物理排布格式详细请参见数据排布格式。|NodeNodeOperator包括算子的name、type、输入、输出、属性等信息。表 2Operator属性说明|属性|定义| |--|--| |名称name|算子的名称用于标识图中的某个算子同一图中算子的名称需要保持唯一。如图2所示Conv1、Pool1、Conv2都是图中的算子名称其中Conv1与Conv2算子的类型为Convolution表示分别做一次卷积运算。| |类型type|图中每一个算子根据算子类型进行实现的匹配相同类型的算子的实现逻辑相同。在一个图中同一类型的算子可能存在多个例如上图中的Conv1算子与Conv2算子的类型都为Convolution。| |输入input|算子的输入Tensor数据。| |输出output|算子的输出Tensor数据。| |属性Attributes|定义算子行为和功能常见的算子属性包括轴Axis、权重Weight、偏差Bias。|图 2算子名称表示的计算图 ![名称表示的计算图](https://raw.gitcode.com/cann/ge/raw/243ea8d2d8f7623dd210c0867dde5782ec5594a9/docs/zh/user_guides/graph_dev/figures/op_name_compute_graph.png 算子名称表示的计算图?utm_sourcegitcode_repo_files)GraphGraph包括name、算子列表、输入算子、输出算子等信息。表 3Graph属性说明|属性|定义| |--|--| |名称name|图的名称用于标识网络中的某个Graph同一网络中Graph的名称需要保持唯一。| |算子列表|图中所有的节点列表。| |输入算子input|图的输入算子。| |输出算子output|图的输出算子。|GE的工作原理图构建GE提供了两种构图方式onnx/pb等模型图构建用户通过ATC命令行工具或者C语言的Parser接口通过前端框架算子逐一映射成CANN算子从而将框架模型文件如*.onnx和*.pb等格式解析成Ascend IR表示的计算图。图 1Parser解析计算图 ![Parser解析计算图](https://raw.gitcode.com/cann/ge/raw/243ea8d2d8f7623dd210c0867dde5782ec5594a9/docs/zh/user_guides/graph_dev/figures/parser_parse_compute_graph.png Parser解析计算图?utm_sourcegitcode_repo_files)ATC命令行工具详细说明请参见《ATC离线模型编译工具》。使用Parser接口构建图请参见使用Parser接口将原始模型解析为Graph。使用图引擎接口全新构建Graph用户通过图引擎接口将计算函数算子进行组合构建成Ascend IR表示的计算图。下图展示了图构建的基本过程详细过程可参考使用图引擎接口全新构建Graph。图 2全新构建计算图 ![全新构建计算图](https://raw.gitcode.com/cann/ge/raw/243ea8d2d8f7623dd210c0867dde5782ec5594a9/docs/zh/user_guides/graph_dev/figures/build_compute_graph_new.png 全新构建计算图?utm_sourcegitcode_repo_files)图编译与图优化对于Ascend IR表示的计算图GE适配底层硬件运行要求进行一系列的编译优化、编译生成om格式的离线模型主要过程包括图准备根据算子的输入张量信息、算子逻辑及算子属性等信息提前推理出算子的输出张量描述包括张量的形状、数据类型及数据排布格式等信息算子构图准备阶段就可以为所有的张量静态分配内存避免动态内存分配带来的开销此过程通常称之为inferShapeAndType、inferFormat。同时进行与硬件无关的、算法层级的优化包括但不限于常量折叠、冗余分支消除等。图拆分根据执行引擎AI Core/AI CPU等对算子分类拆分形成不同的子图方便后续在不同的硬件上进行针对性优化。图优化通过算子融合等图优化手段提升图的执行性能。可以进行和硬件无关的优化比如将多个算子融合成1个或几个算子节省计算时间或者进行与硬件相关的优化比如通过UB融合缩短数据在硬件内存上的搬运时间从而提升执行效率。Ascend 950PR/Ascend 950DT不支持UB融合。图编译根据计算图分配运行资源包括内存分配、stream资源分配等并编译生成.om离线模型。图加载与图执行加载编译生成的离线模型文件完成真实运行资源分配并将stream/task下发到Device上执行主要过程包括图加载解析离线模型分配真实的内存、创建stream运行资源。图执行拷贝输入数据将stream/task下发到Device由AI Core/AI CPU等执行对应的算子Device计算完成后返回给Host用户程序。模型下沉调度特性简介在AI模型运行中通常需要CPU和AI专用处理器如NPU又称AI处理器协同工作。CPU所在位置称为主机端Host而NPU所在位置称为设备端Device。主机端擅长处理复杂的逻辑计算而设备端擅长进行高并行计算。通过高效的计算调度机制实现Host和Device之间的高效协同是提高AI模型性能的关键能够显著提升异构系统资源的利用率。Host CPU将模型中的算子依次下发到Device执行如下图中的标号①所示每一个算子在执行流上以1个或多个Task的形式存在昇腾AI处理器依次拉取执行流上的Task执行。这种Host调度带来的问题是需要Host和Device频繁交互在实际的训练或推理场景中模型会运行多次每次运行都会触发Host把模型上的所有算子遍历下发一遍。图 1Host调度示意图 ![Host调度示意图](https://raw.gitcode.com/cann/ge/raw/243ea8d2d8f7623dd210c0867dde5782ec5594a9/docs/zh/user_guides/graph_dev/figures/host_scheduling_diagram.png Host调度示意图?utm_sourcegitcode_repo_files)对于输入tensor shape固定不变的静态shape的模型在编译时即可确定所有算子的输入输出shape结合昇腾内存复用算法可完成模型级内存编排静态shape模型在编译时还可提前完成所有算子的Tiling计算等Host侧计算。因此GE提供了静态图下沉调度模式让模型中的算子在加载阶段提前以整图的形式下发到Device上在执行时只需在Host侧下发一个模型执行的Task即可触发模型在Device上调度执行。相比于Host调度模式下沉调度模式可大大降低Host侧调度开销有效减少Host和Device之间的交互。图 2静态图下沉调度示意图 ![静态图下沉调度示意图](https://raw.gitcode.com/cann/ge/raw/243ea8d2d8f7623dd210c0867dde5782ec5594a9/docs/zh/user_guides/graph_dev/figures/static_graph_scheduling_diagram.png 静态图下沉调度示意图?utm_sourcegitcode_repo_files)实现原理模型下沉调度分为两个阶段模型加载和模型执行。模型加载模型加载的具体动作和Host调度类似即遍历图中的所有算子并将其整体下发至Device流上区别在于下发到流上不立即执行。模型加载是一次性的动作在首次模型执行时完成模型加载如上图中的过程1所示。模型执行模型加载完成之后可以像下发单算子Task一样向执行流下发一个模型执行Task昇腾AI处理器调度到该Task时如上图 “执行流”中的E执行模型中所有Task如上图中的过程3。如果需要多次运行模型仅需多次下发模型执行Task如上图中的过程2所示。Host Bound调度和模型下沉调度的时序比较如下图所示可以看出模型下沉执行的开始有一个模型下发的头开销模型下沉执行E2E会有一个相对于Host调度的收益模型的下沉头开销越小性能提升幅度将越大。模型下沉调度Host/Device时序分析如下所示每次模型下发时支持更新模型的Feature Map内存地址和输入输出内存地址。如果模型的Feature Map内存和模型输入输出内存发生了更新则在模型下沉头开销即上图中的m_l_t中会完成模型内算子相关地址的刷新。【免费下载链接】geGEGraph Engine是面向昇腾的图编译器和执行器提供了计算图优化、多流并行、内存复用和模型下沉等技术手段加速模型执行效率减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/11/8 19:42:05

CANN/GE模型描述获取API

aclmdlGetDescFromFile 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Ten…

2026/11/8 19:42:08

cann/ge 获取数据集缓冲区API

aclmdlGetDatasetBuffer 【免费下载链接】ge GE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、Te…

2026/11/9 3:03:28

仁寿代办电工证怎么考才稳?考前押题全攻略来了

仁寿代办电工证怎么考才稳?考前押题全攻略来了 实操考试心里没底怕挂科?仁寿代办电工证的报考者越来越多,但真正能顺利通过考试、拿到证书的人却并不多。其实,很多人并不是能力不足,而是缺乏系统准备,尤其在考前押题这块,没抓住重点就容易翻车。今天就…

2026/11/9 3:03:28

蓝翔技校考电工证值不值得考?外省证怎么转过来?

蓝翔技校考电工证值不值得考?外省证怎么转过来? 之前考的证在外省能不能转过来?你不是一个人,很多小伙伴在考电工证之前都问过这个问题,特别是那些已经在外地工作、想要换证或升级证书的人。蓝翔技校考电工证值不值得考?今天就来聊聊这个事儿,从报名到…

2026/11/9 3:03:28

嵊州怎样考本电工证多少钱一次过不了怎么办

嵊州怎样考本电工证多少钱一次过不了怎么办 实操考试心里没底怕挂科?嵊州电工证考试难度到底有多大?你是不是也担心自己一上考场就懵?别急,这篇文章从 焦作培训机构学员 的角度出发,给你最真实的备考经验,告诉你 嵊州怎样考本电工证多少钱…

2026/11/9 3:03:28

你急需的电工证怎么考?滨州市哪里考电工证的真实经历来了

你急需的电工证怎么考?滨州市哪里考电工证的真实经历来了 你还在为找不到电工证发愁?工作机会都因为没有证件被拒了?别急,我来告诉你滨州市哪里考电工证,还有我自己的真实经历,帮你少走弯路。 电工证到底值不值?为什么这么多人抢着考?…

2026/11/9 0:37:55

电工证丢失还能补吗?千万别踩坑,丢了证等于失业

电工证丢失还能补吗?千万别踩坑,丢了证等于失业 你正在找工作,但手里的电工证突然丢了,这下怎么办?别急,先别慌, 电工证丢失还能补吗 ?答案是肯定的,但 千万别踩坑 ,补办流程如果不了解,可能会耽误你上岗、甚至影响到你的收入。…

2026/11/9 0:03:09

建设厅的特种工有哪些含金量高?别交完钱考不过

建设厅的特种工有哪些含金量高?别交完钱考不过 怕考不过白交培训费?别急,先搞清楚建设厅的特种工有哪些含金量高的证,再决定是不是值得投入时间和金钱。 建设厅的特种工证是建筑行业里最基础、也最实用的证书之一,涉及多个作业类别,每种证的 含金量…

2026/11/9 0:03:09

荆门市电工证报名怎么考才靠谱 全国通用证别交冤枉钱

荆门市电工证报名怎么考才靠谱 全国通用证别交冤枉钱 怕考不过白交培训费?荆门市电工证报名前必须知道这些避坑指南。别看网上一堆培训机构广告,真要报个电工证,很多人被坑得一塌糊涂。特别是那些打着“包过”旗号的,最后不是考试不过,就是证不是全国通…

2026/11/9 0:03:09

高空电工作业过程通过率揭秘:怎么选靠谱机构不被坑

高空电工作业过程通过率揭秘:怎么选靠谱机构不被坑 不知道去哪报名怕被中介坑?你不是一个人。现在特种作业证报名渠道五花八门,从线下培训机构到线上代理,真假难辨。尤其是像高空电工作业这类高风险、高门槛的作业类型,证书含金量和考试通过率直接影响你…

2026/11/7 14:54:47

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/7 14:50:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑