本文来自微信公众号“半导纵横”,由半导纵横综合整理。
我们的世界是模拟的。使用模拟器件进行模拟计算是处理世界最自然、最有效的方式,但存在准确性问题。数字设备更精确,但它们需要大量能量来完成工作。事实上,如此多的能源消耗,考虑到为未来提供动力所需的数据量,它是不可持续的。那么,解决方案是什么?
美国南加州大学谢明与计算机工程系Arthur B.Freeman讲座教授J.Joshua Yang及其团队在开发一种电路架构方面处于领先地位,该架构使低精度模拟设备能够执行高精度计算任务。
“与数字方法相比,这具有更高的效率和相似的精度,”Yang说。
该研究结果于本周四发表在《科学》杂志上,该杂志由Yang的学生(Wenhao Song等人)和南加州大学的同事(Mike Chen和Peter Beerel),以及来自Tetramem Inc.(Glenn Ge,胡苗等人),麻省大学阿默斯特分校(Qiangfei Xia)和空军研究实验室(Mark Barnell和Qing Wu)的合作者共同撰写。
提高精度的关键,加上保持效率水平,是Yang和团队多年来一直在努力做的事情:共同设计新兴的存储器件、架构和算法。他们使用电阻随机存取存储器(RRAM)来演示他们的新想法,它适用于任何基于电阻的存储设备,包括相变存储器(PCM)、铁电RAM(FeRAM)和磁RAM(MRAM)。这种模拟存储器件允许计算机以高能效和高吞吐量处理存储器中的大量信息。新设计的秘诀在于“使用多个器件的加权和来表示一个数字,其中随后的编程器件用于补偿先前的编程错误,”该论文指出。通过忆阻器片上系统,通过实验展示了用于多种科学计算任务的高精度解决方案,同时保持了与传统数字方法相比的巨大功率效率优势。
正如Yang所指出的,使用更多的忆阻器来表示一个数字不可避免地会增加所需的忆阻器数量,幸运的是,考虑到忆阻器固有的高可扩展性,这是负担得起的。毕竟,“天下没有免费的午餐,”他说:“关键是,原则上,使用我们的方法,即使是模拟计算,您也可以获得所需的高精度。”
这项研究进一步巩固了Yang和他的团队利用Tetramem制造的芯片取得的成果,Tetramem是一家由Yang和他的一些合著者(胡苗,夏强飞和Glenn Ge)共同创立的初创公司,旨在将人工智能加速技术商业化。根据Yang的说法,神经处理单元(NPU)芯片在迄今为止所有类型的已知存储技术中具有最高的器件精度,即11位/器件。2023年3月发表在《自然》杂志上的一篇论文中描述了使用该芯片观察到的技术飞跃。器件级的这种进步为神经网络和机器学习推理中的应用带来了巨大的希望。然而,它们仍然无法满足科学计算和人工智能训练等任务的精度要求。为了弥合这一差距,电路和架构层面的创新势在必行,这正是这篇科学论文所展示的。
此外,这一发展的独特之处在于它不仅在学术环境中,而且在尖端的片上系统(SoC)设计中都得到了实际实施。这些SoC芯片集成了多个基于忆阻器的NPU,这是Tetramem实现的一项壮举,并通过在标准商业代工厂制造来实现。这一成就标志着一个重要的里程碑,也就是高效率和高精度的模拟计算解决方案的广泛商业化潜力。
多级存储器与模拟内存内计算的融合
机器学习和深度学习已成为我们生活中不可或缺的部分。利用自然语言处理(NLP)、图像分类和物体检测实现的人工智能(AI)应用已深度嵌入到我们使用的众多设备中。大多数AI应用通过云引擎即可出色地满足其用途,例如在Gmail中回复电子邮件时可以获得词汇预测。
虽然我们可以享受到这些AI应用带来的益处,但这种方法导致隐私、功耗、延时和成本等诸多因素面临挑战。如果有一个能够在数据来源处执行部分或全部计算的本地处理引擎,那么这些问题即可迎刃而解。传统数字神经网络的存储器功耗存在瓶颈,难以实现这一目标。为了解决这一问题,可以将多级存储器与模拟内存内计算方法结合使用,使处理引擎满足更低的毫瓦级(mW)到微瓦级(μW)功率要求,从而在网络边缘执行AI推断。
如果通过云引擎为AI应用提供服务,用户必须将一些数据以主动或被动方式上传到云,计算引擎在云中处理数据并提供预测,然后将预测结果发送给下游用户使用。
要使用本地处理引擎解决这些挑战,必须首先针对目标用例利用指定数据集对执行推断运算的神经网络进行训练。这通常需要高性能计算(和存储器)资源以及浮点算数运算。因此,机器学习解决方案的训练部分仍需在公共或私有云(或本地GPU、CPU和FPGA Farm)上实现,同时结合数据集来生成最佳神经网络模型。神经网络模型的推断运算不需要反向传播,因此在该模型准备就绪之后,可利用小型计算引擎针对本地硬件进行深度优化。推断引擎通常需要大量乘-累加(MAC)引擎,随后是激活层(例如修正线性单元(ReLU)、Sigmoid函数或双曲正切函数,具体取决于神经网络模型复杂度)以及各层之间的池化层。
大多数神经网络模型需要大量MAC运算。例如,即使是相对较小的“1.0 MobileNet-224”模型,也有420万个参数(权重),执行一次推断需要多达5.69亿次的MAC运算。此类模型中的大多数都由MAC运算主导,因此这里的重点是机器学习计算的运算部分,同时还要寻找机会来创建更好的解决方案。
在数字神经网络中,权重和输入数据存储在DRAM/SRAM中。权重和输入数据需要移至某个MAC引擎旁以进行推断。采用这种方法后,大部分功耗都来源于获取模型参数以及将数据输入到实际发生MAC运算的ALU。从能量角度来看,使用数字逻辑门的典型MAC运算消耗约250 fJ的能量,但在数据传输期间消耗的能量超过计算本身两个数量级,达到50皮焦(pJ)到100 pJ的范围。公平地说,很多设计技巧可以最大程度减少存储器到ALU的数据传输,但整个数字方案仍受冯·诺依曼架构的限制。这就意味着,有大量的机会可以减少功率浪费。如果执行MAC运算的能耗可以从约100 pJ减少到若干分之几pJ,将会怎样呢?
如果存储器本身可用来消除之前的存储器瓶颈,则在边缘执行推断相关的运算就成为可行方案。使用内存内计算方法可以最大程度地减少必须移动的数据量。这反过来也会消除数据传输期间浪费的能源。闪存单元运行时产生的有功功率消耗较低,在待机模式下几乎不消耗能量,因此可以进一步降低能耗。