NPU的发展概况 - 程序员资料

文章推薦指數: 80 %
投票人數:10人

2014年寒武纪DianNao系列论文开启了专用人工智能芯片NPU架构设计的先河,直接催生了寒武纪系列NPU,一定程度上引领了华为达芬奇架构NPU、阿里“含光”、谷歌TPU等的出现。

NPU的发展概况 技术标签: 人工智能  芯片  嵌入式   NPU的发展概况 声明:本文章为作者结课拓展小论文,仅供参考,欢迎批评指正。

摘要:NPU作为一种主要采用ASIC技术的专用嵌入式神经网络芯片通过硬件模拟神经网络的方式克服了CPU、GPU在深度学习中设计上的先天不足,大大提高了深度学习芯片的运算速度。

2014年寒武纪DianNao系列论文开启了专用人工智能芯片NPU架构设计的先河,直接催生了寒武纪系列NPU,一定程度上引领了华为达芬奇架构NPU、阿里“含光”、谷歌TPU等的出现。

尽管现今主要的NPU只集中在推理芯片领域,但已经撼动了GPU人工智能领域的地位。

NPU的出现代表了人工智能芯片开始走向定制专用化的方向。

关键词:NPU;神经网络芯片;DianNao;高性能;推理芯片 0.引言 如今大数据与智能时代即将来临,深度学习计算需求愈加旺盛,人工智能芯片市场初具规模,蓬勃发展。

人工智能芯片功能上主要分为训练芯片和推理芯片两种,应用场景主要分为云端和终端,技术上主流的AI芯片分为GPU、FPGA以及ASIC专用芯片三大类。

如今AI训练芯片主要以英伟达的GPU为主,但是在推理芯片领域主要采用ASIC技术的NPU定制新型AI芯片层出不穷,本文将主要从NPU的概念、架构和实例三个方面对其发展概况展开讨论。

1.概念 1.1定义 NPU(Neural-networkProcessingUnit)是一种嵌入式神经网络处理器,它采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。

1.2NPU的诞生 长期以来,应用需求一直牵动着嵌入式技术的发展方向。

随着深度学习神经网络的兴起,人工智能、大数据时代的来临,CPU和GPU渐渐难以满足深度学习的需要,面对日渐旺盛的需求和广大的预期市场,设计一款专门用于神经网络深度学习的高效智能处理器显得十分必要,因此NPU应运而生。

从技术角度看,深度学习实际上是一类多层大规模人工神经网络。

它模仿生物神经网络而构建,由若干人工神经元结点互联而成。

神经元之间通过突触两两连接,突触记录了神经元间联系的权值强弱。

由于深度学习的基本操作是神经元和突触的处理,神经网络中存储和处理是一体化的,都是通过突触权重来体现,而冯·诺伊曼结构中,存储和处理是分离的,分别由存储器和运算器来实现,二者之间存在巨大的差异。

当用现有的基于冯·诺伊曼结构的经典计算机(如X86处理器和英伟达GPU)运行神经网络应用时,就不可避免地受到存储和处理分离式结构的制约,因而影响效率。

因此,专门针对人工智能的专业芯片NPU更有研发的必要和需求。

1.3NPU、CPU、GPU的区别 CPU(centralprocessingunit)是中央处理器。

主要包括运算器(ALU)和控制单元(CU),还包括若干寄存器、高速缓存器和它们之间通讯的数据、控制及状态的总线。

CPU作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。

它主要负责多任务管理、调度,具有很强的通用性,是计算机的核心领导部件,其计算能力并不强,更擅长逻辑控制。

GPU(GraphicsProcessingUnit)是一种图形处理器,它可以弥补CPU在计算能力上的天然缺陷。

相对于CPU较少的内核较多的资源而言,它采用数量众多的计算单元和超长的流水线,善于进行大量重复计算,处理图像领域的运算加速。

它的基本思想是并行计算即用多个处理器来共同求解同一问题,将被求解的问题分解成若干个部分,各部分均由一个独立的处理机来并行计算。

但是他的缺陷也很明显,即协调、管理能力弱,无法单独工作,需要CPU进行控制调度。

虽然GPU用于深度学习运算时速度比CPU有很大提升,但对于特定应用场景其仍有功耗大,芯片容易过热,性能提升不足等问题。

相较于CPU擅长处理任务和发号施令,GPU擅长进行图像处理、并行计算算,NPU更擅长处理人工智能任务。

NPU在电路层模拟人类神经元和突触,并且用深度学习指令集直接处理大规模的神经元和突触,一条指令完成一组神经元的处理。

