人工智能最近的发展令人震惊,但训练神经网络来完成令人震惊的壮举的成本也是如此。最大的,比如语言模型GPT-3还有美术生成器DALL-E 2在美国,在高性能gpu集群上进行训练需要几个月的时间,花费数百万美元,并占用数以百万计的基础计算。

处理单元的训练能力已经快速增长这一数字在去年翻了一番。为了保持这一趋势,研究人员正在深入研究计算的最基本构建模块,即计算机表示数字的方式。


英伟达首席科学家兼研究高级副总裁比尔·达利(Bill Dally)在最近的主题演讲中表示:“在过去10年里,我们(每个芯片的训练性能)提高了1000倍,这在很大程度上要归功于数字表示。IEEE计算机算术研讨会

在向更有效的人工智能训练进军的过程中,第一个受害者是32位浮点数表示,俗称“标准精度”。为了追求速度、能源效率以及更好地利用芯片面积和内存,机器学习研究人员一直在尝试使用更少的比特表示的数字来获得相同水平的训练。对于试图取代32位格式的竞争者来说,无论是数字表示本身,还是使用这些数字进行基本算术的方式,这个领域仍然是广阔的。以下是一些最近的进展和上个月在会议

英伟达的每矢量缩放方案

图像创造者DALL-E培训Nvidia的A100 gpu集群,结合了标准32位数字和较低精度的16位数字。英伟达最近宣布料斗GPU支持更小的8位浮点数。现在英伟达开发了一种芯片通过使用8位和4位数字的组合,原型进一步发展了这一趋势。

尽管使用了不太精确的数字,但该芯片仍能保持计算精度,至少在训练过程的一个部分,即推理中是这样。推理是在经过充分训练的模型上执行以获得输出,但在训练期间也会重复执行。

Nvidia的Dally告诉工程师和计算机科学家:“我们最终从4位精度得到8位的结果。”

英伟达之所以能够在不造成重大精度损失的情况下减小数字大小,是因为该公司采用了一种称为每矢量缩放量化(VSQ)的技术。其基本思想是这样的:一个4位的数字只能准确地表示16个值。所以,每个数字都四舍五入到这16个值中的一个。由于这种舍入造成的精度损失称为量化误差。但是,您可以添加一个比例因子,以均匀地将16个值在数轴上挤得更近,或将它们拉得更远,从而减少或增加量化误差。

两个浅蓝色的驼峰,带有深蓝色的区域和黑色的垂直线。英伟达的逐矢量缩放量化(VSQ)方案比INT4等标准格式更好地代表了机器学习所需的数字。英伟达

诀窍是压缩或扩展这16个值,使它们最佳地匹配你在神经网络中实际需要表示的数字范围。对于不同的数据集,这种缩放是不同的。通过对神经网络模型中每组64个数字的缩放参数进行微调,英伟达的研究人员能够将量化误差降至最低。他们发现,计算比例因子的开销可以忽略不计。但是当8位表示减少到4位时,能源效率翻了一番。

这款实验性芯片仍在开发中,英伟达的工程师们正在研究如何在整个训练过程中使用这些原理,而不仅仅是在推理中。Dally表示,如果成功的话,一款结合了4位计算、VSQ和其他效率改进的芯片,每瓦运算次数将是Hopper GPU的10倍。

回到顶部

假设,一种新的数字

早在2017年,两位研究人员,约翰Gustafson而且艾萨克Yonemoto,发展了一个完全表示数字的新方法

现在,马德里康普顿斯大学的一组研究人员已经找到了开发了第一个处理器核心在硬件中实现假定标准,并表明,与使用标准浮点数计算相比,一个基本计算任务的精度提高了多达四个数量级。

假设的优势来自于它们所代表的数字沿着数轴精确分布的方式。在数轴的中间,1和-1附近,有比浮点数更多的位置表示。在边缘,当出现较大的负数和正数时,假设精度比浮点数下降得更优雅。

