本书系统论述了基本达芬奇架构的昇腾(Asccnd)AI处理器的原理、架构与开发技术。全书共分6章,内容涵盖了神经网络理论基础、计算芯片与开源框架、昇腾AI处理器软硬件架构、编程理论与方法,以及典型案例等。为便于读者学习,书中还给出了基本昇腾AI处理器的丰富的技术文档、开发实例等线上资源。
本书可以作为普通高等学校人工智能、智能科学与技术、计算机科学与技术、电子信息工程、自动化等专业的本科生及研究生教材,也适合作为从事人工智能系统设计的科研和工程技术人员的参考用书。
第3章
硬件架构
为了满足当今飞速发展的深度神经网络对芯片算力的需求,华为公司于2018年推出了昇腾系列AI处理器,可以对整型数或浮点数提供强大高效的乘加计算力。由于昇腾AI处理器具有强大的算力并且在硬件体系结构上对于深度神经网络进行了特殊的优化,从而使之能以极高的效率完成目前主流深度神经网络的前向计算,因此在智能终端等领域拥有广阔的应用前景。
3.1昇腾AI处理器总览
昇腾AI处理器本质上是一个片上系统,如图31所示,主要可以应用在与图像、视频、语音、文字处理相关的场景。其主要的架构组成部件包括特制的计算单元、大容量的存储单元和相应的控制单元。该处理器大致可以划分为: 控制CPU(Control CPU)、AI计算引擎(包括AI Core和AI CPU)、多层级的片上系统缓存(Cache)或缓冲区(Buffer)、数字视觉预处理模块(Digital Vision PreProcessing,DVPP)等。处理器可以采用LPDDR4高速主存控制器接口,价格较低。目前主流片上系统处理器的主存一般由DDR(Double Data Rate,双倍速率内存)或HBM(High Bandwidth Memory,高带宽存储器)构成,用来存放大量的数据。HBM相对于DDR存储带宽较高,是行业的发展方向。其他通用的外设接口模块包括USB、磁盘、网卡、GPIO、I2C和电源管理接口等。
图31昇腾AI处理器逻辑图
当该处理器作为计算服务器的加速卡使用时,会通过PCIe总线接口和服务器其他单元实现数据互换。以上所有这些模块通过基于CHI协议的片上环形总线相连,实现模块间的数据连接通路并保证数据的共享和一致性。
昇腾AI处理器集成了多个CPU核心,每个核心都有独立的L1和L2缓存,所有核心共享一个片上L3缓存。集成的CPU核心按照功能可以划分为专用于控制处理器整体运行的控制CPU 和专用于承担非矩阵类复杂计算的AI CPU。两类任务占用的CPU核数可由软件根据系统实际运行情况动态分配。
除了CPU之外,该处理器真正的算力担当是采用了达芬奇架构的AI Core。这些AI Core通过特别设计的架构和电路实现了高通量、大算力和低功耗,特别适合处理深度学习中神经网络必需的常用计算,如矩阵相乘等。目前该处理器能对整型数(INT8、INT4)或对浮点数(FP16)提供强大的乘加计算力。由于采用了模块化的设计,可以很方便地通过叠加模块的方法提高后续芯片的计算力。
昇腾AI处理器架构与编程——深入理解CANN技术原理及应用
第3章硬件架构
0
0
针对深度神经网络参数量大、中间值多的特点,该处理器还特意为AI计算引擎配备了容量为8MB的片上缓冲区(L2缓冲区),提供高带宽、低延迟、高效率的数据交换和访问。能够快速访问到所需的数据对于提高神经网络算法的整体性能至关重要,同时将大量需要复用的中间数据缓存在片上对于降低系统整体功耗意义重大。为了能够实现计算任务在AI Core上的高效分配和调度,该处理器还特意配备了一个专用CPU作为任务调度器(Task Scheduler,TS)。该CPU专门服务于AI Core和AI CPU,而不承担任何其他的事务和工作。
数字视觉预处理模块主要完成图像视频的编解码,支持4K4K指分辨率为4096×2160像素,表示超高清分辨率视频。分辨率的视频处理,对图像支持JPEG和PNG等格式的处理。来自主机端存储器或网络的视频和图像数据,在进入昇腾AI处理器的计算引擎处理之前,需要生成满足处理要求的输入格式、分辨率等,因此需要调用数字视觉预处理模块进行预处理以实现格式和精度转换等要求。数字视觉预处理模块主要实现视频解码(Video Decoder,VDEC)、视频编码(Video Encoder,VENC)、JPEG编解码(JPEG Decoder/Encoder,JPEGD/E)、PNG解码(PNG Decoder,PNGD)和视觉预处理(Vision PreProcessing Core,VPC)等功能。图像预处理可以完成对输入图像的上/下采样、裁剪、色调转换等多种功能。数字视觉预处理模块采用了专用定制电路的方式来实现高效率的图像处理功能,对应于每一种不同的功能都会设计一个相应的硬件电路模块来完成计算工作。在数字视觉预处理模块收到图像视频处理任务后,会读取需要处理的图像视频数据并分发到内部对应的处理模块进行处理,待处理完成后将数据写回到内存中等待后续步骤。
3.2达芬奇架构
不同于传统的支持通用计算的CPU和GPU,也不同于专用于某种特定算法的专用芯片ASIC,达芬奇架构本质上是为了适应某个特定领域中的常见应用和算法,通常称为“特定域架构(Domain Specific Architecture,DSA)”芯片。
昇腾AI处理器的计算核心主要由AI Core构成,负责执行标量、向量和张量相关的计算密集型算子。AI Core采用了达芬奇架构,其基本结构如图32所示,从控制上可以看成是一个相对简化的现代微处理器的基本架构。它包括了三种基础计算资源: 矩阵计算单元(Cube Unit)、向量计算单元(Vector Unit)和标量计算单元(Scalar Unit)。这三种计算单元分别对应了张量、向量和标量三种常见的计算模式,在实际的计算过程中各司其职,形成了三条独立的执行流水线,在系统软件的统一调度下互相配合达到优化的计算效率。此外在矩阵计算单元和向量计算单元内部还提供了不同精度、不同类型的计算模式。AI Core中的矩阵计算单元目前可以支持INT8和FP16的计算; 向量计算单元目前可以支持FP16和FP32以及多种整型数的计算。
图32AI Core架构图
为了配合AI Core中数据的传输和搬运,围绕着三种计算资源还分布式地设置了一系列的片上缓冲区,比如用来放置整体图像特征数据、网络参数以及中间结果的输入缓冲区(Input Buffer,IB)和输出缓冲区(Output Buffer,OB),以及提供一些临时变量的高速寄存器单元,这些寄存器单元位于各个计算单元中。这些存储资源的设计架构和组织方式不尽相同,但目的都是为了更好地适应不同计算模式下格式、精度和数据排布的需求。这些存储资源和相关联的计算资源相连,或者和总线接口单元(Bus Interface Unit,BIU)相连,从而可以获得外部总线上的数据。
在AI Core中,输入缓冲区之后设置了一个存储转换单元(Memory Transfer Unit,MTE)。这是达芬奇架构的特色之一,主要的目的是为了以极高的效率实现数据格式的转换。比如前面提到GPU要通过矩阵计算来实现卷积,首先要通过Img2Col的方法把输入的网络和特征数据重新以一定的格式排列起来。这一步在GPU中是通过软件来实现的,效率比较低下。达芬奇架构采用了一个专用的存储转换单元来完成这一过程,将这一步完全固化在硬件电路中,可以在很短的时间之内完成整个转置过程。由于类似转置的计算在深度神经网络中出现得极为频繁,这种定制化电路模块的设计可以提升AI Core的执行效率,从而能够实现不间断的卷积计算。
AI Core中的控制单元主要包括系统控制模块、标量指令处理队列、指令发射模块、矩阵运算队列、向量运算队列、存储转换队列和事件同步模块。系统控制模块负责指挥和协调AI Core的整体运行模式、配置参数和实现功耗控制等。标量指令处理队列主要实现控制指令的译码。当指令被译码并通过指令发射模块顺次发射出去后,根据指令的不同类型,指令将会分别发送到矩阵运算队列、向量运算队列和存储转换队列。三个队列中的指令依据先进先出的方式分别输出到矩阵计算单元、向量计算单元和存储转换单元进行相应的计算。不同的指令阵列和计算资源构成了独立的流水线,可以并行执行以提高指令执行效率。如果指令执行过程中出现依赖关系或者有强制的时间先后顺序要求,则可以通过事件同步模块来调整和维护指令的执行顺序。事件同步模块完全由软件控制,在软件编写的过程中可以通过插入同步符的方式来指定每一条流水线的执行时序从而达到调整指令执行顺序的目的。
在AI Core中,存储单元为各个计算单元提供被转置过并符合要求的数据,计算单元返回运算的结果给存储单元,控制单元为计算单元和存储单元提供指令控制,三者相互协调合作完成计算任务。
CONTENTS
目录
第1章基础理论00
1.1人工智能简史00
1.2深度学习概论00
1.3神经网络理论0
1.3.1神经元模型0
1.3.2感知机0
1.3.3多层感知机0
1.3.4卷积神经网络0
1.3.5应用示例0
第2章行业背景0
2.1神经网络芯片现状0
2.1.1CPU0
2.1.2GPU0
2.1.3TPU0
2.1.4FPGA0
2.1.5昇腾AI处理器0
2.2神经网络芯片加速理论0
2.2.1GPU加速理论0
2.2.2TPU加速理论0
2.3深度学习框架0
2.3.1MindSpore0
2.3.2Caffe0
2.3.3TensorFlow0
2.3.4PyTorch0
2.4深度学习编译框架——TVM0
第3章硬件架构0
3.1昇腾AI处理器总览0
3.2达芬奇架构0
3.2.1计算单元0
3.2.2存储系统0
3.2.3控制单元0
3.2.4指令集设计0
3.3卷积加速原理0
3.3.1卷积加速0
3.3.2架构对比0
第4章软件架构0
4.1昇腾AI软件栈总览0
4.2神经网络软件流
4.2.1流程编排器
4.2.2数字视觉预处理模块
4.2.3张量加速引擎(TBE)
4.2.4运行管理器
4.2.5任务调度器
4.2.6框架管理器
4.2.7神经网络软件流应用
4.3开发工具链
4.3.1功能简介
4.3.2功能框架
4.3.3工具功能
第5章编程方法
5.1深度学习开发基础
5.1.1深度学习编程理论
5.1.2深度学习推理优化原理
5.1.3深度学习推理引擎
5.2昇腾AI软件栈中的技术
5.2.1模型生成阶段
5.2.2应用编译与部署阶段
5.3自定义算子开发
5.3.1开发步骤
5.3.2AI CPU算子开发
5.3.3AI Core算子开发
5.4自定义应用开发
第6章实战案例
6.1评价标准
6.1.1精度
6.1.2交并比
6.1.3均值平均精度
6.1.4吞吐量和时延
6.1.5能效比
6.2图像识别
6.2.1数据集:ImageNet
6.2.2算法:ResNet
6.2.3模型迁移实践
6.3目标检测
6.3.1数据集:COCO
6.3.2算法:YoloV3
6.3.3自定义算子实践
附录A缩略词列表
附录BAscend开发者社区及资料下载
附录C智能开发平台ModelArts简介