嵌入式 NPU 发展概况

uniartisan

西安交通大学自动化

摘 要:
NPU 作为一种主要采用 ASIC 技术的专用嵌入式神经网络芯片,使用 DSA (Domain Specific Architecture) 克服了 CPU、GPU 等通用处理器在深度学习等领域数据吞吐量、算力的限制,大幅提高端侧、嵌入式设备的处理性能。现今主要的 NPU 集中在推理芯片领域,使用 NPU 等技术的异构计算处理器使得图像数据的端侧处理、加强,主体追踪成为可能,也使得传统手机应用、嵌入式机器人领域、自动驾驶等走向大众化。NPU 的出现代表芯片从通用化逐渐开始走向领域专用芯片的异构混合计算。
关键词:
芯片;嵌入式;ASIC;NPU;DSA;

Overview of Embedded NPU Development

uniartisan

Xi'an Jiaotong University

Abstract:
NPU, as a dedicated embedded neural network chip that mainly adopts ASIC technology, uses DSA (Domain Specific Architecture) to overcome the data throughput and computing power limitations of general-purpose processors such as CPU and GPU in deep learning and other fields, and greatly improve the end-side , Processing performance of embedded devices. Nowadays, the main NPU is concentrated in the field of inference chips. Heterogeneous computing processors using NPU and other technologies enable end-to-side processing and enhancement of image data, and subject tracking. It also enables traditional mobile phone applications, embedded robotics, and autonomous driving. Popularization. The emergence of NPU represents the gradual transition of chips from generalization to heterogeneous hybrid computing of domain-specific chips.
Key Words:
Chip; Embedded device; ASIC; NPU; DSA;

什么是 NPU

  人工智能加速器 NPU (Neural-network Processing Unit)是一类基于 DSA (Domain Specific Architecture) 领域专用架构技术的专用于人工智能(特别是人工神经网络、机器视觉、机器学习等)硬件加速的微处理器[1]或计算系统[2]。典型的应用包括机器人学、物联网等数据密集型应用或传感器驱动的任务[3]。相比于 CPU、GPU,NPU 在硬件架构设计时便只针对于人工智能设计,举例来说,HUAWEI Kirin DaVinci Core 集成矩阵计算单元(Cube Unit)、向量计算单元(Vector Unit)和标量计算单元(Scalar Unit),可以通过硬件指令在一个周期内完成3D Cube、Vector向量、Scalar标量的计算[4],相比于通用处理器,其算力与数据吞吐量之比有数百倍提升,同时功耗维持在较低值。

NPU的诞生、功能、应用

NPU的诞生

  长期以来,应用需求一直牵动着嵌入式技术、芯片技术的发展方向。随着深度学习神经网络的兴起,人工智能、大数据时代的来临,CPU 和 GPU 由于其造价高、功耗高、算力低渐渐难以满足端侧应用需要,面对日渐旺盛的需求和广大的预期市场,设计一款专门用于神经网络深度学习的高效智能处理器显得十分必要,因此NPU应运而生。
从技术角度看,基于卷积神经网络的机器学习技术实际上是一类多层大规模人工神经网络。它模仿生物神经网络而构建,由若干人工神经元结点互联而成。神经元之间通过突触两两连接,突触记录了神经元间联系的权值强弱。由于深度学习的基本操作是神经元和突触的处理,神经网络中存储和处理是一体化的,都是通过突触权重来体现,而在冯·诺伊曼结构中,存储和处理是分离的,分别由存储器和运算器来实现,二者之间存在巨大的差异。当用现有的基于冯·诺伊曼结构的经典计算机(如 X86、ARM 通用处理器和英伟达 GPU )运行神经网络应用时,就不可避免地受到存储和处理分离式结构的制约,数据吞吐量限制算力。因此,DSA 架构的专业芯片 NPU 便应运而生。

NPU 的功能

