IBM透露AI芯片采用8位浮点计算的突破性研究成果
国际电子设备会议(IEDM)和蒙特利尔神经信息处理系统会议(NeurlPS)在旧金山正式举行,这对于那些希望了解上人工智能研发进展的人来说是一个很好的机会。
IBM研究人员在活动上详细介绍了数字和模拟AI芯片的AI新方法。IBM称,它的数字AI芯片“首次采用8位浮点数成功训练了深度神经网络(DNN),同时在一系列深度学习模型和数据集上完全保持了准确性。”
另外,IBM研究人员在IEDM大会上展示了一个模拟AI芯片,该芯片采用了8位精度的内存乘法以及相变内存。
IBM副总裁、Research-Almaden实验室主管Jeffrey Welser说:“我们确实认为我们正在做的所有这些工作——例如试图降低精度以使性能上升、功率可能下降——对于继续推进AI非常重要。”
Weiser说,这是至关重要的,因为世界正在从“狭窄的人工智能”(例如使用人工智能在互联网上识别一只猫)转变为“更广义的人工智能”(例如我们分析医学图像,或者我们想要能够将文本和图像信息整合在一起以提出解决方案)。”
他补充说:“所有这些更广泛的问题需要更大规模的神经网络、更大的数据集和多模态数据集......[为此]我们需要改变架构和硬件来实现这一切。”
Weiser将IBM本周发布的两篇论文称为“一系列有趣的进展”,让该行业走向[更广义的AI]未来。
Linley Gwennap总裁兼首席分析师Linley Gwennap表示:“机器学习继续迅速发展,现有硬件无法有效地应对研究人员构建的最大神经网络,因此他们正在寻找各种新方法来提高性能和效率。”
Gwennap补充道,这些新发展将给硬件厂商带来巨大压力,因为芯片公司“必须灵活、快速地在这个混乱的市场中生存下来”。
人工智能的GPU时代已经结束
IBM大胆预测,GPU在AI中的主导地位正在结束。
Welser说:“GPU能够为图形处理进行大量的并行矩阵乘法运算,这种矩阵乘法碰巧与神经网络所需的完全相同。“在他看来,“这有点巧合,但非常重要。因为没有那些[GPU],我们永远无法达到我们今天在AI性能方面已经达到的性能水平。”但是,Welser补充说,”随着我们已经掌握了更关于如何实现人工智能的知识,我们也在寻找设计出更高效硬件的方法和途径。”
降低精度
提高效率的一个途径是降低AI处理所需的精度。
Welser解释说:“几年前,我们都开始意识到的一个大方向是,虽然我们习惯于非常精确的计算——32位计算浮点是非常标准的,甚至是64位,对于非常精确的计算来说计算浮点要翻一番——但这在AI中却不一定是很重要的。”
他强调说,在AI中“你对于神经网络只关心当你展示一个图像或单词时是否得到了正确的答案。当我们提问这是猫还是狗时,它说这是一只猫。如果答案正确,你就不会关心这背后所有计算是什么样的。”
理想情况下,AI应该模仿人眼。Welser说:“如果你透过一个有雾的窗户看到有人走在街上,这是一个低位的形象...但经常会说‘哦,那是我妈妈来了’。所以,只要你得到正确的答案,视觉精度是否合适就无关紧要了。”
这就解释了人工智能处理精度逐渐降低的趋势。
Welser继续说:“对于32位计算来说,我必须在32位上进行计算。如果我们可以在16位上计算,那基本上是计算能力的一半,或者可能是芯片面积的一半甚至更少。如果你可以降到8位或4位,那就更好了。所以,这是在面积、功率、性能和吞吐量方面的巨大胜利——关乎我们能够以多快的速度完成这一切。”
然而,Welser承认,“很长一段时间,我们认为我们必须坚持使用32位精度进行AI训练。这是没办法的事情。”
2015年,IBM Research公布了对AI模型训练和推理采用降低精度的方法,在一篇论文中描述了一种针对传统CMOS技术的新型数据流方法。IBM展示了使用16位精度训练的模型,与32位训练模型相比,精度没有损失。
从那时起,IBM观察到“精确度降低的方法很快被采纳为行业标准,16位训练和8位推理现在已经司空见惯,这促使初创公司和风险投资大量涌入,投身降低了精度的AI芯片。”尽管这一新兴趋势盛行,但由于人们需要保持模型的高精度,因此,小于16位的“训练”被认为是几乎不可能的。
他们是怎么做到的?
Welser说,IBM研究人员开发了一系列方法用于AI处理,从而让这变成可能。他说,例如“我们确实有一些部分是用8位做的,有些部分是用16位做的,不同部分运用不同的精度,所以在舍入的时候你不会损失精度,但是你不会有意这么做。”
换句话说,IBM团队所做的要比将8位计算应用于整个操作复杂得多。IBM做的是尝试如何将组合方法运用于这个过程的不同部分。
Welser证实:“是的,完全正确。例如,我们现在对所有权重更新过程采用8位浮点,但对于一些加法和累积过程仍然采用16位浮点。事实证明这非常重要,因为16位加法比16位乘法更容易,实际上以16位浮点的方式执行这个过程是有帮助的。”
正如Welser指出的,IBM工作的关键因素是“提出一种数据流架构,让数据非常顺畅地流经芯片达到这些操作,这种方式不会造成瓶颈的出现。”
最后,“我们证明,你可以有效地使用8位浮点得到与过去人们一直使用16位或32位所能得到的精度是一样的。”
8位浮点操作的障碍是什么?
Linley Group的Gwennap表示,最新推出的GPU和AI芯片支持使用IEEE定义格式的16位浮点(FP16)。
然而,他补充说,“尽管如此,大多数开发者仍在使用FP32训练神经网络。FP8的问题在于没有标准格式,尽管只有几种有意义的指数和尾数潜在组合。在有标准(IEEE或某些非正式协议)出来之前,芯片制造商会发现,他们难以在硬件中进行有效的实施。”
我们问Welser,还需要多长时间商业界才会开始使用8位精度进行培训,他说他也不知道答案,因为“我们现在看到的是,第一次使用16位技术的人们正在增加,但是大部分人仍然只关注32位......”
不过他强调说,他认为降低精度是不存在任何障碍的。“只要我们能够显示出相同输出的结果。”他指出,从用户的角度来看,“如果芯片更快,耗电更少,价格也更便宜,得到的答案是相同的,那我不在乎用的是什么。“
当然,在底层修改软件基础设施是必须的。
Welser证实说:“你必须拥有能够降低精度的软件或算法,以便使其正常运行,”现在所有的软件架构都是为使用GPU和32位构建的,“所有这一切都必须是修改为接受16位或8位。”
业界还会坚持使用他们现在已知的方法,直到用户能够使用实际的硬件。
8位精度的内存乘法
IBM还在IEDM大会上展示了所谓的8位精度内存乘法与设计中的相变内存。
在IEDM上,IBM科学家发表了一项关于新型内存计算设备的研究,与当今的商业技术相比,该设备的计算能耗水平要低100-1000倍,非常适合于边缘AI应用,例如自动驾驶、医疗监控和安全性。(来源:IBM Research)
工程界已经意识到,降低能耗的关键是尽量减少计算架构中出现数据必须从内存迁移到处理器用于计算的这一情况发生,因为这样的迁移需要耗费大量时间和精力。
对更高效AI处理的需求促使许多人致力于研究内存计算,其中AI芯片初创公司Mythic脱颖而出。
在Welser看来,模拟技术“天然适合边缘的人工智能”。正如我们从计算历史发展中所看到的,模拟计算需要低功耗,证明它具有高能效,但却不准确。“这就是为什么数字计算最终胜过了模拟计算。”
但Tirias Research首席分析师Kevin Krewell表示,模拟正在回归,因为“内存计算与模拟计算可以相互配合。内存阵列负责神经网络权重,模拟元件负责求和和触发。”
Krewell还说:“挑战在于保持模拟计算的正确校准、过程以及温度变化的准确性。此外,内存和模拟元件也不像数字元件那样可以进行扩展。”
权重是内存中阻值
Welser解释说,同样地,模拟计算中神经网络所使用的权重是“内存中的阻值”,这些不必移入和移出,都是固定的。“换句话说,对于内存计算架构,“内存单元充当处理器,有效地做了存储和计算的双重任务。”
然而,Welser称挑战是:“我们要使用的是什么电阻,这让我们在做训练的时候可以设置为多大的阻值?这必须足够准确才有用。”
Welser解释说,虽然数字AI硬件争相降低精度,但模拟器一直受到内在精度相对较低的限制,从而影响了模型的精度。
IBM在开发接近8位精度能力的时候使用了相变内存(PCM)。Welser说,PCM此前一直被用于模拟内存中。在这种情况下,“我们使用PCM来回存储更多不同的阻值。更重要的是,我们正在使用一种新颖的架构。”
IBM的论文详细介绍了在标量乘法运算中实现8位精度的技术。IBM声称,这让“以前的模拟芯片精度大体上翻了一番,并且比同类精度的数字架构能耗减少了33倍”。
Gwennap承认IBM已经在PCM方面研究有一段时间了,但“仅仅是一个研究项目”。
Gwennap认为,这种采用PCM的方法面临的最大挑战就是可制造性。“模拟特性因晶体管和晶体管以及生产线上的芯片而异,这就是为什么大多数行业都使用不易受这种变化影响的数字电路。”
EE Times向Linley Group和IBM询问了关于商用AI芯片(例如Mythic)采用内存计算的情况。Gwennap说:“Mythic似乎是最接近于将这项技术投入生产的一款产品,但即使这样,它仍然至少需要一年的时间。”
IBM承认,“Mythic采用了一种专注于使用内存计算的有趣方法。”但也指出,Mythic芯片“仅适用于推理应用”。
据IBM发言人称,IBM的不同之处是“我们相信完整的AI解决方案需要加速推理和训练,我们正在开发和逐渐发展成熟可用于推理和训练的非易失性内存元件。”