相比于CPU和GPU的冯诺伊曼结构,NPU通过突触权重实现存储和计算一体化,从而提高运行效率。

但NPU也有不足,比如目前它并不支持对大量样本的训练,相对来说更擅长预测和推理。

1.4NPU的发展现状 2016年6月20日,中星微数字多媒体芯片技术国家重点实验室在北京宣布,已研发成功了中国首款嵌入式神经网络处理器(NPU)芯片,成为全球首颗具备深度学习人工智能的嵌入式视频采集压缩编码系统级芯片,并取名“星光智能一号”。

截至2020年5月,拥有NPU制造能力的厂商有寒武纪公司(Cambricon-1H/1M、MLU100)、华为(晟腾)、阿里(含光),谷歌(TPU)等。

相对于CPU拥有相对清晰的定义,稳定的生态链而言,NPU还处于方兴未艾的阶段,无论是研发还是应用还需要更多的值得探索和研究的地方。

相对于CPU、GPU发展,国内追赶的窘境而言,无疑在NPU的开发上,国内厂商已经走在前列,未来可期。

2.NPU架构分析 2.1主流NPU架构 2014年中科院的陈天石科研团队发表了DianNao系列论文,随即席卷了体系结构界,开启了专用人工智能芯片设计的先河。

后来中科院旗下的寒武纪科技推出了其第一代NPU寒武纪1A,并用在了华为麒麟970芯片中。

随后谷歌推出了TPU架构,华为推出了自研的基于达芬奇架构的NPU,阿里推出了“含光”架构的NPU。

后续的NPU架构与DianNao架构都有一定联系,我们主要对DianNao架构进行简要介绍。

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

图1神经网络的完整硬件实现以上是神经网络模式图,基于神经网络的人工智能算法,成功模拟了人类大脑内部神经元的结构。

上图中的neuron代表的就是单个神经元,synapse代表神经元的突触,hiddenlayer是神经网络中的隐含层,outputlayer是输出层,input是神经网络输入。

下图为DianNao的内部结构:图2加速器蓝色区域是硬件逻辑模拟的神经网络结构,称为NFU(NeuralFunctionalUnits)。

从左到右分为三个部分,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。

2.3DaDianNao 相比于DianNao作为嵌入式终端使用的处理器,DaDianNao更适合做服务器使用的大规模高性能处理器。

在DaDianNao的设计中,寒武纪给DaDianNao制定的要求是性能要实现DianNao的16倍提升。

因此最初采用了将NFU资源扩大16倍的方案,但发现这样做布线面积大且不够高效,于是后来采用了多核并行架构,将原来资源扩大16倍的打NFU改为16个小的NFU,经过合理布线,最终面积减小28.5%且性能满足要求。

2.4PuDianNao PuDianNao是寒武纪为了加速机器学习中除了深度学习之外的其他重要算法而推出的一款嵌入式处理器方案。

PuDianNao,内部实现了7种常用的机器学习算法:k-means,k-nearestneighbors,naivebayes,supportvectormachine,linearregression,andDNN。

PuDianNao的结构如下图:图3PuDianNao的加速器结构PuDianNao结构与DianNao类似,包含三个缓冲区,和多个运算单元,缓冲区包括输入数据存储、权值存储和输出数据存储。

运算单元由多个FU(FunctionUnit)并联组成,每个FU中包含一个MLU(MachineLearningUnit)和一个ALU。

MLU结构如下:图4MLU硬件结构MLU结构与NFU类似,只是在NFU-1前面增加了2层逻辑Counter和Adder。

Counter用于累加,结果直接输出到下一层,主要是naverbayes和classificationtree需要。

Adder用于大部分机器学习算法,计算结果直接输出或者作为下一层的输入。

Multiplier相当于NFU-1,Addertree相当于NFU-2,ACC用于累加,当计算资源大于硬件资源时,已经算好的数据可以直接存在ACC中用作下一轮累加,节省了读写存储的开销,Misc相当于NFU-3。

ALU包含各一个加法器、乘法器、除法器和一个转换器(converter),用于机器学习中一些特殊的MLU解决不了的计算。

3.NPU芯片实例 3.1寒武纪NPU 2014年—2016年横扫体系结构学术圈的DianNao系列论文便是由寒武纪创始人及其科研团队发布。

该公司于2016年推出第一代终端智能处理器IP产品寒武纪1A,当时是全球第一款商用终端智能处理器IP产品。

号称开启手机AI时代的麒麟970使用的集成NPU就是寒武纪的1A处理器IP。

