中文 英语

浮点8能解决AI/ML开销吗?

精度越低,功率就越低,但要做到这一点,标准是必须的。

受欢迎程度

当媒体在热议ChatGPT的图灵测试(Turing Test-busting)结果时,工程师们正专注于运行大型语言模型和其他深度学习网络的硬件挑战。ML的首要任务是如何用更少的电力更有效地运行模型,特别是在自动驾驶汽车等关键应用中,延迟成为生死攸关的问题。

人工智能已经引发了对计算机架构的重新思考,传统的冯·诺依曼结构被近计算和内存布局所取代。但新颖的布局还不足以实现深度学习网络所需的功耗降低和速度提高。业界还在更新浮点(FP)算法的标准。

Tensilica IP at的产品营销总监David Bell表示:“对人工智能中的新数据类型进行了大量的研究,因为这是一个快速创新的领域节奏.“8位浮点(FP8)数据类型正在被探索作为一种最小化硬件(包括计算资源和内存)的手段,同时在网络模型的复杂性增长时保持准确性。”

作为这一努力的一部分,Arm、英特尔和英伟达的研究人员发表了一份白皮书,提议FP8深度学习格式。”[1]

微软首席营销官史蒂夫•罗迪(Steve Roddy)表示:“比特精度几年来一直是机器学习领域一个非常活跃的争论话题。二次曲面.“六八年前,当模型的大小(参数计数)开始爆发时,将权重数据转移到训练计算(CPU或GPU)的巨大容量成为了大型训练运行的性能限制瓶颈。面对越来越昂贵的存储接口(如HBM)或在训练中切割比特精度的选择,许多公司成功地试验了低精度浮点。现在网络的规模继续呈指数级增长,探索FP8是降低训练带宽需求的下一个合理步骤。”

我们是怎么走到这一步的
浮点算术是一种科学计数法,它浓缩了表示一个数所需的位数。这个技巧是由IEEE工作组754在1986年首次编写的算术表达式实现的,当时浮点运算通常在协处理器上执行。

IEEE 754描述了基数点(在英语中更常见的是“小数点”)如何没有固定的位置,而是在表达式中需要的地方“浮动”。它允许具有极长的数字流(无论是最初在一个固定点的左边还是右边)的数字适合计算机有限的位空间。它可以以10为基数,也可以以2为基数,而且它对于计算是必不可少的,因为二进制数比十进制数可以扩展到更多的数字(100 = 1100100)。

图1:12.345作为一个以10为基数的浮点数。资料来源:维基百科

图1:12.345作为一个以10为基数的浮点数。来源:维基百科

虽然这既是一个优雅的解决方案,也是全世界计算机科学专业学生的祸害,但它的术语是理解人工智能如何实现精度的关键。声明由三部分组成:

  1. 一个符号位,确定该数字是正(0)还是负(1);
  2. 一个指数,表示根号点的位置,和
  3. 一个尾数,或表示该数字的最高位。

图2:IEEE 754浮点方案。来源:WikiHow

图2:IEEE 754浮点格式。来源:WikiHow

如图2所示,当指数在64位表示中获得3位时,尾数从32位跳到52位。它的长度是精度的关键。

IEEE 754定义了FP32位和FP64位,是为科学计算而设计的,其中精度是最终考虑因素。目前,IEEE工作组P3109正在开发一种新的机器学习标准,与当前(2019)版本的754保持一致。P3109旨在创建一个浮点8标准。

精确权衡
机器学习通常需要比32位方案更低的精度。白皮书提出了两种不同风格的FP8: E4M3(4位指数和3位尾数)和E5M2(5位指数和2位尾数)。

“神经网络有点奇怪,因为它们实际上对相对较低的精度非常耐受,”Richard Grisenthwaite说,他是at的执行副总裁兼首席架构师手臂.“在我们的论文中,我们证明了你不需要32位尾数来获得精度。您可以只使用2位或3位,4位或5位的指数将提供足够的动态范围。你真的不需要754年定义的高精度,它是为有限元分析和其他高精度算术任务而设计的。”

考虑一个现实世界的例子:天气预报需要754的极端范围,但自动驾驶汽车不需要图像搜索的细粒度识别。关键不在于路中间站的是男孩还是女孩。只是车辆必须立即停下来,没有时间浪费在计算额外的细节上。因此,使用具有更小指数和更小尾数的浮点数是很好的,特别是对于需要优化能源使用的边缘设备。

“能源是一个基本的数量,没有人会让它作为一个问题消失,”Untether AI的首席技术官Martin Snelgrove说。“而且它也不是一个狭窄的范围。担心能源意味着你不能在你的软件或计算上粗心大意。如果使用32位浮点使一切都变得更简单,但却大量消耗电能,那么您就不能这样做。在某样东西上再加1000层会让它稍微更准确一点,但能量的价值并不在那里。有一个关于能量的整体学科——物理学说,无论你喜欢与否,你都要注意它。”

事实上,为了节省能源和性能开销,许多深度学习网络已经转向了ieee批准的网络16位浮点数和其他格式,包括无尾数的整数。[2]