古斯塔夫森说:“这更符合计算中数字的自然分布。”“这是正确的动态范围,在你需要更高精度的地方,它是正确的精度。在浮点运算中,有很多位模式,从来没有人用过。这是一种浪费。”

由于在它们的表示中有一个额外的组件,假定在1和-1附近实现了这种改进的准确性。浮点数由三部分组成:一个符号位(0表示正,1表示负),几个“尾数”(分数)位(表示小数点的二进制版本后面的数),以及定义指数(2)的剩余位经验值).

假定保留了浮点数的所有组成部分,但增加了一个额外的“政权”部分,即一个指数的指数。这种机制的美妙之处在于它可以在比特长度上有所变化。对于较小的数字,它可以只需要两个比特,为尾数留下更高的精度。这使得在1和-1附近的最佳位置的假设具有更高的准确性。

蓝色“符号”绿色“指数”和红色“分数”部分的柱状图,蓝色“符号”,黄色“区域”,绿色“指数”和红色“分数”部分的柱状图,y轴上具有二进制精度位,x轴上具有蓝色IEEE浮点32和洋红色Posit(32,2)曲线的指数图。假定数与浮点数的区别在于增加了一个额外的变长区域部分。这使得假设在0附近有更好的准确性,神经网络中使用的大多数数字都位于0附近。马德里康普顿斯大学/IEEE

通过在现场可编程门阵列(FPGA)上合成的新硬件实现,Complutense团队能够将使用32位浮点数和32位假定并排进行的计算进行比较。他们通过将其与使用更精确但计算成本更高的64位浮点格式的结果进行比较来评估其准确性。假设表明,矩阵乘法的精度有了惊人的四个数量级的提高,这是神经网络中的一个关键计算。他们还发现,精度的提高并不是以计算时间为代价的,只是芯片面积和功耗有所增加。

回到顶部

降低RISC-V的数学风险

瑞士和意大利的计算机科学家已经研究出了一种比特减少方案,适用于使用开源RISC-V指令集架构的处理器,这在新的处理器开发人员中得到了广泛的应用。

该团队对RISC-V指令集的扩展包括一个混合低精度和高精度数字表示的高效计算版本。通过改进的混合精度数学,他们在训练神经网络的基本计算中获得了两倍的加速。

在基本操作过程中,降低精度会产生连锁反应,而不仅仅是由于数字变短而导致的精度损失。两个低精度数字相乘可能导致一个数字太小或太大,无法表示给定的比特长度——分别称为下溢和溢出现象。当您将一个较大的低精度数和一个较小的低精度数相加时,会发生另一种称为“淹没”的现象。其结果可能是小数字的完全损失。

混合精度可以缓解溢流、下溢和淹没。计算是用低精度的输入执行的,结果是高精度的输出,在舍入到低精度之前完成一批数学运算。

这个位于欧洲的团队专注于人工智能计算的一个基本组成部分:点积。它通常在硬件中通过一系列称为融合乘加单元(fma)的组件实现。它们执行操作d一个b+c一气呵成,最后只绕一圈。为了获得混合精度的好处,输入一个而且b是低精度(比如8位),而c以及输出d精度高(比如16位)。

苏黎世联邦理工学院(ETH Zurich)数字电路与系统系主任、博洛尼亚大学(University of Bologna)教授卢卡·贝尼尼(Luca Benini)和他的团队有一个简单的见解:与其一次做一个FMA操作,为什么不并行做两个,然后最后把它们加在一起呢?这不仅可以防止由于两个FMA之间舍入造成的损失,而且还允许更好地利用内存,因为没有内存寄存器留下来等待前一个FMA完成。

课题组设计并模拟了并行混合精度点积单元,计算时间几乎缩短了一半,输出精度得到了提高,特别是对于大矢量的点积。他们目前正在硅中构建他们的新架构,以证明模拟的预测。

回到顶部

