版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
主讲老师:李锋算子开发工具-TBE项目2:AI应用开发及测试任务2.4《车载计算平台技术与应用》目录任务导入AssignmentINTRO学习目标LearningobjectivesCONTENTS0102知识准备Backgroundknowledge03课堂总结Classroomsummary0504课堂小测ClassroomquizzPART01任务导入AssignmentINTRO任务导入深度学习算法由一个个算子组成,在网络模型中,算子对应层或节点的计算逻辑。当开发者遇到开发的网络需要使用的算子在软件栈不支持,或者想要修改现有算子中的计算逻辑,又或者是通过新开发算子提升计算性能时,开发者就需要自定义算子。请从开发者的角度分析,TBE工具编译运行流程。TBE编译流程PART02学习目标Learningobjectives学习目标素质目标培养学生的团队合作能力和沟通表达能力;鼓励学生发挥创新思维,平衡自定义算子的实用性和可用性。能力目标能完成算子形状的编程转换[A20];编写出NCHW/NHWC与NC1HWC0数据转换公式[A21];能绘制出TBE算子编译运行流程[A22]。知识目标能讲解算子的四大属性[K26];能描述TBE的功能框架[K27];能描述TBE算子编译运行流程[K28]。PART03知识准备Backgroundknowledge一、算子基本概念算子(Operator,简称OP)是一个函数空间到函数空间上的映射O:X→X。在Caffe中,算子对应层中的计算逻辑,如卷积层中的卷积算法;全连接层中的权值求和。..XXX→X的映射一、算子基本概念在深度学习中,算子具有名称、形状、数据类型、数据排布格式等四大属性。属性定义名称(name)用于对Tensor进行索引,不同Tensor的名称需要保持唯一形状(shape)Tensor的形状,比如(10)、(1024,1024)等形式:(i1,i2,...in),其中i1,i2,in为正整数数据类型(dtype)功能描述:指定Tensor对象的数据类型取值范围:float16,float32,int8,int16,int32,uint8,uint16,...数据排布格式(format)定义了解读数据的维度算子名称是用于标识网络中的某个算子,同一网络中算子的名称唯一。如图,conv1、pool1、conv2都是此网络中的算子名称,其中conv1和conv2算子类型为Convolution,分别表示一次卷积运算。1.算子名称一、算子基本概念算子名称网络拓扑图中的算子名称在深度学习中,张量(Tensor)是主要的数据结构。张量的形状(Shape)以(D0,D1,...,Dn-1)的形式表示,D0到Dn-1是任意的正整数。Shape的第一个元素为张量最外层的中括号的元素数量,第二个元素为张量从左边开始的第二个中括号元素数量,以此类推。2.算子形状一、算子基本概念张量形状1(0,)[1,2,3](3,)[[1,2],[3,4]](2,2)[[1,2],[3,4],[5,6],[7,8]](2,2,2)假设shape=(4,20,20,3),shape是照片的形状,则元素4表示4张照片,两个元素20表示每张照片宽和高,元素3表示像素由红绿蓝三色组成。2.算子形状一、算子基本概念shape示意图Shape在编程中可理解为操作Tensor的各层循环,例如对shape(4,20,20,3)的Atensor进行操作,循环语句如下:2.算子形状一、算子基本概念对于复杂张量,引入形状相关的概念-轴(Axis)。轴表示shape的下标,轴有两种计算方式,从shape的第一个元素开始,第一个元素记为0,依次增加1;从shape的最后一个元素开始,最后一个元素记为-1,依次减少1。2.算子形状一、算子基本概念Shape:(4,20,20,3)Axis:0123-1-2-3-4算子可以指代多种不同的概念,常见的算子类型如下表。3.算子类型一、算子基本概念类型作用示例算术算子执行基本数学运算加(+)、减(-)、乘(*)、除(/)和模运算(%)关系算子比较两个值,并返回布尔值等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)逻辑算子执行逻辑运算逻辑非(NOT,!)、逻辑与(AND,&&)、逻辑或(OR,||)常见的算子类型如下表。3.算子类型一、算子基本概念类型作用示例位运算算子对整数的二进制位进行操作位与(&)、位或(|)、位异或(^)、位非(~)、左移(<<)、右移(>>)赋值算子用于给变量赋值简单赋值(=)、加等于(+=)、减等于(-=)、乘等于(*=)、除等于(/=)条件(三元)算子基于条件进行值的选择的三元表达式condition?value_if_true:value_if_false常见的算子类型如下表。3.算子类型一、算子基本概念类型作用示例成员访问算子用于访问对象的成员点(.)操作符在C++或Java中访问结构体、类成员索引算子用于访问序列类型(如数组、列表、字符串)中的元素/运算符重载在支持运算符重载的语言中,为自定义类型定义标准算子的行为/常见的算子类型如下表。3.算子类型一、算子基本概念类型作用示例高阶函数算子接收一个函数作为参数或返回一个函数map、filter、reduce数据库查询算子用于数据的筛选、排序和聚合SQL中的SELECT、JOIN、WHERE机器学习算子在机器学习和深度学习框架中,指代神经网络中的操作卷积(Conv)、池化(Pooling)、全连接(Dense)数据排布格式定义了解读数据的维度,如1D、2D、3D、4D等。在深度学习领域,多维数据通过多维数组存储。常见的卷积神经网络的特征图通常用四维数组保存,即4D。4.数据排布格式一、算子基本概念代表字母含义举例NBatch数量图像的数量HHeight特征图高度垂直高度方向的像素个数WWidth特征图宽度水平宽度方向的像素个数CChannels特征图通道彩色RGB图像的channels为3不同深度学习框架会按照不同的顺序存储特征图数据,以格式为RGB的图片为例,在NCHW中,数据的存储顺序为同一通道的所有像素值顺序存储在一起;在NHWC中,数据的存储顺序为同一位置的像素值顺序存储在一起。4.数据排布格式一、算子基本概念(1)NCHW和NHWCNCHW和NHWC的存储示例在昇腾AI处理器中,张量数据均采用NC1HWC0的五维数据格式,此格式能提高通用矩阵乘法运算数据块的访问效率。其中C0与微架构强相关,为AICore中矩阵计算单元的大小,C1=(C+C0-1)/C0。4.数据排布格式一、算子基本概念(2)NC1HWC0NC1HWC0NHWC/NCHW->NC1HWC0的转换过程为:将数据在C维度上进行分割,变成C1份NHWCO/NCOHW,再将C1份NHWCO/NCOHW在内存中连续排列成NC1HWC0。4.数据排布格式一、算子基本概念(2)NC1HWC0NHWC/NCHW->NC1HWC0的格式转换NHWC->NC1HWC0的转换公式如下:Tensor.reshape([N,H,W,C1,C0]).transpose([0,3,1,2,4])4.数据排布格式一、算子基本概念(2)NC1HWC0NCHW->NC1HWC0的转换公式如下:Tensor.reshape([N,C1,C0,H,W]).transpose([0,1,3,4,2])TBE(TensorBoostEngine)即张量加速引擎,是由华为自研的算子开发工具,用于开发能够运行在NPU上的TBE算子。TBE算子是基于开源项目TVM(TensorVirtualMachine,端到端深度学习编译器)的基础拓展的,提供Python接口进行自定义算子开发。1.TBE简介二、TBE算子TBE开发流程TBE工具给用户提供多层灵活的算子开发方式,用户可以根据对硬件的理解程度自由选择,利用工具的优化和代码生成能力,生成昇腾AI处理器的高性能可执行算子。1.TBE简介二、TBE算子TBE在软件栈中的逻辑架构前端框架(MindSpore/Tensorflow/Cafe/…)图编译器(GraphCompiler)张量加速引擎(TensorBoostEngine)昇腾AI处理器TBE内部包含了算子逻辑描述模块、调度模块、中间表示模块、编译优化模块以及代码生成模块。2.TBE功能框架二、TBE算子TBE功能框架算子逻辑描述中间表示模块(IR)编译优化(Pass)代码生成模块(CodeGen)分块调度模块(Schedule)融合张量加速引擎(TBE)算子逻辑描述:面向开发者,提供算子逻辑的编写接口(Compute接口),使用接口来编写算子。2.TBE功能框架二、TBE算子算子逻辑描述调度模块:用于描述指定shape下算子如何在昇腾AI处理器上进行切分,仍然使用的是TVM提供的调度原语进行描述。2.TBE功能框架二、TBE算子调度模块中间表示模块:使用TVM的IR中间表示,包括IR变形、AST(AbstractSyntaxTree)的维护等功能。2.TBE功能框架二、TBE算子中间表示模块编译优化:对生成的IR进行编译优化,优化的方式有双缓冲、流水线同步、内存分配管理、指令映射、分块适配矩阵计算单元等。2.TBE功能框架二、TBE算子编译优化代码生成模块(CodeGen):CodeGen生成类C代码的临时文件,这个临时代码文件可以通过编译器生成算子的实现文件,可被网络模型直接加载调用。2.TBE功能框架二、TBE算子代码生成模块一个完整的CANN算子包含:算子原型定义、对应开源框架的算子适配插件、算子信息库定义和算子实现四部分。3.TBE算子编译运行逻辑架构二、TBE算子TBE算子编译逻辑架构一个完整的CANN算子包含:算子原型定义、对应开源框架的算子适配插件、算子信息库定义和算子实现四部分。3.TBE算子编译运行逻辑架构二、TBE算子TBE算子编译逻辑架构算子原型库、TBE算子实现、TBE算子信息库、AICPU算子实现库、算子适配插件为开发者在新开发自定义CANN算子时需要的交付件。3.TBE算子编译运行逻辑架构二、TBE算子开发交付件说明算子原型库算子调用入口,算子原型定义规定了在昇腾AI处理器上可运行算子的约束。算子实现描述算子的计算功能。算子信息库描述对应的算子实现文件的实现规格,也就是对应算子在昇腾AI处理器上实现的限制。算子适配插件将基于第三方框架的算子映射成适昇腾AI处理器的算子。TBE算子编译主要有7大步骤。3.TBE算子编译运行逻辑架构二、TBE算子(1)算子编译流程TBE算子编译流程①将开源框架网络模型下发给GraphEngine。3.TBE算子编译运行逻辑架构二、TBE算子(1)算子编译流程开源框架FrameworkAdapter/GraphEngine下发原始模型第一步②GraphEngine调用算子插件,将原始网络模型中的算子映射为适配昇腾AI处理器的算子,从而将原始开源框架图解析为适配昇腾AI处理器的图。3.TBE算子编译运行逻辑架构二、TBE算子(1)算子编译流程FrameworkAdapter/GraphEngine调用算子插件,将开源框架的算子解析映射为CANN算子第二步③调用算子原型库校验接口进行基本参数的校验,校验通过后,会根据原型库中的推导函数推导每个节点的输出shape与dtype,进行输出tensor的静态内存的分配。3.TBE算子编译运行逻辑架构二、TBE算子(1)算子编译流程FrameworkAdapter/GraphEngine调用算子库中的函数做合法性校验、shape推导第三步④GraphEngine向FE发送图优化请求,FE匹配融合规则进行图融合,并进行算子选择,选择优先级最高的算子类型进行算子匹配,最后将优化后的整图返回给GraphEngine。3.TBE算子编译运行逻辑架构二、TBE算子(1)算子编译流程FrameworkAdapter/GraphEngineFE整图下发给FE算子融合、算子选择优化后整图返回GE第四步⑤GraphEngine子图拆分与FE优化流程。3.TBE算子编译运行逻辑架构二、TBE算子(1)算子编译流程FrameworkAdapter/GraphEngineFE子图下发子图内部插入转换算子返回优化后子图第五步子图拆分TBE调用TBE框架实现预编译,得到算子融合类型(pattern)实现UB融合,算子编译,生成kernel(.o/.json文件)⑥GraphEngine将子图进行合并,并对合并后的整图进一步优化。3.TBE算子编译运行逻辑架构二、TBE算子(1)算子编译流程图合并及整图优化FrameworkAdapter/GraphEngine第六步⑦GraphEngine进行图编译流程与图编译完成后生成适配昇腾AI处理器的模型。3.TBE算子编译运行逻辑架构二、TBE算子(1)算子编译流程FrameworkAdapter/GraphEngineFE下发tasking请求生成模型文件返回taskinfo信息第七步图编译TBE生成算子的taskinfoTBE算子运行包含加载编辑模型、下发TASK请求给Schedule、TaskSchedule对task进行调度、在AICore上执行算子四个流程。3.TBE算子编译运行逻辑架构二、TBE算子(2)算子运行流程TBE算子运行流程思政专栏由华为技术有限公司主办的“昇腾AI原生创新算子挑战赛”是面向AI开发者打造的顶级赛事,旨在培养一批精通AscendC算子开发的开发者,鼓励开发者基于CANN的基础能力进行深度创新与实践。AscendC是CANN针对算子开发场景推出的编程语言,原生支持C和C++标准规范,最大化匹配用户开发习惯。通过多层接口抽象、自动并行计算、孪生调试等关键技术,助力AI开发者低成本完成算子开发和模型调优部署。这种编程语言的应用促进了算子开发技术的创新和发展。昇腾AI原生创新算子挑战赛思政专栏来自北京邮电大学0xCCCCCCCC团队的孙明志和梁昊骞通过自学AscendC编程语言和算子开发技术,不断挑战自我,提升技能水平。同时,在团队协作中相互学习、相互启发,共同解决技术难题,展现了强烈的创新精神和团队协作能力,最终以总分第一的成绩夺得冠军。在自定义算子开发中,如何平衡实用性与可用性,以确保开发的算子既能解决实际问题,又能推动AI技术的发展?孙明志梁昊骞PART04Classroomquizz课堂小测课堂小测1)在深度学习中,张量的形状(Shape)通常
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年贵州省导游基础知识真题卷及答案(十九)
- 重症患者急性肾损伤肾脏替代治疗临床实践指南解读总结2026
- 石城县招聘社区网格员考试试题附答案详解
- 春八年级道德与法治下册 第三单元 人民当家作主 第五课 我国基本制度 第1框 基本经济制度教学设计 新人教版
- 科左后旗金宝屯镇招聘社区网格员考试试题附答案详解
- 2026年陕西电子信息职业技术学院单招职业适应性考试题库及完整答案详解1套
- Unit 5 I'm going to study computer science.教学设计初中英语人教版五四学制2012七年级下册-人教版五四学制
- 曲靖市沾益县招聘社区网格员备考题库附答案详解
- 禄丰县黑井镇招聘社区网格员真题附答案详解
- 蓬溪县大石镇招聘社区网格员考试试题附答案详解
- 江苏省苏州市2024-2025学年高一下册期末测试数学检测试卷(图片版)
- (正式版)DB35∕T 2242-2025 《户用光伏发电系统安装技术规范》
- 湖北省武汉市新洲区部分学校2024-2025学年高二下学期期末生物试卷(有解析)
- 出院准备服务专家共识
- TFT简介完整版本
- (高清版)DB13∕T 5253-2020 农村坑塘生态治理工程技术规程
- 融资意向协议书范本
- 2024年云南省曲靖市小升初数学试卷(含答案)
- 2025电动自行车集中充电设施第2部分:充换电服务信息交换
- 2025年四川泸州市交通投资集团有限责任公司招聘笔试参考题库附带答案详解
- 人教部编版六年级下册语文【选择题】专项复习训练真题100题(附答案解析)
评论
0/150
提交评论