Quadric的Roddy表示:“由于计算能量和存储在设备中非常重要,几乎所有高性能机器学习设备/边缘部署都采用了INT8。”“几乎所有npu和加速器都经过了INT-8优化。FP32的乘法累加计算所消耗的能量是INT8 MAC的近10倍,因此原理是显而易见的。”

为什么需要FP8
这个问题始于深度学习网络的基本设计。在人工智能的早期,存在简单的单层模型,仅以前馈方式运行。1986年,大卫·鲁梅拉特、杰弗里·辛顿和罗纳德·威廉姆斯出版了一本反向传播的突破性论文[3]开启了人工智能的现代时代。正如他们的摘要所描述的那样,“这个过程反复调整网络中连接的权重,以使网络的实际输出向量和期望输出向量之间的差值最小化。作为权重调整的结果,不属于输入或输出的内部‘隐藏’单元开始代表任务领域的重要特征,任务中的规律被这些单元的交互所捕获。”

换句话说,他们创造了一个系统,在这个系统中,通过在模型中添加越来越多的层,可以获得更好的结果,而通过加入“学习”调整,这个模型会得到改进。几十年后,他们的想法极大地改进了机器翻译和转录,以至于大学教授们仍然不确定本科生的论文是否由机器人写的。

但是额外的层需要额外的处理能力。“人们发现,具有越来越多层的大型网络在神经网络任务中越来越成功,但在某些应用程序中,这种成功伴随着最终无法管理的内存占用、功耗和计算资源的增加。根据Arm/Intel/Nvidia联合撰写的论文,必须将数据元素(激活、权重、梯度)的大小从32位减少到16位,因此业界开始使用Bfloat16和IEEE FP16等16位格式。”

Grisenthwaite说:“从根本上来说,这是一个8位浮点数与32位浮点数之间的权衡。”“我可以在相同数量的内存中拥有四倍的权重和激活数量,并且我还可以获得更多的计算吞吐量。所有这些都意味着我可以获得更高的性能。我可以让模特更投入。我可以在每一层有更多的权重和激活。事实证明,这比每个单独的点都超级准确更有用。”

这些问题的背后是机器学习的两个基本功能:训练和推理。训练是第一步,例如,人工智能通过查看数据集来学习对图像中的特征进行分类。通过推理,AI被给予训练集之外的新图像,并被要求对它们进行分类。如果一切顺利,人工智能应该能分辨出尾巴和翅膀不是人类的特征,在更精细的层面上,飞机没有羽毛,有尾巴和翅膀的管子也不是鸟。

at公司物联网战略营销经理罗恩·洛曼(Ron Lowman)说:“如果你在做训练或推理,数学是一样的Synopsys对此.“不同的是,你对一个已知的数据集进行了数千次,甚至数百万次的训练,以训练将得到的结果。完成之后,你再拍一张未知的照片,它就会告诉你应该是什么样子。从数学角度和硬件角度来看,这是很大的不同。所以当你进行训练时,你希望并行地进行,而不是在单个硬件实现中进行,因为训练所花费的时间是非常昂贵的。这可能需要几周或几个月,在某些情况下甚至几年,而且成本太高了。”

在工业领域,培训和推理已经成为独立的专业,各有自己的专门团队。

“大多数部署AI的公司都有一个数据科学家团队,他们创建神经网络架构,并使用他们的数据集训练网络,”Untether AI产品副总裁鲍勃·比奇勒(Bob Beachler)说。“大多数自动驾驶汽车公司都有自己的数据集,他们将其作为一个差异化因素。他们使用他们的数据集在他们提出的这些新颖的网络架构上进行训练,他们认为这给了他们更好的准确性。然后,这被带到另一个团队,在车里进行实际的实施。这是它的推论部分。”

训练需要一个广泛的动态范围来持续调整系数,这是反向传播的标志。推理阶段是对输入进行计算,而不是学习,因此它需要的动态范围要小得多。Beachler解释说:“一旦你训练了网络,你就不需要调整系数,所需的动态范围就会大大降低。”

对于推断,FP32或FP16中的持续操作只是不必要的开销,因此有一个量化步骤将网络向下转移到FP8或Integer 8 (Int8),这已经成为推断的事实上的标准,主要由TensorFlow驱动。

Synopsys Vision and AI Processor IP的产品经理Gordon Cooper表示:“量化的概念是将模型中所有的32位浮点数塞进8位格式。”“我们已经对几乎所有基于神经网络的物体检测进行了准确性测试。我们可以从32位浮点数转换到整数8,精度损失小于1%。”

对于质量/保证,通常会进行量化后的再训练,以查看浮点值的转换如何影响网络,这可能会经过几次迭代。

这就是为什么训练和推断可以使用不同的硬件来执行。“例如,我们看到的一个常见模式是使用NVIDIA gpu的加速器,然后最终在通用cpu上运行推理,”Grisenthwaite说。

另一种方法是专门为推理而设计的芯片。

