国内人工智能处理器独角兽寒武纪,在这个领域,算是走在了世界前沿,经过最近几年的迅猛发展,取得了辉煌的成果。
最近花了些时间研究了下寒武纪发表的一系列论文中介绍的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的经验,也是说得过去的。

AI芯片:寒武纪NPU设计分析(DianNao)相关推荐

  1. AI处理器-寒武纪NPU芯片简介

    一.前言 当今时代,人工智能(AI)正被广泛运用于各式各样的应用上.人工智能的三大支撑是硬件.算法和数据,其中硬件指的是运行 AI 算法的芯片与相对应的计算平台.由于使用场景变多,所需处理的数据量变大 ...

  2. 【转】AI芯片:寒武纪NPU设计分析(DianNao)

    转自:https://blog.csdn.net/evolone/article/details/80765094 国内人工智能处理器独角兽寒武纪,在这个领域,算是走在了世界前沿,经过最近几年的迅猛发 ...

  3. 极客公园-零基础看懂全球 AI 芯片:详解「xPU」

    https://www.sohu.com/a/169062329_413980 随着 AI 概念火爆全球,做 AI 芯片的公司也层出不穷.为了让市场和观众能记住自家的产品,各家在芯片命名方面都下了点功 ...

  4. AI芯片:寒武纪DianNao,英伟达NVDLA和谷歌TPU1的芯片运算架构对比分析

    前面几篇博客分别分析了目前市面上能够找到的各家AI芯片的结构. 下面做一个阶段性的对比分析及总结. AI芯片运算架构对比 整体来看,NVDLA的架构与寒武纪的DianNao比较像.所以,单位资源的性能 ...

  5. 中科寒武纪 AI 芯片弯道超车:NPU 为深度学习而 生、指令集是产业根本

    人工智能领域深度学习兴起:神经网络规模快速增长,对计算能力需求提升.深度学习技术评为 2013 年十大突破性技术之首,带动了人工智能的再次兴起:深度学习凭借其更加优秀的拟合能力, 在语音识别.图像处理 ...

  6. 寒武纪“失速”,是AI芯片行业的阵痛?

    寒武纪又被捅上了风口浪尖. 2020年5月7日,上海证券交易所公布了寒武纪在科创板IPO的问询回复,涉及三个文件,<发行人及保荐机构回复意见>.<会计师回复意见>.<补充 ...

  7. 寒武纪芯片创始人:要让AI芯片计算效率提高一万倍

    来源: 传感器技术 概要:随着利好政策的不断出台以及行业的持续发展,芯片相关产业站上风口. 随着利好政策的不断出台以及行业的持续发展,芯片相关产业站上风口.而AI芯片独角兽公司寒武纪,也即将入驻雄安新 ...

  8. 寒武纪上市:AI芯片和普通芯片有何不同?全球AI芯片公司大全都在这里了

    来源:Zach小生 作者:腾讯新闻知识官.美国宾州州立大学硕士.芯片工程师Zach小生 7月20日,寒武纪正式在A股科创板上市,成为AI芯片第一股,引起了业内的热议和关注. 根据相关的资料显示,目前中 ...

  9. “芯痛”之下阿里苦心研发NPU AI芯片究竟哪款PU更厉害?

    来源:OFweek人工智能网 4月19日,有消息称,阿里巴巴达摩院正在研发一款神经网络芯片--Ali-NPU,主要运用于图像视频分析.机器学习等AI推理计算.按照设计,这款芯片性能将是目前市面上主流C ...

最新文章

  1. 华为服务器HBA卡在哪个位置,服务器hba 设置
  2. Spring-Security (学习记录四)--配置权限过滤器,采用数据库方式获取权限
  3. php对称算法_php里简单的对称加密算法
  4. leetcode 202. 快乐数 思考分析(哈希集合与双指针解)
  5. buck电路上下管_推荐 | 学好电路设计与仿真?你不能错过这两本书籍 ~
  6. 广度优先搜索练习之神奇的电梯
  7. texture 纹理(贴图)
  8. Pytest之pytest-assume同用例多断言,断言1失败会执行后续代码及断言2
  9. python如何进行垃圾回收_python垃圾回收机制
  10. 捕捉Web页面子类错误堆栈中的信息
  11. js中函数的三种定义方式、函数声明、函数同名重复、函数删除、
  12. 高频量化交之李庆:在华尔街狼共舞的岁
  13. Codesys学习调试笔记2
  14. 程序员年底失业,到底是该年前找工作好还是年后找工作好?
  15. 010. 递增子序列
  16. 等保系列之——网络安全等级保护测评:工作流程及工作内容
  17. java supplier接口_Java函数式接口Supplier接口实例详解
  18. 如何提高mysql插入速度_mysql技巧:提高插入数据(添加记录)的速度
  19. 2016年天梯赛初赛题集(L1 - L2)
  20. javascript运算符:==与===的区别,||和特殊用法

热门文章

  1. MapKit框架的使用
  2. 表示颜色的英语单词(图)
  3. 简单三招,设计复杂ERP报表
  4. origin3D作图surface和等高线图contor
  5. 高数_第6章无穷级数
  6. HBuilder打开发生了错误。请参阅日志文件
  7. 计算机视觉之人脸识别学习(六)
  8. 第1讲、Cadence Allergo绘制小马哥DragonFly四轴飞行器PCB四层板教程简介
  9. linux安装Aria2和部署AriaNg Web服务
  10. B/S模式实现批量打包apk