近日,MIT 发表一篇论文,从架构(GPU、CPU、FPGA)到算法概述机器学习硬件研究中的机遇与挑战。在人工智能硬件火热的今天,这是一篇不可错过的综述性文章。点击阅读原文可下载此论文。
摘要:机器学习在从传感器每天收集的大量数据中提取有用信息上发挥着非常重要的作用。在一些应用上,目的是为了分析并理解数据,从而辨清发展趋势(例如,监控、便携式/穿戴式电子设备)。在其他应用中,分析数据的目的是为了能够基于数据快速作出应对(例如,机器人/无人机、自动驾驶汽车、物联网)。对这些应用而言,出于对隐私、安全的考虑,再加上通信带宽的限制,在传感器附近的本地嵌入式处理要比上传到云更好。然而,在传感器端的处理有能耗与成本的限制,还有生产能力与准确率的要求。此外,也需要适应性,以便于传感器适应于不同的应用或环境(例如,在分类器上升级权重与模型)。在许多应用中,机器学习总是涉及到将输入数据转换到更高维度的空间,这伴随着可编程权重、增加数据传输以及最终的能量消耗方面的问题。在此论文中,我们将探讨如何在各种级别的硬件设计上解决这些问题:架构、硬件友好的算法、混合信号线路和高级技术(包括内存与传感器)。
一、 导语
现在是大数据时代。过去两年创造的数据要多于人类历史上所创造的所有数据。这主要是由于传感器(2013 年平均为 100 亿个,预期到 2020 年达到 1 万亿个)和连接设备(2016 年为 64 亿个,预期在 2020 年达到 208 亿个)的使用。这些传感器和设备每年生成数百泽字节(zatabyte)的数据,每秒生成拍字节(petabyte)的数据。
我们需要机器学习从这些数据中提取有用的、可理想地实施的信息。分析数据所需的大量数据分析经常是在云中做的。然而,在数据生成量与生成速度如此大的情况下,再加上通信的高能耗和宽带的限制,在传感器附近本地完成分析的需求越来越大,而非将原始数据发送到云中。在这些边缘地带嵌入机器学习也解决了对隐私、潜在安全性的担忧。
二、应用
从多媒体到医疗领域(medical space),许多应用都能从嵌入机器学习中受益。我们会提供几个研究领域的样本;不过,这篇论文主要关注的是计算机视觉,特别是图像分类,作为推进案例。
图 1:图像分类
A.计算机视觉
视频可能是最大的大数据。约占今天互联网流量的 70%。比如,全世界每天收集起来、需要审查的视频达 8 亿小时。在许多应用(比如,测量商店、交通模式下的等待时间)中,使用计算机视觉从图像传感器上(而不是云端)的视频中提取有意义的信息是极好的,能减少通信成本。就其他一些应用(比如自动驾驶车辆、无人机导航和机器人技术)来说,会需要本地化处理,因为依赖云端会有很大安全风险,还会有延迟的问题。不过,视频包括大量数据,处理起来,计算会很复杂,因此,分析视频的低成本硬件就成了让这些应用得以实现的关键。
在计算机视觉方面,有许多不同的人工智能任务。本文聚焦图像分类(如表一所示),有图像,任务就是判定图像目标类别。
B. 语音识别
语音识别显著改善了人类与设备的互动,比如智能手机。尽管目前绝大多数应用程序,比如苹果 Siri 和亚马逊的 Alexa 语音服务的处理位于云端,但是,在设备上面执行识别任务更理想,因为可以减少延迟和对连接的依赖,并且能增强隐私。语音识别是实现机器翻译、自然语言处理等很多其他人工智能任务的第一步。人们在研究用于语音识别的低功率硬件。
C. 医学
临床医学非常看重对病人的监测,收集长期数据帮助侦测/诊断各种疾病或者监督治疗。比如,持续的 ECG 或 EEG 信号监测将有助于识别心血管疾病,检测癫痫患者的发作。在许多情况下,这些设备要么是穿戴式的,要么是可移植的,因此,能耗必须维持在最低。所以,需要探索使用嵌入机器学习提取有意义的生理信号进行本地化处理的办法。
三、机器学习基础
一个典型机器学习的推论流程可以分为两步(如图 2):特征提取和分类。有些方法,比如深度神经网络(DNN)就模糊了步骤之间的差别。
图 2:推理流程
A. 特征提取
特征提取是将原始数据转化为对给定任务有意义的输入。传统意义上,特征提取是通过该领域的专家手工进行标注而设计的。例如,计算机视觉中的对象识别就是根据观察到人类视觉是对图像边缘(如梯度)具有敏感性而设计的。因此,许多众所周知的计算机视觉算法 Histogram of Oriented Gradients (HOG) 和 Scale Invariant Feature Transform (SIFT) 使用的就是基于图像梯度的特征。设计这些特征的挑战就是保证他们在过曝或噪点的情况下保持鲁棒性。
B. 分类算法
特征提取的输出由向量表示,并且用分类器将这个过程映射到一个得分上。根据应用,分类权重可以和阀值比较来决定对象是否是当前的,或者也可以和其他得分相比较决定对象的分类。
分类算法技术上通常使用支持向量机(SVM)和 Softmax 回归等线性方法,还有核函数支持向量机(kernel-SVM)和 Adaboost 等非线性方法。
C. 深度神经网络(DNN)
深度神经网络不需要使用手工标注的特征,它能从数据中直接学习到这些特征,这一点和分类器中的权重分配很相似,这样整个系统就是从端到端训练。这种自动学习特征的方式在机器学习中很流行,我们称它为深度神经网络(DNN),也就是常说的深度学习。在很多任务上,深度神经网络通过将输入数据映射到高维空间,这种方式在很多任务上实现的精度要比手工提取的特征精确得多,然而,代价就是高度计算复杂性。
现存有许多深度神经网络架构(如卷积神经网络和循环神经网络等)。对于计算机视觉的应用,深度神经网络由多个卷积层(CONV)组成(如图 3)。每层将输入数据抽象到更高一层,称之为特征映射,这种更高层的抽象被提取以保留重要而独特的信息。现代深度神经网络能通过采用非常深的层级来实现优越的性能。
图 3:深度神经网络由多个卷积层组成,后面跟着全连接层
图.4 DNN 中某个卷积的计算
表 1 比较了现代深度神经网络和 20 世纪 90 年代流行的神经网络的层级数(深度)、滤波器的权重数量、操作数量(如 MACs)。如今的深度神经网络在计算和储存上都领先几个数量级
表 1:流行的 CNN 的总结 [21, 22, 25, 27, 28]. 基于 ImageNet top-5error 的精度测量 [19]
D. 任务的复杂性 VS 难度
当比较不同的机器学习方法时,重要的是考虑任务的难度。例如,使用 MNIST 数据集进行手写数字分类的任务就比使用 ImageNet 数据集进行 1000 类物品分类简单得多。所以我们预期分类器或网络的大小(如权重数量)和 MACs 的数量在更难的任务中要多一些,也因此需要更多的能。例如,LeNet-5 被设计用来进行数字分类,而 AlexNet、VGG-16,GoogLeNet 和 ResNet 被设计用于进行 1000 类图像的分类任务。
四、挑战
嵌入式机器学习的关键指标是精确度、能耗、吞吐量/延迟性以及成本。
机器学习算法的精确性要在充足的大型数据组上进行测量。有许多广泛使用、公开使用的数据组可供研究人员使用(比如,ImageNet)。
可编程性很重要,因为环境或应用变了后,权重也要更新。在 DNN 的案例中,处理器必须能够支持层数不同、滤波器以及通道大小不一的不同网络。
可编程性性的需求会增加数据计算和数据传送。更高的维度会增加生成的数据量,而且可编程性意味着需要读取并保存权重。这就对能效提出了挑战,因为数据传输要比计算更耗费成本。本文中,我们会讨论减少数据传输以最小化能耗的不同方法。
吞吐量取决于计算量,它也会随着数据维度的增加而增加。本文中,我们会讨论变换数据以减少所需操作数量的各种办法。
成本在于芯片上所需的存储量。本文中,我们会讨论减少存储成本的各种办法,在芯片面积缩减的同时维持低芯片外存储带宽。
最后,训练需要大量标签数据(特别是 DNNs)和计算(计算反向传播的多次迭代,判定权重值)。有人正在研究使用 CPU、GPU、 FPGA 和 ASIC 在云端进行训练。
不过,这超出了本文范围。目前,最先进的 DNNs 所耗费的能量比其他形式的嵌入处理(比如视频压缩)要高出几个数量级。我们必须利用多种硬件设计所带来的机遇,解决所有这些问题并减少能耗鸿沟。
五、 结构中的机遇
图 6:高度并行的计算范式
A. CPU 和 GPU 平台
CPU 和 GPU 使用时间架构(比如 SIMD 或 SIMT)来并行执行 MAC。所有的 ALU 都共享同一个控制和存储(寄存器文件)。在这些平台上,所有的分类都由一个矩阵乘法表征。深度神经网络中的卷积层也能够用 Toeplitz 矩阵映射到一个矩阵乘法上。有专为 CPU 和 GPU 设计的软件库能用来优化矩阵乘法。该矩阵乘法按照更高层上的几兆字节的顺序平铺到这些平台的存储层次结构上。
B. 加速器(Accelerators)
加速器提供了优化数据传输(比如数据流)以最小化来自昂贵的分级存储器体系(如图 7)访问。特别是,对于 DNNs,我们调查了采用了三种数据再使用形式的数据流(卷积、滤波器和图像)。我们采用了一种空间结构(图 6),每个 ALU 处理元素(PE)带有本地存储(大约 0.5-1.0KB) 以及一个共享存储器(全局缓冲器),近 100-500KB。全局缓冲器与芯片外存储器(比如 DRAM)通讯。可以在使用了一个 NoC 的 PEs 之间进行数据传输,以减少对全局缓冲器以及芯片外存储器的访问。三种类型的数据传输包括输入像素、滤波器权重和部分和(即像素和权重的乘积),它们被累积起来用于输出。
图 7. 分层级存储器和数据传输能耗
近期研究已经提出了一种 DNNs 加速方案,不过,很难直接比较因为实现和设计选择不同所导致的表现上的差异。图 8 可被用于分类现有的基于各自数据处理特征的 DNN 数据流:
图 8:DNNs 数据流
权重固定(Weight stationary,WS):在该 PE 上,权重存储在 register file 中,并且保持平稳,以尽量减少权重移动成本(图.7(a))。输入与局部和必须通过空间阵列和全局缓存。可看 [36-41] 中的例子。
输出固定(Output stationary,OS):在该 PE 上,输出存储在 register file 中,并且保持平稳,以尽量减少局部和的移动成本(图.7(b))。输入与权重必须通过空间阵列和全局缓存。
本地不重用(No local reuse,NLR):从能量((pJ/bit))的角度看虽然小的 register file 有效率,但是从区域((µm2 /bit))来说,它们的效率就不高了。为了最大化存储功用,同时最小化片外存储器带宽,没有将本地存储分配给 PE,而是将所有区域分配给全局缓冲区以增加其容量(图.7(c))。代价是会增加空间阵列上的流量及对于所有数据类型的全局缓冲。参见 [45-47] 中的例子。
行固定(Row stationary,RS):为了增加所有类型数据(权重、像素、局部和)的 reuse,提出了一个行固定的方法 [35]。一行滤波器卷积保持固定在一个 PE 内,利用 PE 发掘 1-D 的 reuse。多个 1-D 行被结合在空间阵列上去彻底利用卷积 reuse(图.9),这会减少访问全局缓冲区。不同的信道和滤波器中的多个 1-D 的行被映射到每个 PE,以此来减少局部和数据传输并分别的利用过滤器 reuse。最后,跨阵列多通道允许额外的图像和过滤器 reuse 使用全局缓冲。这个数据流展示在 [48] 中。
图.9 行固定数据流
在具有相同数量的 PE(256)、区域成本(area cost)和深度神经网络(AlexNet)的空间阵列上比较数据流。图 10 展示了每种方法的能耗。行固定法(The row stationary approach)比其他卷积层数据流处理方法要节能 1.4 倍到 2.5 倍,这还是基于所有数据类型都更节能的事实上考虑的。此外,启动芯片和关闭芯片的能量也考虑了进来。
图.10
六、算法与硬件联合设计中的机会
在修改机器学习算法以使它们对硬件更友好同时还维持准确度方面,研究界一直有相关的研究工作;其中尤其值得关注的焦点是在减少计算量、数据传输和存储要求方面。
A 降低精度
CPU 和 GPU 等可编程平台的默认大小通常是 32 或 64 位的浮点数表示。尽管这仍然是训练方面的情况,但在推理过程中,使用定点数表示(fixed-point representation)是可能的,这可以减少位宽(bitwidth),从而降低能源消耗和设备尺寸,并且还能增加吞吐量。当把权重和特征推至更低的位宽时,为了保持准确度,通常还需要再训练(retraining)。
在人工设计的方法中,位宽可以在不影响准确度的条件下大幅降低到 16 位以下。比如,在使用 HOG 的物体检测中,每 36 维特征向量仅需要每维度 9 位,而 SVM 的每个权重仅使用 4 位 [49];对于使用可变形组件模型(DPM/deformable parts model)[55] 的物体检测而言,每个特征向量仅需要 11 位,每个 SVM 权重仅需要 5 位 [51]。
类似地,对于 DNN 推理,加速器支持 16 位定点数是很常见的 [46,48]。在探索位宽对准确度的影响上有一些显著的研究工作 [52]。事实上,有报道称最新一款用于 DNN 的商业硬件支持 8 位整型运算 [53]。因为位宽可能会随层变化,研究者已经在探索使用这种位宽减少来实现硬件优化——相比于一个 16 位的定点的实现,他们得到了 2.56 倍的节能 [54] 或 2.24 倍的吞吐量增长 [55]。通过给网络进行更大的修改,有可能将权重 [56] 或权重及激活(activation)[57,58] 的位宽降低到 1 位,而在准确度上有所损失。硬件上 1 位权重的影响在 [59] 中有所探索。
B 稀疏性(Sparsity)
对于 SVM 分类,其权重可以被投射到一个基础上,从而使得结果得到的权重是稀疏的,乘法数量减少了 2 倍 [51](图 11)。对于特征提取而言,输入图像可以通过预处理被做得稀疏,可以实现 24% 的功耗减少 [49]。
图 11:基础投射(basis projection)后的稀疏权重 [51]
对于 DNN 而言,MAC 和权重的数量的减少可以通过一个被称为剪枝(pruning)的过程来移除权重而实现。[60] 首先探索了这个方面,其中对输出有最小影响的权重被移除了。在 [61] 中,剪枝被用在了现代 DNN 上来移除小权重。但是,移除权重并不一定会实现更低的功耗。因此,在 [62] 中,权重的移除方式是基于一个能量模型(energy model),从而可以直接最小化能量消耗。
[48, 51, 63, 64] 提出的专用硬件利用了稀疏权重来提升速度或减少能量消耗。在 Eyeriss [48] 中,处理元件被设计成:当输入为 0 时,直接跳过读取和 MAC,最后实现了 45% 的节能。在 [51] 中,通过使用专用硬件来规避(avoid)稀疏权重,能量和存储成本分别被减少了 43% 和 34%。
C. 压缩
数据的传输和存储在能耗和成本方面都是一个很重要的因素。特征提取可以得到稀疏的数据(比如 HOG 中的梯度和 DNN 中的 ReLU),而在分类中所使用的权重也可以通过剪枝稀疏化。这样所得到的结果是:压缩可以利用数据统计来减少数据传输和存储的成本。
研究者已经探索利用了多种形式的轻量级压缩来减少数据传输。无损压缩可以被用于减少流入和流出芯片的数据传输 [11, 54, 64]。在 [65] 中,简单游程长度编码(simple run-length coding)减少了多达 1.9 倍的带宽,这是在理论上的熵限制的 5%-10%。向量量化(vector quantization)等有损压缩也可被用于特征向量 [51] 和权重 [8, 12, 66],这样使得它们可以以较低的成本而存储在芯片上。一般而言,压缩/解压的成本是在几千 kgates 的量级上,具有最小的能量开销。在有损压缩的情况下,估计其对表现的准确度的影响是很重要的。
七、混合信号电路中的机会
大部分数据传输都发生在内存和处理元件(PE/processing element)以及传感器和处理元件之间。在这一章节,我们将讨论这可以如何通过混合设计的电路设计来解决。但是,电路的非理想因素(circuit non-idealities)也应该被考虑到算法设计中;这些电路可以从第六节中讨论的精度减少的算法中受益。除此之外,因为训练通常是通过数字(digital)的方式进行的,ADC 和 DAC 的开销应该在系统评估时被考虑进来。
尽管空间架构的改进让存储和计算的位置更近了(即集成到处理元件中),但要将计算和存储本身整合到一起,还需要一些努力。比如说,在 [67] 中,分类被嵌入到了 SRAM 中。特别地,其字线(WL/wordline)是由一个使用了一个 DAC 的 5 位特征向量驱动的,同时其位单元(bit-cells)存储了二元权重 ±1。位单元的电流实际上是特征向量的值和存储在位单元中的权重值的乘积;其来自列的电流被加到一起以对位线放电(BL 或 BLB/bitline)。然后一个比较器被用于比较结果得到的点积和一个阈值——特别是差分位线的符号阈值(sign thresholding)。因为位单元的变化,这可被认为是一个弱分类器,而且需要 boosting 来将这些弱分类器组合起来形成一个强分类器 [68]。这种方法比从 SRAM 进行 1 位权重读取要节能 12 倍。
最近的研究工作也提出了使用混合信号电路来减少 MAC 的计算成本。[69] 表明,使用开关电容器来执行 MAC 可以比数字电路能效更好,不管是在 ADC 还是 DAC 方面。因此,矩阵乘法可以像 [70] 提出的那样被整合到 ADC 中,其中用于 Adaboost 分类的乘法中最显著的部分是使用开关电容器以 8 位逐次逼近格式(8-bit successive approximation format)执行的。这在 [71] 中进行了扩展,使其不仅可以执行乘法,还能在模拟域(analog domain)上进行累加。据估计,3 位和 6 位就足以分别表征权重和输入向量了。这能让计算更接近传感器,并可以将 ADC 转换的数量减少 21 倍。
要进一步减少来自传感器的数据传输,[72] 提出在传感器的模拟域中执行整个卷积层(包括卷积、最大池化和量化)。类似地,在 [73] 中,整个 HOG 特征可以在模拟域中计算,可将传感器带宽减少 96.5%.
八、高级技术中的机遇
在此章节,我们将讨论如何使用高级技术取得上一章节所说的数据传输问题。在参考文献 [47] 和 [74] 中分别提到的使用 embedded DRAM (eDRAM) 和 Hyper Memory Cube (HMC) 这样的高级存储技术来减少 DNN 中权重的能量访问成本(energy access cost)。
在直接将乘法(multiplication)集成到高级非易失性存储上已经有了大量研究,使用他们作为电阻元件。具体执行乘法时,其中电导设为权重,电压作为输入,电流作为输出。其他工作就是把克希霍夫电流定律的电流值合计起来。在 [75] 中,忆阻器(memristor)被用于一个 16 位的点积运算的计算,其中 8 个忆阻器每个存储 2 位;每个忆阻器执行 1 位 X2 位的乘法计算,那么 16 位的输入需要 16 次循环来完成。在 [76] 中,ReRAM 用于计算 3 位输入和 4 位加权的乘积。与混合信号电路类似,其运算的精确都很有限,同时必须考虑把在 ADC 和 DAC 的转换开销(conversion overhead)计入总成本,特别是当在数字域中训练权重时。可以通过直接在模拟域中训练来避免转换开销,如 [77] 中制造的忆阻器阵列那样。
最后,将计算嵌入传感器本身或许具有可行性。对于从传感器读取数据的带宽占了大部分系统能耗的图像处理来说部分有用。比如,一个 ASP 传感器能被用于计算输入地图,随着压缩而以十倍的比例减少传感器带宽。一个输出梯度带宽也能减少计算和后续处理引擎的能耗。
九、手工提取的特征 VS 机器学习的特征
相比于机器学习的特征,如通过 DNN 学习的特征,手工提取特征的方法有更高的能量效率是以牺牲准确率为代价的。对于手工提取的特征来说,其计算量更少并且支持位宽减少。不仅如此,手工提取的方法需要更少的数据传输,因为特征的权重值不是必须的。两种方法的分类权重都是可程控的。图 12 中比较了 HOG 特征提取与 AlexNet 中卷积层、VGG-16 的卷积层的能量消耗,数据来源于在参考文献 [51] 和 [48] 中制作的 65nm 芯片上的性能表现。需要说明的是 HOG 特征提取与视频压缩(实时的高清视频每像素 1 纳焦)的能量消耗差不多,因此 HOG 特征是一个很好的基准来确定近传感器能量消耗的可接受值;但是,DNN 目前需要消耗比 HOG 多几个数量级的能量。我们希望在这篇论文中所强调的一些可以作为设计契机的地方将能够缩小两种方法之间的能量消耗差距。
图 12. 能量 VS 准确率:手工提取特征和机器学习特征之间能量对比准确率的权衡比较。
十、总结
机器学习是一个非常重要的研究领域,在各种级别的硬件设计的创新上有许多有潜力的应用与机遇。在设计过程中,权衡准确率、能耗、吞吐量与成本是非常重要的。
由于数据传送控制着能量消耗,最近的研究主要集中在维持准确率、吞吐量、成本的同时,减少数据传送。这意味着选择带有良好存储层级的架构,比如一个空间阵列(spatial array),以及开发在低成本存储层级上能增加数据重复使用的数据流。对算法与硬件进行联合设计,减少位宽精确度(bitwidth precision),增加稀疏(sparsity)与压缩,这些手段被用于最小化数据传输。有了混合信号线路设计和高级技术,通过将计算嵌入或接近传感器和存储,计算也就更接近数据源了。
我们也应该考虑在这些不同层级上的交互。例如,通过硬件友好的算法设计而实现的位宽减少可以通过使用混合信号电路和非易失性存储来减少精度上的处理。通过高级技术减少内存访问的成本,这能带来更节能的数据流。