2018年5月,寒武纪正式发布了中国第一款云端智能芯片——CambriconMLU100芯片,标志着寒武纪已成为中国第一家(也是世界上少数几家)同时拥有终端和云端智能处理器产品的商业公司。

寒武纪公司如今主要的产品是Cambricon1H和1M,分别为第二代和第三代IP架构。

3.2华为NPU 华为从麒麟810芯片开始使用自研的达芬奇架构集成NPU,大大提升了芯片的AI处理能力,至今采用了华为NPU的手机AI高性能计算仍是卖点之一。

2018年10月,华为还发布了最新的NPU芯片,包括用于云端训练的晟腾910和用于终端推理的晟腾310,晟腾系列NPU正式走入人们的视野。

3.3阿里云“含光”NPU 2019年9月25日,在“2019云栖大会”上阿里正式对外发布了全新的含光800芯片。

含光800是一款高性能的采用ASIC技术的用于云端推理的AI芯片NPU。

1颗含光800的算力相当于10颗GPU,含光800推理性能达到78563IPS,能效比500IPS/W。

相比传统GPU算力,性价比提升100%。

3.4谷歌TPU TPU是谷歌于2014年研发完成的一款专门为加速深层神经网络运算能力而设计的基于ASIC的计算机神经网络专用芯片。

它是专注神经网络的加速运算器且其开发团队借鉴了寒武纪关于DianNao系列框架,因此我们在这里也将其划归为广泛意义上的NPU。

TPU的主要创新在于采用大规模片上内存、用量化技术进行整数运算(使用8位低精度运算)和脉动阵列设计。

4.结语 大数据与智能时代即将来临,深度学习训练与推理应用越来越广泛,无论是云端还是终端的应用,人工智能芯片都呼之欲出,而相比CPU+GPU+FPGA的芯片模式而言主要采用ASIC技术开发的定制NPU更是未来的象征。

尽管NPU如今在一些特定领域还不能与GPU匹敌,但是毫无疑问他已经撼动了英伟达GPU在人工智能领域的地位,只要给他足够的时间成长,他将带动行业新的一轮技术革新。

参考文献:[1]TianshiChen,ZidongDu,etal.DianNao[C],InternationalConferenceonArchitecturalSupportforProgrammingLanguagesandOperatingSystems.ACM,2014:269-284.[2]LuoT,LiuS,etal.DaDianNao[C],Ieee/acmInternationalSymposiumonMicroarchitecture.IEEE,2015:609-622.[3]LiuD,ChenT,etal.PuDianNao[C],TwentiethInternationalConferenceonArchitecturalSupportforProgrammingLanguagesandOperatingSystems.ACM,2015:369-381.[4]田泽,嵌入式技术发展的一些思考[C],微纳电子与智能制造,Vol.2,No.1,2020:1-4.[5]evolove,AI芯片:寒武纪NPU设计分析(DianNao):https://blog.csdn.net/evolone/article/details/80765094[6]阿里达摩院:含光NPU的算法与架构:https://blog.csdn.net/achuan2015/article/details/102680334 版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/CHAO_bismarck/article/details/106651814 原作者删帖   不实内容删帖   广告或垃圾文章投诉 智能推荐 ###1.语义化标签  在h5之前,在开发过程中大量div的id名称重复,例如divid="footer"来标记页脚内容,所以html5元素引入了语义化标签(一组新的片段类元素)相当于div###2.常用语义化标签  hgroup元素代表网页或section的标题,当元素有多个层级时,该元素可以将h1到h6元素放在其内,譬如文章的主副标题    eg:      &... ∗流量预警,图片超多∗生产力方面:苹果电脑>黑苹果>虚拟机∗虚拟机主要用来学习、测试软件等∗电脑配置越高,越流畅∗缺点:虚拟机macOS系统无法驱动3D•本篇教程只适用于IntelCPU。

AMDCPU下篇再写。

•教程适用于macOSCapitan10.11、Sierra10.12、HighSierra10.13、Mojave10.14、Catalina10.15等版本•正式安装macOS之前请先安装好:VMware软件Unlocker给. 分页需要用到的俩个参数;pageNum(页码)、pageSize(每页的条数)有时候前端(移动端)传递的是start(从多少条记录开始)、count(获取的数量,也就是条数)后端方法需要的是;pageNum和pageSize一、将start、count转换为pageNum和pageSize(一)、定义PageCounter类@[email protected]@BuilderpublicclassPag... 原作者:https://www.cnblogs.com/dotnetcrazy/p/9294292.html,觉得写的不错,怕他哪天不开心删博文了,所以收藏下,版权归他所有目录:1.基础概念¶1.1.数的分类¶扩展:二次方程求解公式的推导¶1.2.命题相关¶1.3.集合系列¶1.4.映射系列(映射、像、定义域和值域、满单射、双射、逆映... 调制技术,ASK、PSK、FSK等图解 这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好!这是你第一次使用Markdown编辑器所展示的欢迎页。

