Scaling Laws推翻?低精度训练才是最优解?堆数据训练竟让模型变差?数据噪声大反而让模型鲁棒性变强.全是新知识点快收藏!

文摘   2024-11-15 18:00   浙江  


点击箭头处“蓝色字”,关注更多及时AI资讯哦!!



近些年,AI能力的飞速提升简直可以说和模型的规模及算力正比,人工智能的大部分进步都来自计算能力的提升。而算力的提升则主要依赖于低精度路线的加速(32- > 16 - > 8 位),模型训练和服务的精度是影响成本和性能的重要因素。当前深度学习趋向于更低精度,如 Llama - 3 系列在 BF16 训练,且有向 FP8 甚至更低精度发展的趋势。

不过,低精度路线可以带来效率的提升无可厚得,但是低精度训练会降低模型的“有效”参数数量,这使得我们可以预测低精度训练和训练后量化所带来的额外损失。换句话说,当我们在较低精度下训练模型时,模型的学习能力实际上受到了限制,这直接影响了模型的最终性能。

不过,近日被疯狂讨论的《Scaling Laws for Precision》的论文表达了不太一样的观点——在低精度下训练更大的模型可能是计算上最优的选择。这一结论可有点颠覆我们对于模型训练的传统理解。我们通常认为更高的精度能够带来更好的模型性能,但这一研究却告诉我们,在某些情况下,降低精度可能是一种更经济高效的方法?




论文标题:Scaling Laws for Precision

论文链接:https://arxiv.org/abs/2411.04330

这一论文引起了OpenAI、CMU教授、UCSD教授等AI领域权威大佬的纷纷转发,论文来自哈佛大学的Tanishq Kumar团队,他们基于研究到的现象提出了一种“精度感知”的扩展法则,涵盖了训练前和训练后,用于预测低精度训练和推理对语言模型质量和成本的影响。对于论文中提到的一些“有趣的现象”,同桌用大白话重点萃取了一下:

  1. 对于一个固定的模型,如果在某个点之后继续增加训练数据,那么在推理时的性能可能会因为量化而受到负面影响。

  2. 即使不断提高训练精度,模型的性能也不会无限制地提升,当精度提升到一定程度后,其对模型性能的改善效果会逐渐减弱,存在不可约损失。

  3. 模型对后训练量化噪声的鲁棒性取决于其在训练时所经历的类似噪声的程度,即训练精度越低,训练噪声越大,模型对后训练量化的鲁棒性相对越强

  4. 量化感知训练中,权重精度和参数数量之间存在可替代的关系。而在低精度训练中,量化权重、激活函数和注意力的效果是相互独立且相乘的。

接下里我们来展开聊聊这篇文论的核心观点—低精度训练与推理对语言模型的影响!

后训练量化的扩展法则 (Scaling Laws for Post-Train Quantization)

后训练量化(Post-Training Quantization,PTQ)是一种在模型训练完成之后对模型进行量化的技术,主要目的是在尽量保持模型性能的前提下,减少模型的存储需求和计算量,以便于模型在资源受限的设备上进行部署和高效运行。最大的优点是不需要对模型进行重新训练,大大节省了时间和计算资源。

在不改变模型结构和权重的基础上,通过分析模型训练后得到的参数分布等信息,确定合适的量化参数,如量化的位宽、量化的范围等。例如,对于一个原本使用32位浮点数表示权重的模型,后训练量化可能会将其转换为8位整数来表示。

实验发现随着训练数据量的增加,模型对量化的敏感性增加,导致性能退化。对于一个固定的模型,训练更多的数据在某个点之后可能对量化后的模型在推理时的性能产生负面影响。这可能是因为当训练更多的数据时,更多的知识被压缩成权重,给定的扰动会对模型性能造成更大的损害。

即使是较小的模型,如果使用低精度训练,也可能因为后训练量化而无法保证有效的训练结果。




这张图片展示了四种不同规模的神经网络模型(N = 30M、N = 60M、N = 110M 和 N = 220M)在经过后训练量化(PTQ)前后验证损失的变化情况。第一排图表示的是经过PTQ之后的验证损失Val Loss (Post - Quant),而下排图表则是相对于训练结束前的验证损失退化程度,也是性能下降程度(Degradation, PTQ)

