AI芯片:寒武纪NPU设计分析(DianNao)

国内人工智能处理器独角兽寒武纪,在这个领域,算是走在了世界前沿,经过最近几年的迅猛发展,取得了辉煌的成果。
最近花了些时间研究了下寒武纪发表的一系列论文中介绍的NPU的结构。
记录下来,算是对最近学习内容的总结。

寒武纪从2014年开始,发表了一系列的论文,博客将依次分析其中的几篇:
(1)DianNao: A Small-Footprint High-Throughput Accelerator for Ubiquitous Machine-Learning
(2)DaDianNao: A Machine-Learning Supercomputer
(3)PuDianNao: A Polyvalent Machine Learning Accelerator
(4)ShiDianNao: Shifting Vision Processing Closer to the Sensor
(5)Cambricon-X: An Accelerator for Sparse Neural Networks

感谢寒武纪的分享!!

DianNao
这是寒武纪的开山之作。
本文所谓的人工智能处理器,是指专门处理人工智能算法的专属芯片。
最开始,广泛采用高性能CPU去计算,但是太慢了,于是有采用GPU去计算,发现速度明显提升,于是许多这类计算都基于成熟的GPU平台,这也是这几年NVIDIA股票起飞的主要原因之一。
但是GPU其实并不是专为人工智能算法而设计的,只能说是恰逢其会,自然就有许多不是那么高效的地方。
导致在加速人工智能算法时,虽然GPU比CPU快得多,但是速度还不够,功耗也很大,还有很大的提升空间。
为人工智能专用处理器的出现,埋下了伏笔。

下面先简单说说人工智能算法中主要涉及到的计算类型。
目前,人工智能算法主要的应用方向可以看成2个方面:(1)计算机视觉,也叫图像识别,属于平面二维数据的处理,具体的特征是某个像素与其周围上下左右的元素都有关系,这类问题一般采用CNN计算;(2)自然语言处理(语音识别,自同声传译,语义识别等),这种属于线性时序数据特征,也就是说这些数据有先后顺序,但是不存在上下关系,这类问题一般采用RNN计算,比如LSTM。

CNN与RNN的计算,分解开来,都可以看作大量矩阵乘法及向量对应元素相乘等基本计算。

以CNN计算为例,CNN计算可看作filter矩阵的每个元素与待识别图像的每个小块的对应元素对应相乘并累加,简单来看,就是两个向量对应元素相乘并累加。

文字描述很抽象,下面举个简单例子。

假设filter是A[3,3],尺寸是3X3,图像的某个小块是B[3,3],尺寸也是3X3,再加一个bias。
那么对应的CNN计算C如下:
C = A[3,3] X B[3,3] + bias
= a[0,0] * b[0,0] + a[0,1] * b[0,1] + … + a[2,2] * b[2,2] + bias
可以看出,为了计算得到C,中间包括9个乘法,9个加法。

如果是传统的CPU,那么一般一次只能计算一个乘法,就算是最先进的服务器用超标量CPU,data128bit宽,执行SIMD指令,也就最多同时计算4个定点乘法(32位的乘法),那么光是计算乘法,就需要3个周期,然后又需要几个周期计算加法。
或许有人会好奇,CPU那么强大,怎么可能一次只能计算最多4个乘法?
其实,CPU是为处理各种不同任务设计的,这就造成CPU内部有许多功能逻辑单元,应该说能用到的常用计算功能,比如定浮点的加减乘除/开方/求倒等常规操作,CPU内部都实现了,但是通常同一种功能只会有一套逻辑,最多4套,比如最常用的32位定浮点乘法计算,其他的计算,可能就只有一套,这就造成CPU可以执行各种复杂的计算,但是针对某种类型的计算任务,就不那么高效了。
为啥不多准备几套计算资源?
因为成本原因,芯片面积是有限的,在有限的面积上,只能放置有限的资源,而且,大部分时候,很多计算资源的使用率并不高,这也是一种浪费。
芯片设计,为了商业利益,可不会讲究养兵千日用兵一时。

好了,接下来,就来看看寒武纪的DianNao的内部结构。
这里写图片描述
基于神经网络的人工智能算法,是模拟人类大脑内部神经元的结构。
上图中的neuron代表的就是单个神经元,synapse代表神经元的突触。
这个模型的工作模式,就要结合高中生物课的知识了。

