NPU(Neural network Processing Unit), 即神经网络处理器。用电路模拟人类的神经元和突触结构。NPU为神经网络而生,对神经网络进行硬件支持。
嵌入式神经网络处理器(NPU)采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。视频与图像是人工智能数据的重要组成部分,在今天有着最广泛的应用。
NPU是网络处理器,可以认为是一个组件(或者子系统),有时候也称为NPU协处理器。NPU和TPU一样,偏向于并行架构设计。
生物神经系统是一个高度组织和相互作用的数量巨大的细胞组织群体。人类大脑的神经细胞大约在1011--1013个左右。神经细胞也称神经元,是神经系统的基本单元,按不同的结合方式构成复杂的神经网络。通过神经元及其联接的可塑性,使大脑具有学习、记忆和认知等各种智能。
生物神经网络由若干人工神经元结点相互连接,神经元之间通过突触两两连接,突触记录了神经元之间的联系。
生物神经元主要由以下几个部分组成:
胞体,是神经细胞的本体;
树突,用以接受来自其它细胞元的信号;
轴突,用以输出信号,与多个神经元连接;
突触,是一个神经元与另一个神经元相联系的特殊部位,神经元轴突的端部靠化学接触和电接触将信号传递给下一个神经元的树突或胞体。
电路模仿人类神经元,把每个神经元抽象为一个激励函数,函数输入由与其相连的神经元输出以及连接神经元的突触共同决定。
为了表达特定的知识,使用者通过某些特定的算法,调整人工神经网络中突触的取值、网络的拓扑结构等。该过程称为“学习”。学习方法有很多,这种方法,也叫算法。
学习之后,人工神经网络通过习得的知识来解决特定的问题。生物神经网络的深度学习,基本操作是神经元和突触的处理。现在变成计算机处理,传统的处理器指令集(包括x86和ARM等)是为了进行通用计算发展起来的,其基本操作为算术操作(加减乘除)和逻辑操作(与或非),需要数百上千指令才能完成一个神经元的处理,深度学习的处理效率不高。
从通用计算到并行计算,再到神经网络计算,是近些年计算发展的一个重要特征。神经网络对人工智能的发展影响深远,人工智能科技公司的brain计划,神经网络往往占有较大成分。
经典的冯·诺伊曼结构不能满足要求,神经网络中存储和处理是一体化的,通过突触权重来体现。冯·诺伊曼结构中,存储和处理是分离的,由存储器和运算器实现,二者之间存在巨大的差异。在TPU设计上,关于存储与运算也进行了深刻的论证。
现有的基于冯·诺伊曼结构的经典计算机(如X86处理器和英伟达GPU)来跑神经网络应用时,不可避免地受到存储和处理分离式结构的制约,影响效率。这也就是专门针对人工智能的专业芯片,能够对传统芯片有一定先天优势的原因之一,NPU实现了计算与存储的结合。。
国内NPU典型代表有寒武纪芯片和国外IBM的TrueNorth芯片。以寒武纪为例,DianNaoYu指令直接面对大规模神经元和突触的处理,一条指令即完成一组神经元的处理,并对神经元和突触数据在芯片上的传输提供了一系列专门的支持。
指令编程不论对于人工智能,对于大数据处理、对于音视频和图形图像都有着重要的意义。
CPU、GPU、NPU相比,有百倍以上性能或能耗比差距。寒武纪团队和Inria联合发表的DianNao论文为例——DianNao为单核处理器,主频为0.98GHz,峰值达每秒4520亿次神经网络基本运算,65nm工艺下功耗为0.485W,面积3.02平方毫米mm。这就是专业设计的优势所在。
mate10中的麒麟970芯片,集成了寒武纪的NPU,实现所谓的照片优化功能,保证手机用了很长时间后还能不卡。
华为从麒麟810芯片开始,使用自家研发的达芬奇架构集成NPU,大大提升了芯片的AI处理能力,至今采用了华为NPU的手机AI高性能计算仍是卖点之一。2018年10月,华为发布了最新的NPU芯片,包括用于云端训练的晟腾910和用于终端推理的晟腾310,晟腾系列NPU正式走入人们的视野。
华为手机使用NPU芯片,也是华为手机的成功要素之一。手机是终端,对视音频图形图像有着更多的应用,NPU的支持,保障应用的顺利进行。
2019年9月25日,“云栖大会”上阿里正式对外发布了全新的含光800芯片。含光800是一款高性能的采用ASIC技术的用于云端推理的AI芯片NPU。
1颗含光800的算力相当于10颗GPU,含光800推理性能达到78563 IPS,能效比500 IPS/W。相比传统GPU算力,性价比提升100%。
举国造芯激动人心的时刻到来了,财大气粗的阿里不再沉默,达摩院重要的使命之一,就是造芯,资本的投入推动芯片技术的发展。
嵌入式神经网络处理器(NPU)采用“数据驱动并行计算”架构,擅长处理视频、图像类的海量多媒体数据。
NPU处理器专门为物联网人工智能而设计,用于加速神经网络的运算,解决传统芯片在神经网络运算时效率低下的问题。近些年,神经网络称为人工智能算法的重要支柱。
NPU可以和CPU、GPU、MCU结合,成为其中的一部分,NPU这种组合的模式,已经广泛使用。NPU也可以进行定制,大大加强了NPU的范围应用。
GX8010中,CPU和MCU各有一个NPU,MCU中的NPU相对较小,也被称为SNPU。NPU的应用已经步入家家户户,未来还有很大的发展空间。
NPU的结构充分考虑了神经网络运算的特点,专为神经网络运算而设计,各个模块通力结合,保障了神经网络算法的高效执行。
NPU处理器有如下几部分组成:乘加、激活函数、二维数据运算、解压缩等模块。
乘加模块用于计算矩阵乘加、卷积、点乘等功能,NPU内部有64个MAC,SNPU有32。
激活函数模块采用最高12阶参数拟合的方式实现神经网络中的激活函数,NPU内部有6个MAC,SNPU有3个。
二维数据运算模块用于实现对一个平面运算,如降采样、平面数据拷贝等,NPU内部有1个MAC,SNPU有1个。
解压缩模块用于对权重数据的解压。为解决物联网设备中内存带宽小的特点,在NPU编译器中会对神经网络中的权重进行压缩,在不影响精度的情况下,可以实现6-10倍的压缩效果。
专业的设计,考虑了运算的方方面面,简单直接,面向问题。对通用专业硬件设计有一定的借鉴作用。下图为高通的NPU芯片,高通一直是嵌入式领域的王者。
华为NPU编程示例代码:
NPU在现实中有着广泛应用,尤其在智能计算、图形AI识别领域。下面总结AI场景,对NPU应用进行整理。
拍照时通过NPU实现AI场景识别,并利用NPU运算修图、.NPU判断光源和暗光细节合成超级夜景、通过NPU实现语音助手的运行、.使用NPU记录用户使用习惯杀后台。
NPU配合GPU Turbo预判下一帧实现提前渲染提高游戏流畅度、NPU预判触控提高跟手度和灵敏度、NPU判断前台后台网速需求差异配合实现Link Turbo、跑分。
NPU判断游戏渲染负载智能调整分辨率、NPU辅助清理系统18月不卡、把降低游戏时AI的运算负载交给NPU以省电、NPU实现CPU和GPU的动态调度。
利用NPU和人工智能算法定期更换壁纸的功能、NPU辅助大数据广告推送、NPU实现输入法AI智能联想词的功能。
应用场景的支持下,NPU已经成为最重要的芯片。目前,NPU技术已经成熟,已经广泛应用愈交互领域。在手机、军工、嵌入式领域广泛应用。
美摄SDK,完美支持CPU、GPU、NPU运算。20年视音频技术积淀,在短视频领域,把人工智能应用做到极致。