【华为云技术分享】昇腾AI处理器软件栈--总览

时间:2024-04-17 19:21:24

昇腾AI软件栈提供了计算资源、性能调优的运行框架以及功能多样的配套工具,是一套完整的解决方案,可以使昇腾AI处理器发挥出极佳的性能。

昇腾AI软件栈可以分为神经网络相关软件模块、工具链以及其它软件模块。

· 神经网络软件主要包含了流程编排器(Matrix),框架管理器(Framework),运行管理器(Runtime)、数字视觉预处理模块(Digital Vision Pre-Processing,DVPP)、张量加速引擎(Tensor Boost Engine,TBE)以及任务调度器(Task Scheduler,TS)等功能模块,主要用来完成神经网络模型的生成、加载和执行等功能。

· 工具链主要为神经网络实现过程提供了辅助便利。

这些主要组成部分在软件栈中功能和作用相互依赖,承载着数据流、计算流和控制流。昇腾AI软件栈主要分为4个层次和一个辅助工具链。4个层次分别为L3应用使能层、L2执行框架层、L1芯片使能层和L0计算资源层。工具链主要提供了程序开发、编译调测、应用程序流程编排、日志管理和性能分析等辅助能力。

昇腾AI软件栈逻辑架构图

1573809130188553.png

L3应用使能层

L3应用使能层是应用级封装,主要是面向特定的应用领域,提供不同的处理算法。应用使能层包含计算机视觉引擎、语言文字引擎以及通用业务执行引擎等,其中:

·         计算机视觉引擎面向计算机视觉领域提供一些视频或图像处理的算法封装,专门用来处理计算机视觉领域的算法和应用。

·         语言文字引擎面向语音及其他领域,提供一些语音、文本等数据的基础处理算法封装等,可以根据具体应用场景提供语言文字处理功能。

·         通用业务执行引擎提供通用的神经网络推理能力。

在通用业务需求上,基于流程编排器定义对应的计算流程,然后由通用业务执行引擎进行具体的功能实现。L3应用使能层为各领域提供具有计算和处理能力的引擎,并可以直接使用下一层L2执行框架提供的框架调度能力,通过通用框架来生成相应的神经网络而实现具体的引擎功能。

L2执行框架层

L2执行框架层是框架调用能力和离线模型生成能力的封装,包含了框架管理器以及流程编排器。

对于昇腾AI处理器,L2执行框架提供了神经网络的离线生成和执行能力,可以脱离深度学习框架(如Caffe、TensorFlow等)使得离线模型(Offline Model,OM)具有同样的能力(主要是推理能力)。框架管理器中包含了离线模型生成器(Offline Model Generator, OMG)、离线模型执行器(Offline Model Executor, OME)和离线模型推理接口,支持模型的生成、加载、卸载和推理计算执行。

离线模型生成器主要负责将Caffe或TensorFlow框架下已经生成的模型文件和权重文件转换成离线模型文件,并可以在昇腾AI处理器上独立执行。离线模型执行器负责加载和卸载离线模型,并将加载成功的模型文件转换为可执行在昇腾AI处理器上的指令序列,完成执行前的程序编译工作。这些离线模型的加载和执行都需要流程编排器进行统筹。流程编排器向开发者提供用于深度学习计算的开发平台,包含计算资源、运行框架以及相关配套工具等,让开发者可以便捷高效的编写在特定硬件设备上运行的人工智能应用程序,负责对模型的生成、加载和运算的调度。在L2层将神经网络的原始模型转化成最终可以执行在昇腾AI处理器上运行的离线模型后,离线模型执行器将离线模型传送给L1芯片使能层进行任务分配。

L1芯片使能层

L1芯片使能层是离线模型通向昇腾AI处理器的桥梁。在收到L2执行框架生成的离线模型后,针对不同的计算任务,L1芯片使能层主要通过加速库(Library)给离线模型计算提供加速功能。L1芯片使能层是最接近底层计算资源的一层,负责给硬件输出算子层面的任务。L1芯片使能层主要包含数字视觉预处理模块、张量加速引擎、运行管理器、驱动以及任务调度器。

在L1芯片使能层中,以芯片的张量加速引擎为核心,支持离线模型的加速计算。张量加速引擎中包含了标准算子加速库,这些算子经过优化后具有良好性能。算子在执行过程中与位于算子加速库上层的运行管理器进行交互,同时运行管理器与L2执行框架层进行通信,提供标准算子加速库接口给L2执行框架层调用,让具体网络模型能找到优化后的、可执行的、可加速的算子进行功能上的最优实现。如果L1芯片使能层的标准算子加速库中无L2执行框架层所需要的算子,这时可以通过张量加速引擎编写新的自定义算子来支持L2执行框架层的需要,因此张量加速引擎通过提供标准算子库和自定义算子的能力为L2执行框架层提供了功能完备性的算子。

在张量加速引擎下面是任务调度器,根据相应的算子生成具体的计算核函数后,任务调度器会根据具体任务类型处理和分发相应的计算核函数到AI CPU或者AI Core上,通过驱动激活硬件执行。任务调度器本身运行在一个专属的CPU核上。

数字视觉预处理模块是一个面向图像视频领域的多功能封装体。在遇到需要进行常见图像或视频预处理的场景时,该模块为上层提供了使用底层专用硬件的各种数据预处理能力。

L0计算资源层

L0计算资源层是昇腾AI处理器的硬件算力基础。在L1芯片使能层完成算子对应任务的分发后,具体计算任务的执行开始由L0计算资源层启动。L0计算资源层包含了操作系统、AI CPU、AI Core和DVPP专用硬件模块。

AI Core是昇腾AI处理器的算力核心,主要完成神经网络的矩阵相关计算。而AI CPU完成控制算子、标量和向量等通用计算。如果输入数据需要进行预处理操作,DVPP专用硬件模块会被激活并专门用来进行图像和视频数据的预处理执行,在特定场景下为AI Core提供满足计算需求的数据格式。AI Core主要负责大算力的计算任务,AI CPU负责较为复杂的计算和执行控制功能,DVPP硬件完成数据预处理功能,而操作系统的作用是使得三者紧密辅助,组成一个完善的硬件系统,为昇腾AI处理器的深度神经网络计算提供了执行上的保障。

工具链

工具链是一套支持昇腾AI处理器,并可以方便程序员进行开发的工具平台,提供了自定义算子的开发、调试和网络移植、优化及分析功能的支撑。另外在面向程序员的编程界面提供了一套桌面化的编程服务,极大的降低了深度神经网络相关应用程序的开发门槛。

工具链中包括工程管理、工程编译、流程编排、离线模型转换、算子比对、日志管理、性能分析工具、自定义算子等。因此,工具链为在此平台上的应用开发和执行提供了多层次和多功能的便捷服务。

更多内容,欢迎访问昇腾开发者社区

作者:Torrenza