版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务2.4算子开发工具-TBE学生手册任务2.4算子开发工具-TBE【任务导入】深度学习算法由一个个算子组成,在网络模型中,算子对应层或节点的计算逻辑。当开发者遇到开发的网络需要使用的算子在软件栈不支持,或者想要修改现有算子中的计算逻辑,又或者是通过新开发算子提升计算性能时,开发者就需要自定义算子。请从开发者的角度分析,TBE工具编译运行流程。【学习目标】素质目标培养学生的团队合作能力和沟通表达能力;鼓励学生发挥创新思维,平衡自定义算子的实用性和可用性。知识目标能讲解算子的四大属性[K26];能描述TBE的功能框架[K27];能描述TBE算子编译运行流程[K28]。能力目标能完成算子形状的编程转换[A20];能编写出NCHW/NHWC与NC1HWC0数据转换公式[A21];能绘制出TBE算子编译运行流程[A22]。【知识准备】算子基本概念算子(Operator,简称OP)是一个函数空间到函数空间上的映射O:X→X。在Caffe中,算子对应层中的计算逻辑,如卷积层中的卷积算法;全连接层中的权值求和。在深度学习中,算子具有名称、形状、数据类型、数据排布格式等四大属性,见REF_Ref19601\h表2-4-1。表2-4-SEQ表2-4-\*ARABIC1算子属性属性定义名称(name)用于对Tensor进行索引,不同Tensor的名称需要保持唯一形状(shape)Tensor的形状,比如(10)、(1024,1024)、(2,3,4)等默认值:无形式:(i1,i2,...in),其中i1,i2,in为正整数数据类型(dtype)功能描述:指定Tensor对象的数据类型默认值:无取值范围:float16,float32,int8,int16,int32,uint8,uint16,...说明:不同计算操作支持的数据类型不同数据排布格式(format)数据的物理排布格式,定义了解读数据的维度算子名称(Name)算子名称是用于标识网络中的某个算子,同一网络中算子的名称唯一。如REF_Ref9523\h图2-4-1所示,conv1、pool1、conv2都是此网络中的算子名称,其中conv1和conv2算子类型为Convolution,分别表示一次卷积运算。图2-4-SEQ图2-4-\*ARABIC1网络拓扑图示例算子形状(Shape)在深度学习中,张量(Tensor)是主要的数据结构。张量的形状(Shape)以(D0,D1,...,Dn-1)的形式表示,D0到Dn-1是任意的正整数。Shape的第一个元素为张量最外层的中括号的元素数量,第二个元素为张量从左边开始的第二个中括号元素数量,以此类推。张量与形状的实例见REF_Ref19790\h表2-4-2。表2-4-SEQ表2-4-\*ARABIC2张量与形状对应关系张量形状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表示像素由红绿蓝三色组成。Shape在编程中可理解为操作Tensor的各层循环,例如对shape(4,20,20,3)的Atensor进行操作,循环语句如下:“将张量a_tensor中的数据复制到张量A”produceA{for(i,0,4){for(j,0,20){for(p,0,20){for(q,0,3){A[((((((i*20)+j)*20)+p)*3)+q)]=a_tensor[((((((i*20)+j)*20)+p)*3)+q)]}}}}}对于复杂张量,通过数括号的方式确认shape是效率很低的做法,所以引入形状相关的概念-轴(Axis)。轴表示shape的下标,轴有两种计算方式,从shape的第一个元素开始,第一个元素记为0,依次增加1;从shape的最后一个元素开始,最后一个元素记为-1,依次减少1。Shape与Axis的对应关系如REF_Ref19865\h图2-4-2所示。图2-4-SEQ图2-4-\*ARABIC2轴示意图算子类型(Type)算子可以指代多种不同的概念,常见的算子类型见REF_Ref19950\h表2-4-3。表2-4-SEQ表2-4-\*ARABIC3常见的算子类型类型作用示例算术算子执行基本数学运算加(+)、减(-)、乘(*)、除(/)和模运算(%)关系算子比较两个值,并返回布尔值等于(==)、不等于(!=)、大于(>)、小于(<)、大于等于(>=)、小于等于(<=)逻辑算子执行逻辑运算逻辑非(NOT,!)、逻辑与(AND,&&)、逻辑或(OR,||)位运算算子对整数的二进制位进行操作位与(&)、位或(|)、位异或(^)、位非(~)、左移(<<)、右移(>>)赋值算子用于给变量赋值简单赋值(=)、加等于(+=)、减等于(-=)、乘等于(*=)、除等于(/=)条件(三元)算子基于条件进行值的选择的三元表达式condition?value_if_true:value_if_false成员访问算子用于访问对象的成员点(.)操作符在C++或Java中访问结构体、类成员索引算子用于访问序列类型(如数组、列表、字符串)中的元素/运算符重载在支持运算符重载的语言中,为自定义类型定义标准算子的行为/高阶函数算子接收一个函数作为参数或返回一个函数map、filter、reduce数据库查询算子用于数据的筛选、排序和聚合SQL中的SELECT、JOIN、WHERE机器学习算子在机器学习和深度学习框架中,指代神经网络中的操作卷积(Conv)、池化(Pooling)、全连接(Dense)数据排布格式(Format)数据排布格式定义了解读数据的维度,如1D、2D、3D、4D等。在深度学习领域,多维数据通过多维数组存储。常见的卷积神经网络的特征图通常用四维数组保存,即4D,4D数据的解释见REF_Ref20002\h表2-4-4。表2-4-SEQ表2-4-\*ARABIC4特征图4D数据解释代表字母含义举例NBatch数量图像的数量HHeight特征图高度垂直高度方向的像素个数WWidth特征图宽度水平宽度方向的像素个数CChannels特征图通道彩色RGB图像的channels为3NCHW和NHWC不同深度学习框架会按照不同的顺序存储特征图数据,例如Cafe存储顺序为[Batch,Channels,Height,Width],即NCHW;Tensorflow中存储顺序为[Batch,Height,Width,Channels],即NHWC。以格式为RGB的图片为例,在NCHW中,数据的存储顺序为同一通道的所有像素值顺序存储在一起;在NHWC中,数据的存储顺序为同一位置的像素值顺序存储在一起,如REF_Ref20064\h图2-4-3所示。图2-4-SEQ图2-4-\*ARABIC3NCHW和NHWC的存储示例NC1HWC0在昇腾AI处理器中,张量数据均采用NC1HWC0的五维数据格式,此格式能提高通用矩阵乘法运算数据块的访问效率。其中C0与微架构强相关,为AICore中矩阵计算单元的大小,C1=(C+C0-1)/C0。NHWC/NCHW->NC1HWC0的转换过程为:将数据在C维度上进行分割,变成C1份NHWCO/NCOHW,再将C1份NHWCO/NCOHW在内存中连续排列成NC1HWC0,其格式转换示意图如REF_Ref20130\h图2-4-4所示。图2-4-SEQ图2-4-\*ARABIC4NHWC/NCHW->NC1HWC0的格式转换NHWC->NC1HWC0的转换公式如下:Tensor.reshape([N,H,W,C1,C0]).transpose([0,3,1,2,4])NCHW->NC1HWC0的转换公式如下:Tensor.reshape([N,C1,C0,H,W]).transpose([0,1,3,4,2])TBE算子TBE简介TBE(TensorBoostEngine)即张量加速引擎,是由华为自研的算子开发工具,用于开发能够运行在NPU上的TBE算子。TBE算子是基于开源项目TVM(TensorVirtualMachine,端到端深度学习编译器)的基础拓展的,提供Python接口进行自定义算子开发。TBE工具给用户提供多层灵活的算子开发方式,用户可以根据对硬件的理解程度自由选择,利用工具的优化和代码生成能力,生成昇腾AI处理器的高性能可执行算子,TBE在软件栈中的逻辑架构如REF_Ref20175\h图2-4-5所示。图2-4-SEQ图2-4-\*ARABIC5TBE在软件栈中的逻辑架构TBE功能框架TBE内部包含了算子逻辑描述模块、调度(Schedule)模块、中间表示(IntermediateRepresentation,IR)模块、编译优化(Pass)模块以及代码生成(CodeGen)模块如REF_Ref20205\h图2-4-6所示。图2-4-SEQ图2-4-\*ARABIC6TBE功能框架算子逻辑描述:面向开发者,提供算子逻辑的编写接口(Compute接口),使用接口来编写算子。调度模块:用于描述指定shape下算子如何在昇腾AI处理器上进行切分,仍然使用的是TVM提供的调度原语进行描述。中间表示模块:使用TVM的IR(IntermediateRepresentation)中间表示,包括IR变形、AST(AbstractSyntaxTree)的维护等功能。编译优化(Pass):对生成的IR进行编译优化,优化的方式有双缓冲(DoubleBuffer)、流水线(Pipeline)同步、内存分配管理、指令映射、分块适配矩阵计算单元等。代码生成模块(CodeGen):CodeGen生成类C代码的临时文件,这个临时代码文件可以通过编译器生成算子的实现文件,可被网络模型直接加载调用。TBE算子编译运行逻辑架构一个完整的CANN算子包含:算子原型定义、对应开源框架的算子适配插件、算子信息库定义和算子实现四部分。TBE算子开发完成后在昇腾AI处理器硬件平台上的编译运行的逻辑架构如REF_Ref20296\h图2-4-7所示,TBE算子运行逻辑架构如REF_Ref20322\h图2-4-8所示。图2-4-SEQ图2-4-\*ARABIC7TBE算子编译逻辑架构图2-4-SEQ图2-4-\*ARABIC8TBE算子运行逻辑架构其中,算子原型库、TBE算子实现、TBE算子信息库、AICPU算子实现库、算子适配插件为开发者在新开发自定义CANN算子时需要的交付件,开发交付件说明见REF_Ref20440\h表2-4-5。表2-4-SEQ表2-4-\*ARABIC5开发交付件说明开发交付件说明算子原型库算子调用入口,算子原型定义规定了在昇腾AI处理器上可运行算子的约束,主要体现算子的数学含义,包含定义算子输入、输出、属性和取值范围,基本参数的校验和shape的推导。网络运行时,GE会调用算子原型库的校验接口进行基本参数的校验,校验通过后,会根据原型库中的推导函数推导每个节点的输出shape与dtype,进行输出tensor的静态内存的分配。算子实现描述算子的计算功能。针对TBE算子,算子实现为python文件,包含算子的计算实现及Schedule实现。算子信息库算子信息库描述的是对应的算子实现文件的实现规格,也就是对应算子在昇腾AI处理器上实现的限制,包括算子的输入输出dtype、format以及输入shape信息。网络运行时,图编译器会根据算子信息库匹配到具体的算子实现。算子适配插件基于第三方框架(TensorFlow/Caffe)进行自定义算子开发的场景,开发人员完成自定义算子的实现代码后,需要进行适配插件的开发,将基于第三方框架的算子映射成适昇腾AI处理器的算子。基于第三方框架的网络运行时,首先会加载并调用算子适配插件信息,将第三方框架网络中的算子进行解析并映射成昇腾AI处理器中的算子。注意:如果不需要将算子融入到原始网络中,无需开发算子适配插件。(1)算子编译流程TBE算子编译主要有7大步骤,TBE算子的详细编译流程如REF_Ref20518\h图2-4-9所示。图2-4-SEQ图2-4-\*ARABIC9TBE算子编译流程①将开源框架网络模型下发给GraphEngine。若基于Tensorflow或者Pytorch框架进行在线训练,首先会调用TFAdapter或者PTAdapter适配接口生成对应框架的原始网络模型,然后下发给GraphEngine;若原始网络框架为MindSpore,则直接将原始网络模型下发给GraphEngine;若使用AscendCL应用进行模型推理,则直接将原始网络模型下发给GraphEngine。②GraphEngine调用算子插件,将原始网络模型中的算子映射为适配昇腾AI处理器的算子,从而将原始开源框架图解析为适配昇腾AI处理器的图。若原始网络框架为MindSpore,在MindSpore侧已经进行了算子的解析映射,所以在GraphEngine中无需再次调用插件进行解析。③调用算子原型库校验接口进行基本参数的校验,校验通过后,会根据原
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年陕西省榆林市子洲县下册期末教育调研评估八年级数学试题 含答案
- 2026年辽宁省凌源市高二生物下册期末考试模拟卷(历年真题)附答案
- 2026年福建省永安市高二生物下册期末考试测试卷含完整答案(夺冠)
- 2025年江苏省丹阳市高二生物下册期末考试测试卷附完整答案(必刷)
- 2026年辽宁省庄河市高二生物下册期末考试测试卷含答案【综合卷】
- 2025年云南省香格里拉市高二生物下册期末考试模拟卷完美版附答案
- 2026年甘肃省玉门市高二生物下册期末考试测试卷(名校卷)附答案
- 2026年江苏省兴化市高二生物下册期末考试试卷及完整答案【考点梳理】
- 2026年湖南省武冈市高二生物下册期末考试检测卷含答案(B卷)
- 2025年浙江省瑞安市高二生物下册期末考试模拟卷【网校专用】附答案
- 【MOOC期末】《数字电子技术基础》(华中科技大学)期末考试慕课答案
- 浙江省宁波市海曙区2025年七年级下学期期末数学试题及答案
- 导医知识培训课件
- DB32-T 5081-2025 建筑防水工程技术规程
- 2025届贵州省遵义市新蒲新区中考生物仿真试卷含解析
- 期末考试复习演讲稿
- 公共关系与人际交往能力知到智慧树章节测试答案2024年秋同济大学
- 安全保证体系及管理措施
- 《对虾的内部结构》课件
- 儿科学课件急性上呼吸道感染
- 2023-2024学年江苏省苏州市高二下学期6月期末物理试题(解析版)
评论
0/150
提交评论