中文 英语

重新思考机器学习的动力

要大幅降低机器学习所消耗的能量,需要的不仅仅是优化,还需要一些根本性的反思。

受欢迎程度

机器学习消耗的能量正在爆炸式增长,虽然在减少机器学习消耗的能量方面取得了进展,但模型大小和训练集的增长速度更快。

即使引进了先进的制造技术、专门的架构和优化技术的应用,这种趋势仍然令人不安。再加上边缘设备的爆炸式增长,这些设备正在增加越来越多的智能,很明显,必须发生一些戏剧性的事情。

正确的答案不是增加世界能源产量。而是更明智地使用我们所拥有的。行业必须开始认真对待机器学习应用程序消耗的总能量,这必须包括提出这样的问题:“这个结果值这么多能量消耗吗?”“这既是一个技术或商业问题,也是一个道德问题。

当今使用的绝大多数计算系统大量地借鉴了冯·诺依曼结构他们将计算和内存的概念分开。虽然这使得计算、优化设计和制造的模型非常灵活,但它有一个显著的缺点。进出计算核心的数据传输通常比计算本身消耗更多的能量(见图1)。如果将CPU缓存消耗的能量加到I/O功率中(其中大部分是与内存的通信),再将其加到内存子系统的I/O另一端,再加上内存本身消耗的能量,那么内存消耗的总能量就会淹没用于计算的能量。虽然这是针对CPU的,但图形处理器和ML处理器的数字是类似的。

图1:服务器SoC的功耗。来源:AMD/Hot Chips 2019

图1:服务器SoC的功耗。来源:AMD/Hot Chips 2019

从短期来看,降低机器学习系统功耗的尝试集中在降低数据传输功率上,但从长期来看,我们需要考虑更根本的变化,比如合并计算和内存或改变它们的结构。也许我们可以从大脑中学到更多东西。它只消耗20W,而今天的同类机器消耗的数量级超过这个数字。

“生物学中的神经元在神经元内存储重量,”Michael Frank说Arteris IP.“当这些被转化为基于计算的神经网络的虚拟神经元时,权重存储在内存的某个地方,你必须移动它们。但是数据的移动比计算本身消耗更多的能量。对你的权重进行集中存储绝对不是一个好主意。你可能想要在计算单元之间涂上内存。”

有几种方法来看待这个问题。戈德温·马本(Godwin Maben)说:“硬件领域正在进行大量研究,Synopsys对此科学家。“我如何让内存接近计算?”不同类型的内存会带来不同的延迟惩罚,那么如何将计算和内存合并在一起来减少延迟呢?我必须坚持使用晶体管存储器吗?我们可以看看不同类型的基于压力的存储器,或者MEMS吗?我应该使用典型的6T内存还是1T内存?很多事情都在进行中,但我们还没有得出任何结论。”

如今,大多数工作都是在物理上使内存更接近计算,并在可能的情况下在包中放置足够的内存,从而降低I/O成本。Untether AI高级产品总监Philip Lewer表示:“通过将AI推理处理元素放置在分布式内存旁边,我们看到我们的处理器系列与市场上的冯·诺依曼架构处理器相比,功耗降低了6倍。”“我们认为,与冯-诺伊曼架构相比,内存架构专注于最小化数据移动,对训练和推理都有好处,特别是当硅供应商继续转向更小的处理几何图形时。”

但仅凭这一点是不够的。我们需要数量级的改进。

模拟与数字
虽然我们生活在一个模拟的世界,但今天一切都是用数字处理的。Aspinity战略和技术营销总监马西·韦恩斯坦(Marcie Weinstein)说:“我们把它带入系统,立即数字化,然后按照我们的想法去做。”“这包括任何类型的智能、机器学习、人工智能以及我们需要弄清楚的其他任何东西。一旦你已经将数据数字化,我们就会这样做。但我们生活在一个模拟的世界里,物理上发生的一切都是模拟的。如果我们把一些智能带入模拟,这样我们就可以更早地决定,在数字化之前,它是否值得数字化并送到下一个阶段?在某些情况下,系统的整个机器学习工作负载可以转移到模拟领域。”

