华为云计算 云知识 张量加速引擎是什么?
张量加速引擎是什么?

神经网络构造中,算子组成了不同应用功能的网络结构。而张量加速引擎(Tensor Boost Engine)作为算子的兵工厂,为基于昇腾AI处理器运行的神经网络提供算子开发能力,用TBE语言编写的TBE算子来构建各种神经网络模型。同时,TBE对算子也提供了封装调用能力。在TBE中有一个优化过的神经网络TBE标准算子库,开发者可以直接利用标准算子库中的算子实现高性能的神经网络计算。除此之外,TBE也提供了TBE算子的融合能力,为神经网络的优化开辟一条独特的路径。

张量加速引擎功能框架

TBE提供了基于TVM开发自定义算子的能力,通过TBE语言和自定义算子编程开发界面可以完成相应神经网络算子的开发,TBE的结构如图所示,包含了特性语言(Domain-Specific Language,DSL)模块、调度(Schedule)模块、中间表示(Intermediate Representation,IR)模块、编译器传递(Pass)模块以及代码生成(CodeGen)模块。

张量加速引擎TBE模块构成

TBE算子开发分为计算逻辑编写和调度开发,其中特定域语言模块提供了算子计算逻辑的编写接口,直接基于特定域语言编写算子的计算过程和调度过程。算子计算过程描述指明算子的计算方法和步骤,而调度过程描述完成数据切块和数据流向的规划。算子每次计算都按照固定数据形状进行处理,这就需要提前针对在昇腾AI处理器中的不同计算单元上执行的算子进行数据形状切分,如矩阵计算单元、向量计算单元以及AI CPU上执行的算子对输入数据形状的需求各不相同。

在完成算子的基本实现过程定义后,需要启动调度模块中分块(Tiling)子模块,对算子中的数据按照调度描述进行切分,同时指定好数据的搬运流程,确保在硬件上的执行达到最优。除了数据形状切分之外,TBE的算子融合和优化能力也是由调度模块中的融合(Fusion)子模块提供的。

算子编写完成后,需要生成中间表示来进一步优化,而中间表示模块通过类似于TVM的IR格式来进行中间表示的生成。在中间表示生成后,需要将模块针对各种应用场景进行编译优化,优化的方式有双缓冲(Double Buffer)、流水线(Pipeline)同步、内存分配管理、指令映射、分块适配矩阵计算单元等。

在算子经过编译优化模块处理后,由代码生成模块生成类C代码的临时文件,这个临时代码文件可以通过编译器生成算子的实现文件,并可以被离线模型执行器直接加载和执行。

综上所述,一个完整的自定义算子通过TBE中的子模块完成整个开发流程,从特定域语言模块提供算子计算逻辑和调度描述,构成算子原型后,由调度模块进行数据切分和算子融合,进入中间表示模块,生成算子的中间表示。编译优化模块以中间表示进行内存分配等编译优化,最后由代码生成模块产生类C代码可供编译器直接编译。TBE在算子的定义过程不但完成了算子编写,而且还完成了相关的优化,提升了算子的执行性能。


上一篇:查询特定资源标签ShowResourceTagsga 下一篇:E-R方法中的联系

全球加速 GA

全球加速 GA

全球加速(Global accelerator),简称GA,为全球化业务用户提供应用加速服务,通过提供统一的公网IP和高可靠、低延时、易管理、安全合规的网络服务,使终端用户在全球能快速访问云上应用,获得优质体验。

全球加速(Global accelerator),简称GA,为全球化业务用户提供应用加速服务,通过提供统一的公网IP和高可靠、低延时、易管理、安全合规的网络服务,使终端用户在全球能快速访问云上应用,获得优质体验。