近日,关于“MIT开发出跨越性专用芯片,功耗降低95%,手机也能运行神经网络”的文章刷遍了朋友圈。其中的技术是MIT Chandrakasan组发在今年ISSCC上的一篇论文。对于我们这样喜欢打破沙锅问到底的技术人员来看,看朋友圈的科技媒体文章犹如隔靴搔痒,于是找来了今年的ISSCC论文仔细阅读,这里把具体分析与大家一起分享。
首先上总体评价:论文是好论文,技术是具有独创性的好技术,中ISSCC名至实归,但是离工业界大规模应用还有一定距离。
背景
报道中的“跨越性”AI芯片事实上是发表于ISSCC 2018的论文,标题为《Conv-RAM: An Energy-Efficient SRAM with Embedded Convolution Computation for Low-Power CNN-Based Machine Learning Applications》,具体的Session是31-Computation in Memory for Machine Learning。顾名思义,该Session主要讨论的是如何在机器学习应用中直接使用内存内计算去改善性能和能效比。再经过数年的发展后,机器学习加速芯片社区基本都认识到了内存访问是性能的瓶颈,因此想方设法想要把内存访问造成的性能损失给优化掉,而内存内计算就是一种方法。事实上,一旦做到内存内计算,就已经超越了传统的冯诺伊曼计算机架构,可以说是影响深远。因此,今年ISSCC专门为Computation in Memory for Machine Learning开了一个Session。
本文的作者来自MIT Anantha Chandrakasan组。Anantha Chandrakasan在芯片领域可谓是鼎鼎大名,是数字电路经典教科书《Digital Integrated Circuits: A Design Perspective》的作者之一,同时也是低功耗数字电路设计、UWB系统等多个领域的先驱者,基本每年Chandrakasan组在ISSCC都会至少有一篇论文发表。
论文首先开宗明义,指出目前CNN加速芯片中,内存访问已经成为性能瓶颈,其能量消耗远大于用于计算的单元。
为了降低内存访问能耗,可以在CNN中使用1-bit权重,并且根据相关论文1-bit权重在AlexNet上能实现还不错的效果。所以,本论文也将会使用1-bit权重,具体地说,CNN输入是高精度数字,而权重则是binary(-1或1)。这里需要提醒读者的是,虽然1-bit在一些场合可以实现不错的效果,但是选择使用1-bit作为权重也大大限制了论文中描述架构的灵活性,因为1-bit权重目前使用的场合毕竟还比较有限。
如果做一些数学变换,卷积输出实际上是输入的加权平均。所以该论文使用Multiplication-And-Average (MAV)操作来实现内存内计算。
Conv-SRAM与MAV具体实现
Conv-SRAM的具体实现如下图所示:权重(1-bit)储存在SRAM中,输入数据(7-bit数字信号)经过DAC成为模拟信号,而根据SRAM中的对应权重,DAC的输出在模拟域被乘以1或者-1,然后在模拟域做平均,最后由ADC读出成为数字信号,这个操作即MAV。
这么做能实现几个特点:首先,这里不再有明显的“读写内存”的动作,因为根据当前内存的内容(即权重)直接对输入数据进行操作,避免了之前的“从内存读数据——从内存读权重——权重与数据相乘——结果存回内存”的冯诺伊曼式计算过程。当然,不用读写内存这件事从另一个角度看是因为计算全部是在模拟域完成,做模拟信号处理的时候不使用冯诺伊曼式的处理模型本来就很常见。第二个特点是,因为CNN中输入数据是被带不同权重的卷积核复用的,因此一组输入数据可以广播给多组不同卷积核做并行处理。
而接下来的MAV则是Conv-RAM的核心操作。熟悉混合信号电路的朋友们对于这一些操作应当相当熟悉,因为在经典的ADC和DAC中经常会用这些。具体来说,由于乘法的权重是1-bit(1或-1),因此可以简单地用一个开关加差分线来控制,如果是权重是1就让差分线一边的电容充电到DAC输出值,反之则让差分线另一边充到这个值。平均也很简单,几条差分线简单地连到一起就是在电荷域做了平均了。
于是,使用Conv-SRAM和MAV,最终实现了在LeNET网络对MNIST数据集分类这个benchmark上60倍以的能效比提升,而分类精度降低了约2%。
产品化之困
看到这里,可以说这是一篇非常高质量的学术论文,首先它占了几个时下非常热门的关键词,包括“人工智能加速”,“内存内计算”,“非冯诺伊曼架构”等等,其次工作的质量也很不错,在ISSCC上发表也属名至实归。
然而,这样的结果想要真正实用化,还有许多的路要走。从论文的实测情况来看也是如此,芯片的benchmark是LeNET+MNIST,这样的benchmark可以说是仅仅验证了概念。具体地,我们认为该技术离实用化还需要克服的问题包括:
-1-bit权重的网络模型性能问题。目前低精度网络确实是深度学习领域最热门的研究方向之一,但是1-bit权重的网络模型到底在哪些地方可以使用却还没有定论可言。论文引用了之前的结果,1-bit权重的AlexNet可以实现准确率损失在1%左右,但是AlexNet是一个相对简单的网络并且在目前已经使用不多,而一些更复杂的主流网络如ResNet在深度较深之后,1-bit权重造成的计算精度损失经过多级网络层之间的层层传播累积最后可能会造成很大的误差。这一点如何克服我们尚未看到明确方向。
-如何规模化的问题。论文中的核心操作MAV全部是在模拟领域实现,因此每一路输入输出都需要精度较高的DAC和ADC模块。这些模块其实占据的芯片面积不小,因此规模化的成本代价不小;另外,模拟电路的本质注定了在规模化的时候会遇到设计流程上的困难,包括输入失调,模块间的参数失配等等,因此规模化的难度会远远大于数字电路。
-如果1-bit流行,真的需要这样的专用加速器吗?这其实也是个很重要的问题:假设我们能解决1-bit权重网络的精度问题,那么网络可能可以直接使用SoC上的ARM核直接运算,为何还要另外添加这样一个复杂的模块呢。
总结
《Conv-RAM:An Energy-Efficient SRAM with Embedded Convolution Computationfor Low-Power CNN-Based Machine Learning Applications》是一篇相当成功的论文,一方面概念非常新颖,另一方面在设计方面也属扎实。然而,其中的内存内计算方法想要实用化还有不少距离。