思考模拟解决方案意味着从根本上重新思考架构。Mythic公司负责产品和业务开发的高级副总裁蒂姆·韦林(Tim Vehling)说:“模拟的一个基本理念是,你实际上可以在存储单元本身进行计算。”“你实际上消除了整个内存移动问题,因此电量大幅下降。当模拟开始发挥作用时,您可以获得高效的计算和很少的数据移动。在内存技术中使用模拟计算,它实际上比数字计算的功耗高几个数量级。”

Arteris的弗兰克对此表示赞同。“神经网络的真正方法是模拟,因为数字计算依赖于你的信号与热噪声kT有良好的信噪距离。如果你看看我们大脑的运作方式,我们的大脑运作方式更接近kT。大脑中的所有电压都远低于我们在晶体管中使用的电压,而eVolt的1/40相当于室温。”

一种永远离开的心态
家庭和工业中智能设备的数量正在迅速增加,许多人没有考虑到这些设备的功耗——特别是如果它们没有电池供电的话。Synopsys公司的科学家亚历山大·韦克菲尔德说:“如果你环顾一下房子,看看有多少东西实际上是在待机模式下插在墙上的,它们都消耗5或10瓦的电量。”“有很多方法可以解决这个问题,因为这是一个技术含量非常低的问题。但这个问题一直没有解决,因为一个人的能源成本很低。我家里有20个边缘设备,它们都在等待唤醒词,消耗电能,但它们单独使用的电量并不多。当你在全球拥有200亿或1000亿这样的东西时,总影响是相当大的。”

也许有更多的灵感可以从大脑中获得。Aspinity的Weinstein说:“有时候考虑一种更级联的机器学习方法是有益的——在你不得不使用更复杂的处理器之前,你可以先了解一些数据。”“例如,在语音识别系统中,也许你想先知道有人的声音。当狗叫时,唤醒词引擎不需要听唤醒词。只有当真的有人说话时,它才需要倾听唤醒词。如果芯片可以保持一切正常,在非常低的功率下,检测到我们发出了声音,那么下一个系统就会醒来,看看他们是否说了Siri或Alexa。这是一种更有效地使用系统内处理器的方式。”

这是另一种划分问题。Expedera的首席科学家Sharad Chole说:“我们需要更多地考虑一个模型管道,而不是在传感器数据上使用单一的神经网络进行处理。”“多个神经网络处理一帧视频或一张图像——用例很有趣。你可能会分割图像,你可能会发现有趣的区域,你可能会发现一些东西,你可能会模糊背景。这些用例很有趣,而且还在不断增长。它们受到可以部署的应用程序的限制,以及市场细分可能推动创新的限制。这些都是边缘人工智能将会增长的根本原因。这是传感器和使用模型管道的应用程序的分辨率,将它们组合成更连贯或更复杂的应用体验。”

不管这些设备是插在墙上还是用电池供电。温斯坦说:“有一个比有多少电池被扔进垃圾填埋场更大的问题。”“这也与我们使用了多少能源有关。实施其中一些技术,提高插在墙上的设备的效率,将变得非常重要,因为无论以何种形式出现,我们都会耗尽能源。”

如何准确
级联处理管道的另一个方面可能与精度有关。“我如何在推理引擎中使用尽可能小的模型来做出决策,并在准确性和所需能量之间进行权衡?Synopsys的Maben问道。“由此推断,你不需要总是100%的准确性。如果我选择在推理中损失1%的准确性,我可以节省电力。在一个应用程序中,精确度从95%下降到94%,已经证明可以节省70%以上的电力或能源。1%的准确率是好是坏?这取决于应用程序。这1%的准确率损失对自动驾驶汽车来说是非常糟糕的,但对我来说,在向Alexa提问时,1%的准确率应该没问题。”