每个子图都包含了四个不同的量化级别精度(INT6、INT5、INT4 和 INT3),以及一个未进行PTQ的情况(No PTQ)。横坐标是令牌数与参数数之比(Token/Parameter Ratio),纵坐标上方为验证损失(Val Loss),下方为退化度(Degradation)。

从这些图表中可以看出,随着令牌数与参数数之比的增大,经过PTQ处理的模型其验证损失也会随之增加,退化度也呈现出类似的增加趋势。这说明在大规模的数据集上应用PTQ技术可能导致模型性能的显著下降。

量化训练的扩展法则 (Scaling Laws for Quantized Training)

研究了在训练过程中对权重、激活和KV缓存进行量化的影响。发现量化对模型性能的影响可以通过有效参数数量的变化来建模,并且提出了一个扩展法则来预测这些影响。




左图中有四条曲线分别代表权重(Weights)、激活值(Activations)、KV Cache 和 Tied 权重。曲线显示了随着横轴精度的提高,( N_{\text{eff}} / N ) 值逐渐接近1,这意味着更高的精度使得有效参数的数量更接近实际参数的数量。

中间图是经验等损失轮廓线,右图是预测等损失轮廓线。横轴都是表示模型参数数量 ( N ) ,纵轴表示权重量化精度 ( P_w ) 图中的等高线表示在不同 ( N ) 和 ( P_w ) 下的损失值。更深的颜色表示更低的损失值。

在给定的模型参数数量 N 下,权重量化精度 Pw的增加通常会导致损失值的降低,而Pw 固定时,模型参数数量 N 的增加也会使损失值减小。




图中包含三个子图,分别对应三种不同的token数量:3.3B tokens、13.1B tokens和26.2B tokens。每个子图中都的曲线分别代表不同模型尺寸的最终验证损失随训练精度变化的关系,x轴表示训练精度,y轴表示最终验证损失。

可以看出,对于所有模型尺寸,随着训练精度的提高,最终验证损失逐渐降低;较大的模型尺寸(如220M)在低精度时表现出更好的性能,但随着精度的提高,较小的模型尺寸(如30M)也能达到类似的性能;在相同的训练精度下,较大的模型尺寸通常具有较低的最终验证损失。

预训练的含义 (Implications For Pretraining)

随着训练精度的降低,应增加参数数量并减少数据量。这是因为在低精度下有效参数数量减少,为了保持计算效率,需要增加参数以弥补有效参数的不足,同时减少数据量以避免过度训练。




左边柱状图展示了整数型训练精度(INT4 到 INT32)对应的预测验证损失,中间柱状图展示了浮点型训练精度(FP4 到 FP32)对应的最终验证损失。两张图都可以看出,随着模型尺寸的增加,验证损失逐渐降低。




散点图展示了不同模型尺寸和训练精度下的不可约损失(Irreducible Loss)。x轴表示数据集大小,左y轴表示模型精度,右y轴表示不可约损失,颜色越深表示损失度越低。曲线上的不同形状的点代表不同的模型尺寸,分别包含Llama-3的8B(圆形) 70B(三角形) 405B(星型)大小的模型。展示了不同模型尺寸(N=8B、70B、405B)在不同数据集大小(D)下的最优精度 P∗(D)。

通过拟合缩放定律,研究发现计算最优预训练精度约为 7 比特。这意味着当前通常使用的 BF16(16 比特)训练可能不是最优的,因为 16 比特存在过多不必要的比特;同时,追求低于 4 比特的训练精度可能也不是一个好的选择,因为这将需要不成比例地增加模型大小才能维持损失缩放。

统一的精度扩展法则 (A Unified Scaling Law for Precision)

鲁棒化效应:当模型在低精度下训练权重、激活或注意力时,它会逐渐适应这种 “量化噪声”,从而在后续的后训练量化过程中,对量化带来的影响表现出更强的鲁棒性。也就是说,模型在训练时所经历的低精度环境,使得它在面对后训练量化时,能够更好地保持性能,不会因为量化而导致性能大幅下降。

模型对后训练量化噪声的鲁棒性取决于其在训练时所经历的类似噪声的程度,即训练精度越低,训练噪声越大,模型对后训练量化的鲁棒性相对越强

