文章强调了在不同训练精度下,如何平衡模型性能和量化损失,以及在实际应用中选择合适的量化策略的重要性。
scaling law:
太长不看版: 个人讨厌晦涩难懂+无法应用于实际场景的"装逼结论",因此先按照自己的理解帮大家rephrase一下论文的主要发现(in plain language):
首先,这是一篇研究精度(precision)、参数量(parameters)和训练数据量(tokens)之间关系的重要论文。
1. 关于后训练量化(Post-Training Quantization, PTQ): 1.1 基本概念 1.2 结论1 模型预训练的trained_token/parameter比率越高,预训练结束后,使用PTQ带来的性能下降就越大。这里作者没写明白有误导性!!!实际上这个结论指的是:
我们都知道PTQ一定会带来性能下降(PTQ后,valid loss相比pretrain之后会上升),这个下降可以用 量化后的精度Ppost越低,损失增加越多(负指数关系) D: 训练token数
注意,δPTQ还有一种完整形式(section 5) 同时考虑了训练精度和推理精度(继续往后看): 那么如果你必须进行PTQ ,那么对于同样参数量大小的模型,被训更多token的模型的 δPTQ 会比喂更少数据的模型要大。但最终loss的绝对数量是多少并不一定,因为即便 δPTQ 这个正数会让loss上升(性能下降),但模型终归被训了更多数据,这么一抵消可能loss还是会下降。相当于两只无形的手(数据量的上升带来的loss下降、PTQ带来的loss上升)在掰手腕;给定模型参数量和固定的精度,具体谁能掰过谁会有一个打平手的cutoff数据量。 举例子,如果你要固定70B模型参数量并pretrain时候采用bf16,并且pretrain后要PTQ到int4。那么采用两种数据量:
a) 用10B token训出来模型
b) 5B token训出来的模型
那么一定是a)情况的 δPTQ 更大,但最终PTQ结束之后的loss的数值是多少就不一定了。
因此作者也在原文中提到了**there exists an amount of pretraining data beyond which additional data is actively harmful to performance at inference-time (see top-left, Figure 2),也就是给定你要进行PTQ,那么对于你的实验设置,总有一个cutoff的数据量,称之为临界的数据量 Dcrit ,超过这个量后继续训练会导致PTQ后性能下降 。这个临界点并不是说超过后训练数据就“有害”,而是说在进行PTQ后,性能的提升可能会被性能的下降所抵消。因此,在实际应用中,需要权衡训练数据量与模型量化后的性能。
其他结论 在某些情况下,过度训练(more tokens)反而会让PTQ后的模型性能变差。
更大的模型在相同的token/parameter比率下,对PTQ更鲁棒。
对于固定大小的数据集,增加模型参数量可以提高PTQ的鲁棒性。
这种规律在不同的PTQ方法中都存在(论文验证了GPTQ、AWQ和RTN三种方法)。 训练精度的影响 训练时使用较低精度的模型在PTQ时性能下降较小。
如果你知道模型最终需要被量化到很低的精度(比如4bit),那么在训练时就使用相对较低的精度(比如8bit)可能比使用高精度(比如16bit)更好,因为这样可以让模型在训练过程中就适应量化噪声。
实话说这个结论初看有点脱裤子放屁,因为太符合直觉了(bushi)。 用脚想想就知道【训练用int8然后量化到int4】肯定比【训练用bf16然后量化到int4】要好,原文section 5:models trained in lower precision are more robust to post-train quantization in the sense of incurring lower degradation。
这也解释了为什么一些较新的大语言模型倾向于使用BF16而不是FP32来训练,因为这不仅可以节省计算资源,还可能让模型在后续量化时表现更好 1.3 PTQ造成loss degradation的深入分析 1.3.1 两个竞争效应(section 5) 在分析PTQ对模型性能的影响时,论文发现了两个相互竞争的效应: 低精度训练会降低模型的有效参数量( ),这意味着模型在相同的数据量下“看起来”参数量更少,从而在PTQ时对参数量化的敏感性增加; 因为 和 成正比, 较低的Neff理论上会导致更大的性能下降: (section 5这边第一次读还以为写错了)。作者说的 实际上应该参考公式 9 变为
,随着 的增加, 确实增加, 也就是成正比。说明白点就是低精度训练会下降Neff, 也就是一个 模型的可能有效的参数只有 10 B , 然后 变大, 然后根据section 3 的公式就会造成更大的degradation)。
这个效应与Robustification效应相反。 在实践中,Robustification效应通常占主导,这就是为什么低精度训练的模型在PTQ时表现更好。 1.3.2 精度阈值效应 一个重要发现是,当精度低于5-bit时,PTQ带来的性能下降会急剧增加: 1.3.3 理论解释 2. 关于训练时量化(Training-time Quantization) 2.1 基本概念 注意: 这里的权重 指模型中所有线性层(Linear layers)的权重矩阵,包括: 但在论文的实验中未对嵌入层(Embedding layer)进行量化。 2.2 核心发现 权重、激活值和注意力的量化效果是独立且可乘的 ,这一点非常关键。 论文提出了“有效参数量 Neff effective parameter count)”的 概念。简而言之, Neff 代表了模型在低精度下的“真实有效”参数量 。在低精度训练时,模型的实际参数量 N会被折减为较低的 Neff ,这有助于评估模型在低精度量化下的性能损失。 N:模型的实际参数量;
Pw :权重精度;
Pa:激活值精度;
Pkv :注意力计算精度;
γw、γa、γkv :各部分的敏感度系数,反映了模型对不同量化精度的适应性。