如今,模型尺寸和精度往往是齐头并进的。Mythic公司的veling说:“如果动力是你最关心的问题,你可以选择运行一个较小的模型,或者一个不太准确的模型。“你可以精简模型,让它们适合更小的内存块,或者你可以买一个功能不那么强大的芯片,但也许它能得到你想要的结果。有趣的是,你总是听到基准测试、每秒帧数、延迟等等,但最终的问题是:这个模型能解决我的问题吗?然后问题就来了,它是否有我需要的帧率。它有我需要的准确性吗?也许准确率不需要达到前1%。也许它可以退化一点,所以我可以运行一个更小的模型,或者我可以运行一个更低功率的模型。在边缘市场,你可以在模型尺寸、模型精度、模型帧率等方面进行权衡。”

但是模型越来越大。“神经网络的总体趋势是更大的网络,更多的参数,”HLS平台总监Russ Klein说西门子EDA.“这完全是错误的做法。更大的网络确实能略微提高准确度,但回报却在递减。一个模型可能拥有三倍的参数数量,而精度却提高了几分之一。”

数据精度问题也有影响。Klein补充道:“64位浮点乘法运算是处理器中最耗能的运算之一。”使用整数数学,通常是在定点数字表示上,使用等效浮点运算大约一半的能量。使用较小的数字表示有很多好处。在乘法运算中使用的能量与操作数大小的平方成正比。因此,一个8位整数乘法所消耗的能量将少于64位浮点乘法的1%。如果权重和特征可以减少到8位或16位定点数字,不仅操作消耗更少的能量,而且数据的存储和移动变得更节能和更快(即每个总线周期移动更多的值)。”

如何将其转化为具有无限精度但可变性的模拟?温斯坦说:“我们处理的是非常精确的模拟信号。“我们在观察模拟信号时不会丢失任何信息,就像你把它转换成数字信号时一样。但模拟确实会受到可变性的影响。我们克服这个问题的方法与我们编程参数和配置电路元件的方法完全相同。我们能够削减小的制造变异性带来的变异性。这在模拟和CMOS制造中是很好的分类。所以我们可以给芯片编程,我们可以调整芯片,这样在数百万个芯片中,我们最终得到了提供相同答案的芯片。”

忘记数据流
今天的机器学习系统和大脑之间至少还有一个根本区别。“大脑使用尖峰神经网络,”弗兰克说。“它们的模型相对简单,但它们对知识进行了大量高精度的表示。它们使用更少的能量,并且需要更少的系数来表示信息。”

尖峰神经网络是另一种非必需的系统。“使用峰值神经网络,你只在一个非常小的时间组件上执行,在那里你进行处理,然后回去睡觉,”Vehling说。“这是一种非常节能的方法。与经典架构相结合的spike神经网络处理器可能会非常强大。当有人经过时,传感器就会被唤醒。然后它可能会试图识别一个人或探测一个人。该传感器与spike神经网络耦合,用于检测帧中的人。然后级联,唤醒下一层处理。”

这有几种途径。“峰值神经网络是自适应的,”弗兰克说。“他们可以在相同的结构中继续学习。它还表明,你不必用整个大脑来实现一组特定的功能,因为我们并没有使用整个大脑来观察和识别某些模式。我们只使用了大脑中很小的一部分。”

虽然讨论的大部分内容都集中在边缘推理上,但有许多经验教训可以并且应该反馈给模型开发人员。Klein说:“知识蒸馏是一种很有前途的技术,可以在不影响精度的情况下显著减少模型大小。”“但网络架构本身必须改变,重点是更小的网络。减少参数数据库的大小会影响推理处理中所有主要的电力消费者和性能限制因素。”

结论
ML设备的功耗应该让每个人都感到害怕。这既是一种道德责任,也是一种技术责任。为了解决其中一些问题,该行业必须走出舒适区,开始寻找全新的架构。

芯片和系统设计是由可能实现的兴奋所驱动的,但这必须由世界从这些技术中获得的价值来调和,而不仅仅是从中可以赚到多少钱。

相关的
近阈值计算得到提升
为什么许多前沿设计开始看起来像接近门槛的设计。
芯片中人工智能的新用途
ML/DL增加了边缘设计的复杂性,但它也增加了提高功率和性能的新选项。
提炼四个DAC主题演讲的精髓
共同的主题出现了,但从商业机会到对环境的关注,看待问题的不同方式也出现了。



留下回复


(注:此名称将公开显示)

Baidu