怎么模仿?那就得先来看看人类的神经结构——生物的神经网络由若干人工神经元结点互联而成,神经元之间通过突触两两连接,突触记录了神经元之间的联系。
如果想用电路模仿人类的神经元,就得把每个神经元抽象为一个激励函数,该函数的输入由与其相连的神经元的输出以及连接神经元的突触共同决定。
为了表达特定的知识,使用者通常需要(通过某些特定的算法)调整人工神经网络中突触的取值、网络的拓扑结构等。该过程称为“学习”。
在学习之后,人工神经网络可通过习得的知识来解决特定的问题。
这时不知道大家有没有发现问题——原来,由于深度学习的基本操作是神经元和突触的处理,而传统的处理器指令集(包括x86和ARM等)是为了进行通用计算发展起来的,其基本操作为算术操作(加减乘除)和逻辑操作(与或非),往往需要数百甚至上千条指令才能完成一个神经元的处理,深度学习的处理效率不高。
这时就必须另辟蹊径——突破经典的冯·诺伊曼结构!
神经网络中存储和处理是一体化的,都是通过突触权重来体现。 而冯·诺伊曼结构中,存储和处理是分离的,分别由存储器和运算器来实现,二者之间存在巨大的差异。当用现有的基于冯·诺伊曼结构的经典计算机(如X86处理器和英伟达GPU)来跑神经网络应用时,就不可避免地受到存储和处理分离式结构的制约,因而影响效率。这也就是专门针对人工智能的专业芯片能够对传统芯片有一定先天优势的原因之一。
NPU的典型代表有国内的寒武纪芯片和IBM的TrueNorth。以中国的寒武纪为例,DianNaoYu指令直接面对大规模神经元和突触的处理,一条指令即可完成一组神经元的处理,并对神经元和突触数据在芯片上的传输提供了一系列专门的支持。
用数字来说话,CPU、GPU与NPU相比,会有百倍以上的性能或能耗比差距——以寒武纪团队过去和Inria联合发表的DianNao论文为例——DianNao为单核处理器,主频为0.98GHz,峰值性能达每秒4520亿次神经网络基本运算,65nm工艺下功耗为0.485W,面积3.02平方毫米mm。
文章开头所说的mate10中所用的麒麟970芯片,就集成了寒武纪的NPU,所以才可以实现所谓的照片优化功能,以及保证你的手机用了很长时间后还能不卡(当然也得真正用了才能知道有没有宣传的这么好)。
PS,中星微电子的“星光智能一号”虽说对外号称是NPU,但其实只是DSP,仅支持网络正向运算,无法支持神经网络训练。
5.ASICASIC(Application Specific Integrated Circuit)是一种为专门目的而设计的集成电路。无法重新编程,效能高功耗低,但价格昂贵。近年来涌现出的类似TPU、NPU、VPU、BPU等令人眼花缭乱的各种芯片,本质上都属于ASIC。ASIC不同于 GPU 和 FPGA 的灵活性,定制化的 ASIC 一旦制造完成将不能更改,所以初期成本高、开发周期长的使得进入门槛高。目前,大多是具备 AI 算法又擅长芯片研发的巨头参与,如 Google 的 TPU。由于完美适用于神经网络相关算法,ASIC 在性能和功耗上都要优于 GPU 和 FPGA,TPU1 是传统 GPU 性能的 14-16 倍,NPU 是 GPU 的 118 倍。寒武纪已发布对外应用指令集,预计 ASIC 将是未来 AI 芯片的核心。
6.BPU(Brain Processing Unit,大脑处理器)是由地平线科技提出的嵌入式人工智能处理器架构。第一代是高斯架构,第二代是伯努利架构,第三代是贝叶斯架构。目前地平线已经设计出了第一代高斯架构,并与英特尔在2017年CES展会上联合推出了ADAS系统(高级驾驶辅助系统)。
7. DPU(Deep learning Processing Unit, 即深度学习处理器)最早由国内深鉴科技提出,基于Xilinx可重构特性的FPGA芯片,设计专用的深度学习处理单元(可基于已有的逻辑单元,设计并行高效的乘法器及逻辑电路,属于IP范畴),且抽象出定制化的指令集和编译器(而非使用OpenCL),从而实现快速的开发与产品迭代。事实上,深鉴提出的DPU属于半定制化的FPGA。
嵌入式神经网络处理器(NPU)采用“数据驱动并行计算”的架构,特别擅长处理视频、图像类的海量多媒体数据。
NPU处理器专门为物联网人工智能而设计,用于加速神经网络的运算,解决传统芯片在神经网络运算时效率低下的问题。
在GX8010中,CPU和MCU各有一个NPU,MCU中的NPU相对较小,习惯上称为SNPU。
NPU处理器包括了乘加、激活函数、二维数据运算、解压缩等模块。
乘加模块用于计算矩阵乘加、卷积、点乘等功能,NPU内部有64个MAC,SNPU有32个。
激活函数模块采用最高12阶参数拟合的方式实现神经网络中的激活函数,NPU内部有6个MAC,SNPU有3个。
二维数据运算模块用于实现对一个平面的运算,如降采样、平面数据拷贝等,NPU内部有1个MAC,SNPU有1个。