神经网络芯片的体系结构是什么样的?一起来探讨一下

根据计算模块的组织方式的不同,神经网络芯片从体系结构上主要分为乘加树和脉动阵列两大类。 Dian na0系列采用了乘加树体系结构。它类似于经典的通用处理器,使用指令来灵活控制整个卷积计算的过程,同时,对输入特征图、权重和输出特征图等不同的运算数据设计专用的缓冲系统DaDiannao则针对高性能深度学习应用场景,扩展了多运算核心架构。

谷歌的TPU则采用了脉动阵列的组织方式。脉动阵列是在1970年代由哈佛大学的孔祥重教授提出,中科院计算所李国杰院士在脉动阵列的发展中也作出过基础性贡献。脉动阵列采用一种纵横处理结构,数据按预先确定的“流水”在阵列的处理单元中有规则地流动,单元对数据进行并行处理,预先确定的数据流动模式使数据从流入到流出处理单元阵列过程中完成所有应做的处理。神经网络的卷积计算模式和脉动阵列计算特点高度匹配,因而能取得非常好的加速性能。

从二者的结构特征可以看出,乘加树结构的神经网络芯片使用指令控制计算流程,灵活通用,适合设计通用神经网络处理器。而脉动阵列结构,可以高效复用数据,性能更高,但计算模式固定,比较专用。

硬件稀疏化加速技术也是神经网络芯片发展的一个重要节点。斯坦福大学的Bill Dally教授等提出了主要针对深度神经网络(DNNs)和循环神经网络(RNNs)这两类全连接运算为主的网络加速设计方案,探索减少DNNS和RNNs片上0值权重和神经元运算片上加速方法。一方面在软件算法层利用模型本身普遍存在结构冗余的特点,结合训练方法对神经网络模型的稠密连接进行删减,使模型参数中的稀疏性(sparsity)最大化。另一方面,通过硬件开发稀疏数据的可压缩能力,降低稀疏数据带来的存储开销,设计出可减少冗余权重和神经元计算量的神经网络加速芯片,配合量化、降维和编码技术,将智能芯片推向 TOPS/W时代。

当前,神经网络芯片的研究方兴未艾,有两个主要趋势:一是神经网络芯片和应用场景更加紧密的结合;二是新器件、新架构驱动的芯片设计研究。应用场景与目标算法这两大约束导致了智能芯片朝向不同的发展方向衍生出了不同形态、架构与实现方式,前者决定了应用本身对于芯片计算实时性、功耗、重构开销、面积成本甚至计算精度的需求,而后者决定了芯片为了满足应用需求所需要支持的算法模型,是否需要足够的通用性以解决包含经典机器学习算法以及新兴深度学习模型在内的推理算法,是否需要进行支持在线模型训练,类似的设计选择可能导致芯片的架构走向不同的实现方式,例如面向语音识别的芯片和主要用于视觉处理的架构可能采用截然不同的结构甚至指令集,前者可能只需要支持RNN模型而选择矩阵乘阵列的设计架构而后者则可能选择传统脉动阵列结构实现。

对于百花齐放的智能芯片体系结构与设计方法,如何进行量化度量是一个值得关注的话题。其中,能效比可作为神经网络芯片的一个非常重要的量化牵引指标,来统一衡量智能芯片硬件层面的工作效率,当前国际上最新的神经网络芯片正从ITOPS/W向10TOPS/W演进。另外选择合适的神经网络模型作为测试基准是另一个重要难题。这方面国外、国内已开展一些工作,如哈佛大学的Fathom、百度的DeepBench、中科院计算所的BenchIp、NPUBenche等,很多还是侧重于整个软硬件系统性能的度量。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181129A1DGZX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券