应该还记得吧,一个神经元,有许多突触,给别的神经元传递信息。同样,这个神经元,也会接收来自许多其他神经元的信息。这个神经元所有接受到的信息累加,会有一个强烈程度,在生物上是以化学成分的形式存在,当这些信息达到一定的强烈程度,就会使整个神经元处于兴奋状态(激活),否则就是不兴奋(不激活)。如果兴奋了,就给其他神经元传递信息,如果不兴奋,就不传递。这就是单独一个神经元的工作模式。那么有成千上万个这样的神经元组合起来,就是一个神经网络模型。

下面就来看看DianNao的内部结构。
这里写图片描述
上图中央浅蓝色部分就是用硬件逻辑模拟的神经网络结构。
整个称为NFU(Neural Functional Units)。
分为三个部分,NFU-1,NFU-2,NFU-3.
NFU-1全是乘法单元。16X16=256个乘法器。这些乘法器同时计算,也就是说,一个周期可以执行256个乘法。
NFU-2是加法树。16个。每个加法树是按照8-4-2-1这样组成的结构。每个加法数有15个加法器。
NFU-3是激活单元。16个。

可以看出,NFU的所有逻辑资源,可以整体划分为16份,每一份,包括16个乘法器,15个加法器,1个激活。它的运算过程是,16个乘法器同时计算出16个结果,送给加法树(最左的8个加法器,每个有2个输入,恰好接收16个输入),形成一个结果,然后再送入激活。

NFU-1和NFU-2目的是计算出单个神经元接受到的所有刺激的量。
NFU-3是根据前面两个单元计算得到的刺激量,去判断是否需要激活操作。

除了这三个阶段的计算逻辑,剩下还有三个Buffer。一个存储输入数据,一个存储权值(filter值),一个存储计算结果。

整体来说,结构还是比较简明的。

看起来也不复杂,但是因为是ASIC,少了许多不必要的逻辑功能,所以速度就是快,功耗就是低,效果就是好。

毕竟人家ASIC是专业的。

DianNao的出现,性能甩了CPU好几百条街,就算是GPU,那也是好几十条街。
在当时,引起巨大的震动。
开启了深度学习神经网络专用处理器的先河。
之后,迅速涌现出许多不同的架构。
包括谷歌的TPU。
是滴,大名鼎鼎的TPU,面世也要晚于DianNao。
另外,也就是在DianNao面世的2014年,谷歌将参与了DianNao研发的法国专家挖到了谷歌主持研发TPU。
如果说TPU某种程度上借鉴了DianNao的经验,也是说得过去的。

  • 24
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 12
    评论
寒武纪芯片是一种人工智能(AI)算力加速芯片,由中国创业公司寒武纪科技推出。该芯片采用独特的架构设计理念,能够高效地进行深度学习和计算机视觉等人工智能任务。寒武纪芯片以其出色的性能和功能,备受业界关注。 寒武纪芯片具有以下特点: 1. 高能效:寒武纪芯片采用了自主研发的架构设计,将电路与算法优化结合,实现了高能效的计算能力。相较于传统的通用型处理器,寒武纪芯片在相同功耗下能够提供更强大的AI计算能力,进而降低了数据中心和边缘设备的能耗和运营成本。 2. 高性能:寒武纪芯片内置了大量的计算单元和高速缓存,能够快速而准确地进行数据处理和模型推理。这使得寒武纪芯片在深度学习和计算机视觉等AI任务中具备出色的性能表现,能够满足各种复杂应用的需求。 3. 易用性:寒武纪芯片支持多种编程框架和开发工具,方便开发者进行人工智能应用的开发和优化。无论是在大规模的数据中心还是在边缘设备上,寒武纪芯片都提供了丰富而便捷的开发环境,帮助开发者快速实现AI应用。 4. 多样化的应用场景:寒武纪芯片广泛应用于各个领域,包括自动驾驶、智能视频监控、智能语音助手、智能制造等。其强大的计算能力和低能耗的特点,使得寒武纪芯片在提升生产效率、改善生活品质和推动社会进步方面具有巨大潜力。 总之,寒武纪芯片通过其高能效、高性能和易用性,为人工智能应用带来了新的可能性。它成为了中国在AI芯片领域的代表之一,为国内外用户提供了强大的计算支持,推动了人工智能产业的发展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值