CPU (central processing unit) 是中央处理器。主要包括运算器(ALU)和控制单元(CU),还包括若干寄存器、高速缓存器和它们之间通讯的数据、控制及状态的总线。CPU 作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。它主要负责多任务管理、调度,具有很强的通用性,是计算机的核心领导部件,其计算能力并不强,更擅长逻辑控制。

GPU(Graphics Processing Unit)是一种图形处理器,它可以弥补 CPU 在计算能力上的天然缺陷。相对于CPU 较少的内核较多的资源而言,它采用数量众多的计算单元和超长的流水线,善于进行大量重复计算,处理图像领域的运算加速。它的基本思想是并行计算即用多个处理器来共同求解同一问题,将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。但是缺陷也很明显,即协调、管理能力弱,无法单独工作,需要 CPU 进行控制调度。虽然 GPU 用于深度学习运算时速度比 CPU 有很大提升,但对于特定应用场景其仍有功耗大,驱动逻辑复杂,性能提升不足等问题。

NPU 与通用处理器设计思路不同。通用处理器考虑到计算的通用性,在提升算力的同时要考虑到数据吞吐量的提升

[5],NPU 针对特定领域设计,无需考虑通用应用对于内存带宽的需求。相较于 CPU 擅长处理任务和发号施令,GPU 擅长进行图像处理、并行计算算,NPU 更擅长处理人工智能任务。NPU 通过突触权重实现存储和计算一体化,从而提高运行效率。NPU 也有不足,如特定的指令集可能只满足部分机器学习的需要,而不支持的指令或多个神经网络的组合计算仍然需要回落 (Fallback) 至通用处理器计算。

NPU 的应用

  NPU 目前较多的在端侧应用于 AI 推理计算,在云端也有大量运用于视频编解码运算、自然语言处理、数据分析,部分NPU还能运用于 AI 的训练。

NPU 在端侧的运用

NPU 在端侧的运用较多,如 Apple、MTK、Kirin、清华紫光、瑞芯微等芯片厂商都有在其基于 ARM 架构的 Soc 内集成单独的 NPU 核心,辅助 CPU 完成异构计算;在纯微控制器(MCU)领域,STM32、Arduino、勘智等微控制器也有集成单独的 NPU 核心,方便在微控制器领域集成现代算法。具体的应用有:基于人脸识别的考勤机、基于 DHN(深度哈希网络)的掌纹识别[6]、基于图像分类的自动垃圾分类、自动驾驶汽车、自动跟焦摄像机、监视系统等。其内嵌算法主要以卷积神经网络为主。

NPU 在云端的应用

NPU在云端的应用较少,目前主要以通用 GPU 运算为主,具体来说:百度有用于自然语言处理;华为有用于视频编解码运算;Google 将 TPU 运用于云端训练等。受限于部分 NPU 在架构设计的时候以算力功耗比为第一目标,其指令集较为精简,故用于模型训练较少,可能会遇到不支持的算子等问题。

NPU 的架构分析

主流 NPU 架构

2014年中科院的陈天石科研团队发表了 DianNao 系列论文,随即席卷了体系结构界,开启了专用人工智能芯片设计的先河。后来中科院旗下的寒武纪科技推出了其第一代 NPU 寒武纪 1A,并用在了华为麒麟 970 芯片中。随后谷歌推出了 TPU 架构,华为推出了自研的基于 DaVince 架构的 NPU ,阿里推出了“含光”架构的 NPU 。后续的NPU架构与DianNao架构都有一定相似之处,故我们主要对DianNao架构进行简要介绍。[7]

DianNao

DianNao是寒武纪NPU嵌入式处理器的原生架构,是寒武纪的开山之作。

神经网络的完整硬件实现

图 1 神经网络的完整硬件实现

以上是神经网络模式图,基于神经网络的人工智能算法,成功模拟了人类大脑内部神经元的结构。上图中的neuron代表的就是单个神经元,synapse代表神经元的突触,hidden layer是神经网络中的隐含层,output layer是输出层,input是神经网络输入。
下图为DianNao的内部结构:

加速器

图 2 加速器内部实现