“我们是一个推理加速器。我们根本不进行培训,”Untether AI的Beachler说。“我们把整个神经网络放在我们的芯片上,每一层和每一个节点,以高带宽将数据输入我们的芯片,导致网络的每一层都在我们的芯片内计算。它是大规模并行的多处理。我们的芯片有511个处理器,每个处理器都有单指令多数据(SIMD)处理。处理元素本质上是乘法/累加函数,直接连接到内存。我们称之为以能源为中心的人工智能计算架构。这种以能源为中心的AI计算架构导致矩阵向量的系数移动的距离非常短,并且激活通过基于行的方法的每个处理元素传入。所以激活来了,我们加载系数,做矩阵数学运算,做乘法/累加,存储值,将激活移动到下一行,然后继续。短距离的数据移动相当于低功耗。”

总的来说,人工智能的开发从cpu开始,通常是FP协处理器,然后转移到gpu,现在分为两步过程:用于训练的gpu(尽管一些人仍然使用cpu)和用于推理的cpu或专用芯片。

通用CPU架构和专用推理解决方案的创建者可能不同意哪种方法将占主导地位。但他们都同意,在训练和推理之间成功切换的关键是一个浮点标准,该标准在芯片之间量化和传输操作期间将性能开销和错误风险降至最低。包括NVIDIA、Intel和Untether在内的几家公司已经推出了基于fp8的芯片。

“这是一篇有趣的论文,”库珀说。8位浮点数(FP8)在训练方面更为重要。但是他们谈论的FP8在推理方面的好处是你可能可以跳过量化。你要在训练和推理之间匹配你所做的事情的格式。”

然而,一如既往,仍有许多挑战需要考虑。

“成本是一个模型转换- FP32训练模型转换为INT8。这种转换成本很高,而且是劳动密集型的。”“但如果FP8成为现实,如果流行的训练工具开始开发以FP8为原生格式的ML模型,这对嵌入式推理部署可能是一个巨大的福音。8位权重占用相同的存储空间,无论是INT8还是FP8。无论格式如何,移动8位(DDR到NPU等)的能源成本是相同的。而且,Float8的乘法-累加功耗并不比INT8 MAC高多少。FP8将很快被整个硅领域所采用。但关键不在于处理器许可方是否会迅速采用FP8。关键在于构建训练工具的数学家能否实现这种转变。”

结论
随着对更低功耗的追求继续下去,关于是否甚至可能出现FP4标准的争论还在继续,FP4标准中只有4位携带一个符号、一个指数和尾数。遵循严格的神经形态解释的人甚至讨论过二进制神经网络,其中输入函数像轴突刺,只是0或1。

Untether的Snelgrove表示:“我们的稀缺水平将会上升。”“每天都有数百篇关于新神经网络技术的论文。他们中的任何一个都可能彻底改变这个领域。如果你在一年后和我交谈,所有这些词都可能有不同的含义。”

至少在目前,很难想象低FPs或整数方案可以包含足够的信息用于实际用途。现在,各种类型的FP8正在缓慢地走向标准化。例如,Graphcore, AMD和高通还向IEEE提交了详细的FP8提案。[4]

Graphcore联合创始人兼首席技术官Simon Knowles表示:“8位浮点数的出现为人工智能计算提供了巨大的性能和效率优势。”“这也是行业确定一个单一、开放标准的机会,而不是引入一个令人困惑的相互竞争的混合格式。”

事实上,每个人都乐观地认为,最终会有一个标准。Arm的Grisenthwaite说:“我们参与了IEEE P3109,这个行业的许多公司也是如此。“委员会研究了各种不同的形式。有一些非常有趣的。他们中的一些人会经受住时间的考验,而另一些人会半途而废。我们都希望确保我们有完全的兼容性,而不是说,‘好吧,我们有六种不同的竞争格式,它们都很混乱,但我们将其称为标准。”

参考文献

  1. 米奇维丘斯,P.等。FP8深度学习格式。最后修订于2022年9月29日arXiv:2209.05433v2。https://doi.org/10.48550/arXiv.2209.05433
  2. Sapunov、G. FP64、FP32、FP16、BFLOAT16、TF32等ZOO成员。媒介。2020年5月16日。https://moocaholic.medium.com/fp64-fp32-fp16-bfloat16-tf32-and-other-members-of-the-zoo-a1ca7897d407
  3. 鲁梅尔哈特,D,辛顿,G.和威廉姆斯,R.学习表示的反向传播误差。自然323,533-536(1986)。https://doi.org/10.1038/323533a0
  4. 深度神经网络的8位数值格式。2022年6月6日提交arXiv: 2206.02915https://doi.org/10.48550/arXiv.2206.02915

更多阅读:
如何将数字从十进制转换为IEEE 754浮点表示法

数字表示法与计算机算术“,
https://web.ece.ucsb.edu/~parhami/pubs_folder/parh02-arith-encycl-infosys.pdf

数字的计算机表示与计算机算术“,
https://people.cs.vt.edu/~asandu/Courses/CS3414/comp_arithm.pdf



1评论

伦纳德蔡 说:

微处理器标准委员会https://grouper.ieee.org/groups/msc/index.html)发起了一个新的工作组P3109(机器学习的算术格式标准),致力于标准化机器学习的格式。我强烈鼓励任何对这个话题感兴趣的人加入并做出贡献。

留下回复


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

Baidu