多级存储器与模拟内存内计算完美融合,人工智能边缘处理难题迎刃而解

机器学习和深度学习已成为我们生活中不可或缺的部分。利用自然语言处理(NLP)、图像分类和物体检测实现的人工智能(AI)应用已深度嵌入到我们使用的众多设备中。大多数AI应用通过云引擎即可出色地满足其用途,例如在Gmail中回复电子邮件时可以获得词汇预测。

虽然我们可以享受到这些AI应用带来的益处,但这种方法导致隐私、功耗、延时和成本等诸多因素面临挑战。如果有一个能够在数据来源处执行部分或全部计算(推断)的本地处理引擎,那么这些问题即可迎刃而解。传统数字神经网络的存储器功耗存在瓶颈,难以实现这一目标。为了解决这一问题,可以将多级存储器与模拟内存内计算方法结合使用,使处理引擎满足更低的毫瓦级(mW)到微瓦级(μW)功率要求,从而在网络边缘执行AI推断。

通过云引擎提供服务的AI应用面临的挑战

如果通过云引擎为AI应用提供服务,用户必须将一些数据以主动或被动方式上传到云,计算引擎在云中处理数据并提供预测,然后将预测结果发送给下游用户使用。下面概述了这一过程面临的挑战:

多级存储器与模拟内存内计算完美融合,人工智能边缘处理难题迎刃而解

图1:从边缘到云的数据传输

  1. 隐私问题:对于始终在线始终感知的设备,个人数据和/或机密信息在上传期间或在数据中心的保存期限内存在遭受滥用的风险。
  2. 不必要的功耗:如果每个数据位都传输到云,则硬件、无线电、传输装置以及云中不必要的计算都会消耗电能。
  3. 小批量推断的延时:如果数据来源于边缘,有时至少需要一秒才能收到云系统的响应。当延时超过100毫秒时,人们便有明显感知,造成反响不佳的用户体验。
  4. 数据经济需要创造价值:传感器随处可见,价格低廉;但它们会产生大量数据。将每个数据位都上传到云进行处理并不划算。

要使用本地处理引擎解决这些挑战,必须首先针对目标用例利用指定数据集对执行推断运算的神经网络进行训练。这通常需要高性能计算(和存储器)资源以及浮点算数运算。因此,机器学习解决方案的训练部分仍需在公共或私有云(或本地GPU、CPU和FPGA Farm)上实现,同时结合数据集来生成最佳神经网络模型。神经网络模型的推断运算不需要反向传播,因此在该模型准备就绪之后,可利用小型计算引擎针对本地硬件进行深度优化。推断引擎通常需要大量乘-累加(MAC)引擎,随后是激活层(例如修正线性单元(ReLU)、Sigmoid函数或双曲正切函数,具体取决于神经网络模型复杂度)以及各层之间的池化层。

大多数神经网络模型需要大量MAC运算。例如,即使是相对较小的“1.0 MobileNet-224”模型,也有420万个参数(权重),执行一次推断需要多达5.69亿次的MAC运算。此类模型中的大多数都由MAC运算主导,因此这里的重点是机器学习计算的运算部分,同时还要寻找机会来创建更好的解决方案。下面的图2展示了一个简单的完全连接型两层网络。输入神经元(数据)通过第一层权重处理。第一层的输出神经元通过第二层权重处理,并提供预测(例如,模型能否在指定图像中找到猫脸)。这些神经网络模型使用“点积”运算计算每层中的每个神经元,如下面的公式所示:

多级存储器与模拟内存内计算完美融合,人工智能边缘处理难题迎刃而解

Layer 1 第1层
Layer 2 第2层
L1 Input Neurons (e.g. Image Pixels) 第1层输入神经元(例如图像像素)
L2 Output Neurons 第2层输出神经元

图2:完全连接的两层神经网络

在数字神经网络中,权重和输入数据存储在DRAM/SRAM中。权重和输入数据需要移至某个MAC引擎旁以进行推断。根据下图,采用这种方法后,大部分功耗都来源于获取模型参数以及将数据输入到实际发生MAC运算的ALU。从能量角度来看,使用数字逻辑门的典型MAC运算消耗约250 fJ的能量,但在数据传输期间消耗的能量超过计算本身两个数量级,达到50皮焦(pJ)到100 pJ的范围。公平地说,很多设计技巧可以最大程度减少存储器到ALU的数据传输,但整个数字方案仍受冯·诺依曼架构的限制。这就意味着,有大量的机会可以减少功率浪费。如果执行MAC运算的能耗可以从约100 pJ减少到若干分之几pJ,将会怎样呢?

消除存储器瓶颈同时降低功耗

如果存储器本身可用来消除之前的存储器瓶颈,则在边缘执行推断相关的运算就成为可行方案。使用内存内计算方法可以最大程度地减少必须移动的数据量。这反过来也会消除数据传输期间浪费的能源。闪存单元运行时产生的有功功率消耗较低,在待机模式下几乎不消耗能量,因此可以进一步降低能耗。

多级存储器与模拟内存内计算完美融合,人工智能边缘处理难题迎刃而解

Global Buffer 全局缓冲器
Normalized Energy Cost 标准化能量消耗
NoC: 200-1000 PEs NoC:200-1000 PE
Buffer 缓冲器
1 × Reference 1×参考值

图3:机器学习计算中的存储器瓶颈

来源:Y.-H. Chen、J. Emer和V. Sze于2016国际计算机体系结构研讨会发表的“Eyeriss: A Spatial Architecture for Energy-Efficient Dataflow for Convolutional Neural Networks”。

该方法的一个示例是Microchip子公司Silicon Storage Technology(SST)的memBrain™技术。该解决方案依托于SST的SuperFlash®存储器技术,这项技术已成为适用于单片机和智能卡应用的多级存储器的公认标准。这种解决方案内置一个内存内计算架构,允许在存储权重的位置完成计算。权重没有数据移动,只有输入数据需要从输入传感器(例如摄像头和麦克风)移动到存储器阵列中,因此消除了MAC计算中的存储器瓶颈。

这种存储器概念基于两大基本原理:(a)晶体管的模拟电流响应基于其阈值电压(Vt)和输入数据,(b)基尔霍夫电流定律,即在某个点交汇的多个导体网络中,电流的代数和为零。了解这种多级存储器架构中的基本非易失性存储器(NVM)位单元也十分重要。下图(图4)是两个ESF3(第3代嵌入式SuperFlash)位单元,带有共用的擦除门(EG)和源线(SL)。每个位单元有五个终端:控制门(CG)、工作线(WL)、擦除门(EG)、源线(SL)和位线(BL)。通过向EG施加高电压执行位单元的擦除操作。通过向WL、CG、BL和SL施加高/低电压偏置信号执行编程操作。通过向WL、CG、BL和SL施加低电压偏置信号执行读操作。

多级存储器与模拟内存内计算完美融合,人工智能边缘处理难题迎刃而解