机器之心报道
作者:泽南、小舟
研究表明,你训练的 token 越多,你需要的精度就越高。
最近几天,AI 社区都在讨论同一篇论文。
UCSD 助理教授 Dan Fu 说它指明了大模型量化的方向。
CMU 教授 Tim Dettmers 则直接说:它是很长一段时间以来最重要的一篇论文。OpenAI 创始成员、特斯拉前 AI 高级总监 Andrej Karpathy 也转发了他的帖子。
Tim Dettmers 表示,可以说,人工智能的大部分进步都来自计算能力的提升,而(在最近)这主要依赖于低精度路线的加速(32- > 16 - > 8 位)。现在看来,这一趋势即将结束。再加上摩尔定律的物理限制,大模型的大规模扩展可以说要到头了。
例如,英伟达最新的 AI 计算卡 Blackwell 将拥有出色的 8 位能力,并在硬件层面实现逐块量化。这将使 8 位训练变得像从 FP16 切换到 BF16 一样简单。然而,正如我们从新论文中看到的那样,对于很多大模型的训练来说,8 位是不够的。
与其他模型相比,Llama 405B 没有得到太多应用的主要原因是它体量太大了,运行 405B 模型进行推理非常麻烦。但论文表明,训练较小的模型(例如 70B)时,你也无法在低精度下有效地训练这些模型。见下图 8B(圆形) 70B(三角形) 405B(星型):
可见对于 20B Token 数据的训练,训练 8B 模型在 16 位中效率更高。对于 70B 模型来说 8 位仍然有效,但效率越来越低。
Tim Dettmers 感叹道:从我自己的经验(大量失败的研究)来看,效率是无法欺骗的。如果量化失败,那么稀疏化也会失败,其他效率机制也会失败。如果这是真的,那么我们现在就已经接近最优了。
那以后我们怎么办?眼前似乎只有三条可能的路线:
扩大数据中心规模:未来约 2 年这仍然是可以做到的事;
通过动态扩展:路由到更小的专门模型或大 / 小模型上;
知识的提炼:这条路线与其他技术不同,并且可能具有不同的特性。
对于新硬件来说,我们仍然有 HBM4 内存,这将是一个很好的提升。但 FP4 训练似乎是一个谎言,节点缩小不会再增加多少效率了。
这篇名为《Scaling Laws for Precision》的论文顾名思义,制定了一个和大语言模型使用数据精度有关的扩展定律,涵盖了训练前和训练后。
论文标题:Scaling Laws for Precision
论文链接:https://arxiv.org/abs/2411.04330
据论文一作,来自哈佛大学的 Tanishq Kumar 介绍,他们的研究认为:
由于当代大模型在大量数据上经历了过度训练,因此训练后量化已变得非常困难。因此,如果在训练后量化,最终更多的预训练数据可能会造成副作用;
在预训练期间以不同的精度放置权重、激活或注意力的效果是一致且可预测的,并且拟合扩展定律表明,高精度(BF16)和下一代精度(FP4)的预训练可能都是次优的设计选择。
低精度训练和推理会影响语言模型的质量和成本,但当前的大模型 Scaling Law 并未考虑到这一点。在这项工作中,研究人员为训练和推理设计了「精度感知」扩展定律。
作者提出,以较低的精度进行训练会降低模型的有效参数数量,从而使我们能够预测低精度训练和训练后量化带来的额外损失。对于推理,随着模型在更多数据上进行训练,训练后量化带来的性能下降会加剧,最终导致额外的预训练数据产生负面影响。对于训练,扩展定律使我们能够预测具有不同精度的不同部分的模型的损失,以较低精度训练较大的模型可能是计算最优的。
该工作统一了训练后量化和训练前量化的扩展定律,得出一个单一的函数形式,可以预测不同精度下训练和推理的性能下降。
预训练 scaling law 表明,计算最佳预训练精度通常独立于计算预算。然而,令人惊讶的是,如果模型大小受到限制,这种独立性就不再成立,在这种情况下,计算最佳精度在计算中增长缓慢。
该研究以 3-16 bit 精度预训练了 465 个语言模型,并对每个模型进行了训练后量化。对于具有 N 个参数的语言模型,在 D 个 token 上进行训练,训练精度为 P_train,训练后权重精度为 P_post,该研究最终找到了一个统一的 Scaling Law,其形式如下:
其中,A、B、E、α、β 是正拟合常数,δ_PTQ 是指推理前训练后量化引起的损失退化。
研究简介
该研究首先研究了训练后量化模型权重的常用方法,发现训练时间越长 / 预训练期间「看到」的数据越多,模型在推理时对量化就越敏感,这解释了为什么 Llama-3 可能更难量化。
事实上,这种损失退化大致是预训练期间看到的 token / 参数比值的幂律,因此可以提前预测关键数据大小,超过该数据大小的更多数据的预训练会非常有害。直觉可能是,当你训练更多的数据时,更多的知识被压缩成权重,给定的扰动会对模型性能造成更大的损害。
图 1:主要发现示意图。在 BF16 中将固定大小的模型在各种数据预算上训练,并在最后量化权重。可以发现,由于训练后量化而导致的退化会随着预训练期间看到的 token 数量增加而增加,因此额外的预训练数据可能会造成损害。
经过扩展验证表明,以较低的精度训练较大的模型可以实现计算优化。
然后该研究将注意力转向低精度训练,主要研究量化感知训练(仅权重)和低精度训练。该研究将模型分解为权重、激活和 KV 缓存,找到其中任何一个量化到任意精度时损失的 Scaling Law,并开发一种组合且可解释的函数形式来预测在预训练期间,量化这三者的任意组合对损失的影响。
该研究的 Scaling Law 依赖于「有效参数计数」的概念,研究团队假设当你降低精度,参数也降低一定数量,计数就降低,那么包含 FP4 中所有内容的 10 亿参数模型具有可比较的数量 BF16 中 250m 模型的「有效参数」。
虽然权重可以毫无问题地以低精度进行训练,但激活和 KV 缓存很敏感。
最后,该研究将训练前和训练后的发现统一为可解释的函数形式,可以以任何精度组合预测训练前和训练后的损失。
该研究还发现,低精度的预训练可以以定量可预测的方式「增强」模型的训练后量化,但其程度低于直观预期。
作者表示:「该研究在进行实验时保持受控的架构和设置,但在实践中,通常会故意进行架构调整以适应低精度训练。」这也是这项研究的一点局限性。
感兴趣的读者可以阅读论文原文,了解更多研究内容。
参考内容:
https://twitter.com/Tim_Dettmers/status/1856338240099221674
https://twitter.com/Tanishq97836660/status/1856045600355352753