Brain Float 16可以做所有事情

巴塞罗那超级计算中心和英特尔公司的工程师声称,“Brain Float 16是你所需要的”深度神经网络训练.不,他们不是披头士的粉丝。他们是数字格式的粉丝大脑浮动——谷歌大脑的心血结晶。

Brain Float (BF16)是标准32位浮点表示法(FP32)的简化版本。FP32表示具有1个符号位、8个指数位和23个尾数位的数字。BF16号就是一个FP32号,去掉了16个尾数位。这样,BF16牺牲了精度,但占用了一半的内存空间,并保留了FP32的动态范围。

Brain Floats已经广泛应用于AI训练,包括图像创建者的训练DALL-E.然而,它们总是与更高精度的浮点数结合使用,在计算的不同部分在两者之间来回转换。这是因为虽然神经网络训练的某些部分不会受到BF16精度降低的影响,但其他部分会受到影响。特别是,小数值可能会在融合的乘法-加法计算中丢失。

巴塞罗那和英特尔团队已经找到了解决这些问题的方法,并表明BF16可以专门用于训练最先进的人工智能模型。更重要的是,在模拟中,训练占用了FP32所需芯片面积和能量的三分之一。

为了完全使用BF16进行人工智能训练,而不必担心丢失小值,巴塞罗那团队开发了扩展数字格式和定制的FMA单元。数字格式称为BF16- n,它将几个BF16数字组合在一起表示一个实数。与使用更少位格式相比,结合BF16可以在不牺牲显著精度的情况下实现更高效的FMA操作。这一反直觉结果的关键在于FMA单元的硅面积(因此是功率)要求。这些要求与尾数位数一致。FP32号的FMA,有23个尾数,将需要576个单位的面积。但一个聪明的FMA与BF16-N (N = 2)的结果相当,需要192个单位。

32个彩色方块,1个深蓝色S, 8个绿色E和23个黄色M,接着是3组16个彩色方块,1个深蓝色S, 8个绿色E和7个M三个16位的Brain Float数字可以携带与32位浮点数相同的精度,同时在计算过程中节省芯片面积。John Osorio/巴塞罗那超级计算中心

巴塞罗那超级计算中心高级研究员、这项工作的负责人马克·卡萨斯(Marc Casas)说,消除对混合精度的需求,只专注于BF16操作,为更便宜的硬件提供了可能。目前,他们只在软件领域模仿他们的解决方案。现在他们正致力于在FPGA上实现brain - float方法,以查看性能改进是否持续。

回到顶部

本文的部分内容已在以前的文章

对话(1)
Bulent Abali 2022年10月20日
INDV

还有一种浮点格式,float,使用熵编码来压缩指数字段。更少的指数位意味着更多的尾数位以提高精度。EFLOAT与各种FP格式在链接https://arxiv.org/abs/2102.02705中进行了比较

IBM量子计算机即将突破1000个量子比特大关

秃鹰处理器只是预定在2023年推出的量子计算的一项进步

4分钟读取
这张照片显示的是一名妇女正在操作悬挂在实验室天花板上的一台仪器。

IBM托马斯·j·沃森研究中心的一名研究人员正在检查那里正在建造的一些量子硬件。

康妮周/ IBM

IBM的秃鹰世界上第一台拥有超过1000个量子比特的通用量子计算机将于2023年问世。IBM还有望在今年推出Heron,这是一系列新型模块化量子处理器中的第一款,该公司表示,这些处理器可能有助于其在2025年前生产出超过4000个量子比特的量子计算机。

虽然理论上,量子计算机可以快速找到经典计算机需要亿万年才能解决的问题的答案,但今天的量子硬件仍然缺乏量子位,限制了它的实用性。量子计算所必需的纠缠态和其他量子态是出了名的脆弱,容易受到热和其他扰动的影响,这使得扩大量子比特的数量成为一项巨大的技术挑战。

继续阅读↓ 显示更少
Baidu