蓝色区域是硬件逻辑模拟的神经网络结构,称为NFU(Neural Functional Units)。从左到右分为三个部分,NFU-1、NFU-2、NFU-3。NFU-1是乘法单元,共有256(16*16)个乘法器。NFU-2是加法树,共有16个加法树,每个加法树由15个加法器组成,排列依次为8-4-2-1。NFU-3是激活单元,共有16个激活单元。总的来说NFU将资源分为了16份,每一份包括NFU-1的16个乘法器,NFU-2的1个加法树(15个加法器)和NFU-3的一个激活函数运算器,运算时一份资源中乘法器同时运行共输出16个结果,送加法树,加法树运算后得出一个结果送激活函数,激活函数运算判断是否激活。
除此之外还有三个缓冲区,一个存储输入的数据(NBin),一个存储运算的权值(SB),一个存储结果(NBout)。
使用DianNao架构的深度学习神经网络芯片性能得到了很大的提高,运算速度远超GPU和CPU。DianNao的出现引起行业震动,开创了深度学习神经网络专用处理器的先河,之后又迅速涌现出许多不同的架构,其中最著名的就有谷歌公司的TPU。

DaDianNao

相比于 DianNao 作为嵌入式终端使用的处理器,DaDianNao 更适合做服务器使用的大规模高性能处理器。在 DaDianNao 的设计中,寒武纪给 DaDianNao 制定的要求是性能要实现 DianNao 的16倍提升。因此最初采用了将NFU资源扩大16倍的方案,但发现这样做布线面积大且不够高效,于是后来采用了多核并行架构,将原来资源扩大16倍的打NFU改为16个小的NFU,经过合理布线,最终面积减小28.5%且性能满足要求。

PuDianNao

PuDianNao是寒武纪为了加速机器学习中除了深度学习之外的其他重要算法而推出的一款嵌入式处理器方案。PuDianNao,内部实现了7种常用的机器学习算法:k-means,k-nearest neighbors , naive bayes ,support vector machine , linear regression , and DNN。PuDianNao的结构如下图:

PuDianNao

图3 PuDianNao的加速器结构

PuDianNao结构与DianNao类似,包含三个缓冲区,和多个运算单元,缓冲区包括输入数据存储、权值存储和输出数据存储。运算单元由多个FU(Function Unit)并联组成,每个FU中包含一个MLU (Machine Learning Unit)和一个ALU。MLU结构如下:

MLU 结构

图4 MLU硬件结构

MLU结构与NFU类似,只是在NFU-1前面增加了2层逻辑Counter和Adder。Counter用于累加,结果直接输出到下一层,主要是naver bayes和classification tree需要。Adder用于大部分机器学习算法,计算结果直接输出或者作为下一层的输入。Multiplier相当于NFU-1,Adder tree相当于NFU-2,ACC用于累加,当计算资源大于硬件资源时,已经算好的数据可以直接存在ACC中用作下一轮累加,节省了读写存储的开销,Misc相当于NFU-3。
ALU包含各一个加法器、乘法器、除法器和一个转换器(converter),用于机器学习中一些特殊的MLU解决不了的计算。

NPU 芯片实例

寒武纪NPU

2014年—2016年横扫体系结构学术圈的DianNao系列论文便是由寒武纪创始人及其科研团队发布。该公司于2016年推出第一代终端智能处理器IP产品寒武纪1A,当时是全球第一款商用终端智能处理器IP产品。号称开启手机AI时代的麒麟970使用的集成NPU就是寒武纪的1A处理器IP。2018年5月,寒武纪正式发布了中国第一款云端智能芯片——Cambricon MLU100芯片,标志着寒武纪已成为中国第一家(也是世界上少数几家)同时拥有终端和云端智能处理器产品的商业公司。寒武纪公司如今主要的产品是Cambricon 1H和1M,分别为第二代和第三代IP架构。

华为 DaVince NPU