过训练效应:低精度训练会使模型的有效参数数量减少,这一点在前面的研究中已经有所体现。根据之前的公式和结论,我们知道有效参数数量的减少会导致后训练量化时性能下降加剧,因为模型在训练过程中可利用的有效信息相对减少。在实际情况中,这两种效应是同时存在且相互竞争的,不过通常鲁棒化效应会占据主导地位,使得低精度训练的模型在进行后训练量化后,总体性能下降相对较少。

综合考虑低精度训练对预训练的影响以及后训练量化的降解,作者得到了预测语言模型损失的统一缩放定律:




总结

低精度训练和推理是一个双刃剑,它既能够帮助我们降低成本,也可能影响模型的性能。因此,多了解了解这一过程以确保在追求效率的同时,不会牺牲模型的质量和效果,对我们挖掘大模型的能力是很有必要的。一下是基于研究得到的一些实战中的启示:

1. 模型复杂度与性能的平衡:不同大小的模型都有各自对应的不可约损失,这意味着在选择模型大小时,不能一味地追求大规模模型。大规模模型虽然可能在一定程度上具有更好的性能表现,但同时也会面临更大的不可约损失以及更高的计算成本等问题。因此,需要在模型复杂度和性能之间找到一个平衡,根据具体的任务和需求选择合适大小的模型,以达到最优的性价比。

2. 数据和模型架构的重要性:不可约损失的存在也暗示了数据质量和模型架构对模型性能的重要性。如果数据存在噪声、偏差或不完整性,可能会导致不可约损失增大,即使提高精度也难以弥补。同样,不合理的模型架构可能无法充分挖掘数据中的信息,从而限制了模型的性能。因此,在训练模型时,需要注重数据的预处理和模型架构的设计,以降低不可约损失,提高模型的性能上限 。

3. 对预训练策略的启示:研究结果表明,在预训练过程中,精度、参数和数据之间存在着微妙的权衡关系。例如,在低精度训练时,为了保持计算成本不变,应适当增加参数数量并减少数据量,以弥补低精度下有效参数的减少。同时,计算最优预训练精度通常约为 7 比特,这一发现对当前常见的训练精度选择具有重要的参考价值,提示我们在实际训练中应避免使用过高或过低的精度,以实现更高效的预训练。

众所周知,任何的研究结论都存在“前提条件”,本次的研究结论是建立在以下限制基础上:

1. 架构固定的局限性:实验中使用了固定的模型架构,这限制了研究结果在不同架构模型上的通用性。实际上,不同的架构可能对精度、参数和数据的敏感度不同,因此在更广泛的架构范围内,这些缩放定律的适用性可能会有所变化。未来的研究需要进一步探索在不同架构下这些定律的表现,以更全面地理解和应用精度缩放定律。

2. 计算成本估计的偏差:虽然理论上计算成本随精度线性缩放,但在实际系统中,由于存在各种系统开销,如数据传输、存储管理等,实际的计算增益往往小于理论值。这意味着在实际应用中,仅仅依据理论上的计算成本来选择精度和调整训练策略可能不够准确,需要更细致地考虑实际系统的特点和限制,以实现更有效的资源利用和性能优化。

3. 下游任务评估的缺失:本文主要关注模型的预训练损失和量化性能,未对下游任务进行全面评估。然而,模型的最终价值往往体现在其在各种下游任务上的表现,因此,目前的研究结果不能直接反映精度缩放定律对下游任务性能的影响。未来的工作需要进一步研究在不同下游任务中,精度、参数和数据的权衡关系如何影响模型的实际效果,以更全面地评估和优化模型的性能。

实际生产中,我们应该考虑实际系统在各种具体任务场景下的各种因素,如硬件特性、并行计算能力等,更精确地估计和优化计算成本,从而制定更符合实际情况的精度选择策略。同时,研究如何通过系统级的优化,如数据并行、模型并行等技术,进一步提高低精度训练和推理的效率。不脱离场景打无用之仗!


扫码关注更多AI知识





同桌给你的AI小纸条



同桌的AI小纸条
一个专注于将先进的AI人工智能技术融入日常生活的频道。关注让AI为我们所用,探索人工智能领域的无限可能,并征服他们,让AI赋能生活快乐每一天!
 最新文章