如果你想学习如何使用Mar 随便推点 文章出处:http://simohayha.iteye.com/blog/459683首先来看下内核如何处理3次握手的半连接队列和accept队列(其实也就是server端的三次握手的状态变换).而半连接队列和accept队列在内核如何表示,我们上次已经介绍过了,这里就不介绍了. 首先我们知道当3层的数据包到达之后会调用4层的协议handle,tcp的话就是tcp_v4_rcv.如 转自:https://www.cnblogs.com/noticeable/p/9197640.html1、什么是算子及不同算子的介绍  算子是一个函数空间到函数空间上的映射O:X→X。

广义上的算子可以推广到任何空间,如内积空间等。

  在图像处理中,通常会使用一些不同的算子来对图像进行处理。

下面介绍一下图像处理中常用的一些算子。

1.相关算子(CorrelationOper... 一、四台机器ssh互通二、下载node和manager上传到相应的服务器三台MySQL服务器需要安装nodeMHAManager服务器需要安装manager和node三、MHAnode安装MHA的Node依赖于perl-DBD-MySQL,所以要先安装perl-DBD-MySQL。

yuminstallperl-DBD-MySQL-yrpm-ivhmha4mysql-node-0.58-0.el7.centos.noarch.rpm四、MHAmanager安装MHA ​双十一当天考试,没办法去抢购东西,闲暇之余写了一个京东秒杀抢购助手,帮助没有时间的人抢一些想要的东西;​为什么叫小桃子版,因为头像的小公主就是叫小桃子[email protected][email protected]本来想做把脚本做成chrome扩展插件的形式,让大家用起来方便些,扩展程序注入监控画面比较麻烦,试了两次失败了,平时比较忙,来不及... OnClientClick是客户端脚本,一般使用javascript,在客户端,也就是IE中运行,点击后马上执行OnClick是服务器端事件处理函数,使用C#或者vb.net,在服务器端,也就是IIS中运行,点击按钮后,执行postback,之后再运行。

其实有的时候需要客户端和服务端双重校验,为什么这么说呢?比果说,一个用户名的文本框,在客户端我们通过JS校验,只能输入字 1.可能是环境没弄好,把相关依赖导入进去就好了。

2.如果是maven项目,先检查一下maven的设置,然后pom.xml检查一下,更新maven项目就好了。

3.如果其他项目能运行,把代码拷贝进去能运行的项目中。

4.自己新建立一个maven项目,然后把东西复制进去。

... 推荐文章 2021-1_m0_63167528的博客-程序员资料 如何在Linux上格式化并创建分区_KrisFei'sblog-程序员资料 【C++从青铜到王者】第十八篇:C++之多态_森明帮大于黑虎帮的博客-程序员资料 变量的指针和指向变量的指针变量_ghf183184的博客-程序员资料_变量的指针 s3c2440对nandflash的操作_赵春江的专栏-程序员资料 三点估算法_三点估算法、方差计算、完工概率计算的讨论_陈磊乐的博客-程序员资料 CVector3类_仓鼠玉米的博客-程序员资料 Java_qq_41326038的博客-程序员资料 热门文章 C++PrimerPlus(6th)Chap5循环和关系表达式摘录_岐岇的博客-程序员资料 基于FPGA边缘识别算法的Verilog代码实现灰度值转换3*3矩阵生成Sobel算法实现_InspireHH的博客-程序员资料_fpga边缘检测代码 【数据结构】图的连通性应用_Alex_SCY的博客-程序员资料_数据结构判断图的连通性 树莓派+欧西亚室外温度湿度传感器+ArduinoNano+433Mhz接收模块+RRDTOOL制作室内室外温湿度记录监控系统_inthesun29的博客-程序员资料 Android实现列表仿联系人快速查找和关键字搜索_沐浴阳光-程序员资料_android仿联系人搜索 Q:无法打开源文件****.h?_weixin_34292402的博客-程序员资料 mysql提权语句_mysql提权话语_Young斯基的博客-程序员资料 SpringCloud学习(五):Zuul路由过滤/网关_aihua0193的博客-程序员资料 相关标签 人工智能 芯片 嵌入式



請為這篇文章評分?