华为手机从麒麟810芯片开始使用自研的达芬奇架构集成NPU,大大提升了芯片的AI处理能力,至今采用了华为NPU的手机AI高性能计算仍是卖点之一。2018年10月,华为还发布了最新的NPU芯片,包括用于云端训练的晟腾910和用于终端推理的晟腾310,晟腾系列NPU正式走入人们的视野。该系列芯片已经大量运用于手机、嵌入式设备、监控设备等。

阿里云“含光”NPU

2019年9月25日,在“2019云栖大会”上阿里正式对外发布了全新的含光800芯片。含光800是一款高性能的采用ASIC技术的用于云端推理的AI芯片NPU。1颗含光800的算力相当于10颗GPU,含光800推理性能达到78563 IPS,能效比500 IPS/W。相比传统GPU算力,性价比提升100%[8]。

谷歌TPU

TPU 是谷歌于2014年研发完成的一款专门为加速深层神经网络运算能力而设计的基于 ASIC 的计算机神经网络专用芯片。它是专注神经网络的加速运算器且其开发团队借鉴了寒武纪关于 DianNao 系列框架,因此我们在这里也将其划归为广泛意义上的NPU。TPU 的主要创新在于采用大规模片上内存、用量化技术进行整数运算(使用8位低精度运算)和脉动阵列设计。该芯片主要运用于谷歌云端的 AI 处理,和大规模云端训练等。

勘智k210

勘智k210是一颗采用 risc-v 处理器架构,集成NPU核心的MCU,自带8MB SRAM,支持机器视觉与机器听觉多模态识别,广泛应用于智能家居、智能园区、智能能耗和智能农业等场景。K210 在 1w 的功耗下实现 1tops算力。作为对比,拥有128个 CUDA 单元 GPU 的英伟达 Jetson Nano 的算力是 0.47 TFLOPS ;而最新的树莓派4只有不到 0.1TFLOPS[9]。

结语

   智能时代已经来临,深度学习训练与端侧推理应用越来越广泛,无论是云端还是终端的应用,人工智能芯片都呼之欲出,而相比 CPU+GPU+FPGA 的芯片模式而言,DSA 架构的 NPU 低功耗、高算力。尽管NPU如今在一些特定领域还不能与 GPU 匹敌,但是嵌入式领域已经撼动了英伟达 GPU 在人工智能领域的地位。开发适合特定 NPU 的算法,软硬件共同开发的模式已经成为当今嵌入式开发的主流。

参考文献:

[1] Intel unveils Movidius Compute Stick USB AI Accelerator. 2017-07-21 [August 11, 2017]. https://web.archive.org/web/20170811193632/https://www.v3.co.uk/v3-uk/news/3014293/intel-unveils-movidius-compute-stick-usb-ai-accelerator.
[2] Inspurs unveils GX4 AI Accelerator. 2017-06-21 [2019-04-21]. https://insidehpc.com/2017/06/inspurs-unveils-gx4-ai-accelerator/.
[3] Google Developing AI Processors. .http://www.eetimes.com/document.asp?doc_id=1329715.
[4] DaVinci 架构解析. https://zhuanlan.zhihu.com/p/93105269
[5] 龙恋. 多核处理器存储资源管理建模与访存带宽管理优化[D].国防科学技术大学,2014.
[6] D. Zhong, H. Shao and X. Du, "A Hand-Based Multi-Biometrics via Deep Hashing Network and Biometric Graph Matching," in IEEE Transactions on Information Forensics and Security, vol. 14, no. 12, pp. 3140-3150, Dec. 2019, doi: 10.1109/TIFS.2019.2912552.
[7] evolove,AI芯片:寒武纪NPU设计(DianNao):https://blog.csdn.net/evolone/article/details/80765094.
[8] 阿里达摩院:含光NPU的算法与架构: https://blog.csdn.net/achuan2015/article/details/102680334
[9] 勘智技术文档:https://canaan-creative.com/product/kendryteai

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3a3829wgtjsw8
Last modification:February 23, 2022
If you think my article is useful to you, please feel free to appreciate