机器学习和深度学习已成为我们生活中不可或缺的部分。利用自然语言处理(NLP)、图像分类和物体检测实现的人工智能(AI)应用已深度嵌入到我们使用的众多设备中。大多数AI应用通过云引擎即可出色地满足其用途,例如在Gmail中回复电子邮件时可以获得词汇预测。虽然我们可以享受到这些AI应用带来的益处,但这种方法导致隐私、功耗、延时和成本等诸多因素面临挑战。如果有一个能够在数据来源处执行部分或全部计算(推断)的本地处理引擎,那么这些问题即可迎刃而解。传统数字神经网络的存储器功耗存在瓶颈,难以实现这一目标。为了解决这一问题,可以将多级存储器与模拟内存内计算方法结合使用,使处理引擎满足更低的毫瓦级(mW)到微瓦级(μW)功率要求,从而在网络边缘执行AI推断。通过云引擎提供服务的AI应用面临的挑战如果通过云引擎为AI应用提供服务,用户必须将一些数据以主动或被动方式上传到云,计算引擎在云中处理数据并提供预测,然后将预测结果发送给下游用户使用。下面概述了这一过程面临的挑战:
1.隐私问题:对于始终在线始终感知的设备,个人数据和/或机密信息在上传期间或在数据中心的保存期限内存在遭受滥用的风险。2.不必要的功耗:如果每个数据位都传输到云,则硬件、无线电、传输装置以及云中不必要的计算都会消耗电能。3.[size=21.0819px]小批量推断的延时:如果数据来源于边缘,有时至少需要一秒才能收到云系统的响应。当延时超过100毫秒时,人们便有明显感知,造成反响不佳的用户体验。4.[size=21.0819px]数据经济需要创造价值:传感器随处可见,价格低廉;但它们会产生大量数据。将每个数据位都上传到云进行处理并不划算。要使用本地处理引擎解决这些挑战,必须首先针对目标用例利用指定数据集对执行推断运算的神经网络进行训练。这通常需要高性能计算(和存储器)资源以及浮点算数运算。因此,机器学习解决方案的训练部分仍需在公共或私有云(或本地GPU、CPU和FPGA Farm)上实现,同时结合数据集来生成最佳神经网络模型。神经网络模型的推断运算不需要反向传播,因此在该模型准备就绪之后,可利用小型计算引擎针对本地硬件进行深度优化。推断引擎通常需要大量乘-累加(MAC)引擎,随后是激活层(例如修正线性单元(ReLU)、Sigmoid函数或双曲正切函数,具体取决于神经网络模型复杂度)以及各层之间的池化层。大多数神经网络模型需要大量MAC运算。例如,即使是相对较小的“1.0 MobileNet-224”模型,也有420万个参数(权重),执行一次推断需要多达5.69亿次的MAC运算。此类模型中的大多数都由MAC运算主导,因此这里的重点是机器学习计算的运算部分,同时还要寻找机会来创建更好的解决方案。下面的图2展示了一个简单的完全连接型两层网络。输入神经元(数据)通过第一层权重处理。第一层的输出神经元通过第二层权重处理,并提供预测(例如,模型能否在指定图像中找到猫脸)。这些神经网络模型使用“点积”运算计算每层中的每个神经元,如下面的公式所示:(为简单起见,公式中省略了“偏差”项)。
在数字神经网络中,权重和输入数据存储在DRAM/SRAM中。权重和输入数据需要移至某个MAC引擎旁以进行推断。根据下图,采用这种方法后,大部分功耗都来源于获取模型参数以及将数据输入到实际发生MAC运算的ALU。从能量角度来看,使用数字逻辑门的典型MAC运算消耗约250 fJ的能量,但在数据传输期间消耗的能量超过计算本身两个数量级,达到50皮焦(pJ)到100 pJ的范围。公平地说,很多设计技巧可以最大程度减少存储器到ALU的数据传输,但整个数字方案仍受冯·诺依曼架构的限制。这就意味 |