@VukRosic99: NVFP4端到端训练发散。当前方案通过Hadamard变换、随机舍入、高精度层等方式修补,但牺牲了大部分加速优势。
摘要
Four Over Six(4/6)为NVFP4量化引入了自适应块缩放,以最小开销降低量化误差,同时改善了大语言模型的训练和训练后量化。
查看缓存全文
缓存时间: 2026/07/10 20:17
四比六:通过自适应块缩放实现更精确的 NVFP4 量化
NVFP4 端到端训练会发散。当前的方案通过添加哈达玛变换、随机舍入、高精度层以及 BF16 收尾来修复问题——但这会吃掉很大一部分加速收益。
四比六(MIT + NVIDIA)直接修复了量化器本身。FP4 的步长是非均匀的:若将一个块缩放至其完整范围,会在顶部附近产生一个死区——介于块最大值 66.6% 到 100% 之间的数值没有可表示的量化级别。若将同一个块缩放至更小范围,顶部区域又能被覆盖,但代价是可达范围缩小。这两种选择并非总是正确,因此 4/6 对每个包含 16 个值的块都进行两种方式的量化,衡量各自的误差,然后保留效果更好的一种。这仅需修改 14 行代码,在 Blackwell 上的推理长度下开销低于 2%。
结果:普通的 NVFP4 在所有测试的架构上都会发散;而 4/6 在所有架构上都能追踪 BF16 的损失。它还能改善后训练量化(Llama-3-8B 困惑度从 8.43 降至 8.30,70B 从 4.00 降至 3.83),并且可以接入 GPTQ、AWQ 和 SmoothQuant。
我制作了一个简短的图解说明——每个技巧对应一张图。请滑动浏览。
论文 - https://arxiv.org/abs/2512.02010 代码 - https://github.com/mit-han-lab/fouroversix… 完整摘要 PDF - https://gist.github.com/vukrosic/af0fda9588aa3e3a67be7f063e7dd953…
每周日我会进行一次动手实践的 AI 研究直播,并提供一对一帮助:https://skool.com/become-ai-researcher-2669/about…
四比六:通过自适应块缩放实现更精确的 NVFP4 量化
来源:https://arxiv.org/html/2512.02010 Jack Cook¹ & Junxian Guo¹ & Guangxuan Xiao¹ & Yujun Lin² Keith Wyss² & Mahdi Nazemi² & Asit Mishra² & Carlo del Mundo² & Tijmen Blankevoort² & Song Han¹,² 部分工作于 NVIDIA 实习期间完成。 ¹ 麻省理工学院 ² NVIDIA
摘要
随着大型语言模型规模不断增大,人们对低精度数值格式(如 NVFP4)的兴趣日益增长,期望借此提升速度并降低内存使用。然而,将模型量化至 NVFP4 仍具挑战性,因为精度不足通常会降低模型性能。在本工作中,我们提出了“四比六”(4/6),一种对块缩放 NVFP4 量化算法的改进,能够降低量化误差。与整数格式不同,浮点格式具有非均匀的步长,这会导致较大数值上的量化误差更大。4/6 利用这一特性,自适应地将某些块缩放至更小的 FP4 值,使可表示值的分布更加均匀,从而减少接近最大值的数值上的量化误差。我们证明了 4/6 可以在现代硬件加速器上高效实现,在预训练和推理过程中均能带来性能提升,且计算开销极低。在使用 Nemotron 3 Nano 30B-A3B 模型架构的预训练实验中,我们发现,与使用当前最先进的 NVFP4 训练方案训练的模型相比,4/6 使训练损失更接近 BF16。
1 引言
大型语言模型(LLM)的能力不断增强,这直接得益于其规模的增大和训练速度的提升。因此,创造能够训练更大规模 LLM 的方法,已成为过去几年机器学习系统研究的一个核心问题。一个例子体现在数值精度上:过去标准做法是使用 FP32 训练模型,然后是 FP16 Micikevicius 等人, 2018,而现在标准做法是将大多数或全部参数保留在 BF16 Kalamkar 等人, 2019 中。有些工作已成功在将部分参数保留在 FP8 的情况下训练 LLM,但这仍是一个活跃的研究领域 DeepSeek-AI 等人, 2025;Meta AI, 2025;Mishra 等人, 2025。
超越 FP8,一些工作开始研究使用 FP4 训练 LLM 的可行性 Castro 等人, 2025;Chmiel 等人, 2025;Tseng 等人, 2025;NVIDIA 等人, 2025a。然而,使用 FP4 进行端到端训练仍然困难,因为 FP4 是一种非常粗糙的数据类型,只有 16 个值:±{0, 0.5, 1, 1.5, 2, 3, 4, 6}。为弥补这一精度不足,块缩放 FP4 格式(如 MXFP4 Rouhani 等人, 2023 和 NVFP4 NVIDIA 等人, 2025a)近来变得更加流行。与简单地将张量中的所有值量化到 FP4 的 −6 到 6 范围不同,块缩放格式允许为每 m 个值存储一个 FP8 缩放因子,MXFP4 和 NVFP4 的 m 分别为 32 和 16,从而能够在整个张量上表示更广范围的值。
即使有了这一改变,使用 NVFP4 进行训练仍然困难:当前支持 NVFP4 的硬件加速器(如 NVIDIA Blackwell GPU)要求任何矩阵乘法的两个操作数都量化为 NVFP4。因此,为了实现高效的模型训练,权重、激活和梯度都必须量化到 NVFP4。理论上,这应带来两个关键好处:与 BF16 相比,矩阵乘法运算速度快 4-6 倍 NVIDIA 等人, 2025a ,以及得到一个原生量化的 NVFP4 模型。然而在实践中,当前最先进的 NVFP4 训练方案需要引入额外计算开销的操作,并且无法提供原生量化的模型。这些操作包括随机哈达玛变换(RHT)、随机舍入(SR)、将某些层保持在高精度,以及在训练接近结束时“修复”模型——切换为高精度权重、激活和梯度 Chmiel 等人, 2025;NVIDIA 等人, 2025a;Wang 等人, 2025;Castro 等人, 2025。此外,这些额外开销必须谨慎管理:如果引入的开销过大,那么使用更精确的 FP8 格式训练模型反而会更快。为了使 NVFP4 训练可行,需要更轻量级且能提高数值精度的操作。
参照说明 (a) 当一个块中的最大值被缩放到六时,量化为 NVFP4 的块中相对于最大值的量化误差。 参照说明 (b) 当块的最大值改为缩放到四时,相对于块中最大值的量化误差。
图 1:在标准 NVFP4 量化(左)中,使用 FP4 值从 0 到 6 的完整范围意味着无法表示介于块中最大值幅度 66.6% 到 100% 之间的值。通过将某些块缩放至最大值为 4,可以表示块中最大值 75% 的值,从而减少大值的最大量化误差。表 1:使用公式 3 进行 NVFP4 量化,将块的最大值缩放至 M=4 和 M=6。像这样的块(通常其值接近块中最大值的 75%),在缩放至 4 时可能误差更小。详情见表 2。
在这项工作中,我们引入了“四比六”(4/6),这是对 NVFP4 块缩放量化算法的一项改进,旨在改善每个块中接近最大值的值的表示。在量化过程中,标准做法是将高精度值缩放到低精度数值格式所能表示的完整范围 Nagel 等人, 2021。然而,当对 FP4 这样做时,会导致接近最大值的值产生大量量化误差(图 1(a))。如果将值缩放到范围 (−4, 4),可表示值的分布变得更加均匀,从而减少最坏情况下的量化误差(图 1(b))。表 1 给出了一个例子。当值 [10, 20, 30, 40] 被量化为 NVFP4 时,30 被缩放为 30/6.5 = 4.62,然后向下舍入到最接近的 FP4 值 4,引入 13.4% 的相对误差。如果这个块改为缩放至最大值为 4,30 将缩放为 30/10 = 3,这可以在 FP4 中无误差地表示。
我们发现,在预训练和后训练量化(PTQ)过程中,对于权重、梯度和激活张量中的许多块,缩放到 4 而非 6 会引入更少的误差,从而得到更精确的模型。关键在于,我们发现这可以在线高效实现,为 NVFP4 量化操作增加的开销不到 15%。在预训练中,我们发现 4/6 能提升当前最先进的 NVFP4 预训练方案的性能,使损失更接近高精度基线。此外,当用于后训练量化时,我们发现 4/6 通常能提高现有方法(如 GPTQ Frantar 等人, 2023 、AWQ Lin 等人, 2024 和 SmoothQuant Xiao 等人, 2024a )的精度。我们还发布了量化和矩阵乘法内核,可从 GitHub 获取。
2 NVFP4 量化的挑战
2.1 NVFP4 概述
NVFP4 是一种块缩放量化格式,它将值存储为 FP4 E2M1,每 16 个值带有一个 FP8 E4M3 缩放因子 Δᵢ,以及一个张量级的 FP32 缩放因子 α。这可以表示如下,其中 X 是高精度张量,X̄ 是其量化表示,M^FP4 和 M^FP8 分别是 FP4 和 FP8 E4M3 可表示的最大值(6 和 448),⌈·⌋ 是舍入函数。¹
α^FP32 = max(|X|) / (M^FP4 × M^FP8) (1)
Δ_i^FP8 = max(|X_{16i…16(i+1)}|) / (α M^FP4) (2)
X̄^FP4 = { ½⌈2X/(αΔ)⌋, |X/(αΔ)| < 2; ⌈X/(αΔ)⌋, |X/(αΔ)| < 4; 2⌈X/(2αΔ)⌋, |X/(αΔ)| ≤ 6 } (3)
与整数格式不同,像 FP4 这样的浮点格式具有动态步长:0 到 2 之间为 0.5,2 到 4 之间为 1,4 到 6 之间为 2,如图 1(a) 所示。这使得它们能够表示更广范围的值,因此在许多情况下能更好地表示权重、激活和梯度 Chen 等人, 2025;Liu 等人, 2023。例如,FP4 的可表示值范围(最大值除以最小正值)是 12(6/0.5),而 INT4 仅为 7(7/1)。
请注意,公式 2 和 3 涉及将值转换为特定数值精度。这是为了利用硬件支持所必需的,但同时也是引入量化误差的地方,因为在舍入到最近的可表示值时信息会丢失。总之,NVFP4 量化中有两个误差来源:
- FP8 块级缩放因子:由于 E4M3 提供的精度有限,每个缩放因子都包含一些量化误差。如果缩放因子从其高精度对应值向上或向下舍入,会影响其块中的所有值。
- FP4 值:单个值可能会向上或向下舍入到图 1(a) 中所示的八个可能的 FP4 值之一。
2.2 NVFP4 误差源于接近最大值时的舍入
为了更好地理解 NVFP4 量化对 LLM 性能的影响,了解每种 NVFP4 量化误差的下游效应将很有帮助。在图 2(a) 中,我们显示了 Llama-3.1-8B 在量化为 NVFP4 时性能如何受到影响,以及当通过将缩放因子或值保持在高精度来减轻每种误差时的情况。遵循 PTQ 的标准实践,我们将敏感层和操作(包括嵌入层、LM head 和注意力计算)保持在高精度。我们发现,缩放因子的误差对模型性能的影响很小,NVFP4 的性能下降完全可以归因于将值转换为 FP4 时引入的误差。当这种误差源被减轻时,下游性能完全恢复。
参照说明 (a) 缩放因子量化误差对性能影响极小。NVFP4 量化及其模拟版本,其中值(X̄)或缩放因子(Δ)保持在高精度(HP)。缩放因子的误差对性能损失贡献相对较小,但如果值以高精度存储,性能可以完全恢复。 参照说明 (b) NVFP4 误差源于接近最大值时的舍入。模拟量化,仅对幅度 ≥ x 的值量化为 NVFP4。x=0 时(所有值保持高精度)等效于 BF16,x=6 时等效于 NVFP4。更陡的斜率 x=5 表明,对大约 5 附近(FP4 无可表示值)的值进行量化所产生的误差是导致 NVFP4 性能差的主要原因。
图 2:使用 Llama-3.1-8B 在 WikiText-2 词级困惑度上进行的模拟 NVFP4 量化。为了提高 NVFP4 性能,我们发现应该专注于改善每个块中特定值的表示。
接下来,我们模拟当仅将部分值转换为 FP4 时模型性能如何受到影响。具体来说,我们仅在其绝对值高于阈值 α 时才将缩放后的值转换为 FP4,测量下游模型性能,并将结果绘制在图 2(b) 中。我们发现,性能平稳下降,直到大于 4 的值被量化,之后迅速下降,这表明围绕 5 的值进行舍入所产生的误差是导致性能下降的主要原因。在缩放值约 2.5 和 3.5 处也可以观察到较小的尖峰。这一发现与图 1(a) 一致,该图显示
相似文章
QUADS:通过量化误差双侧对齐稳定MoE的NVFP4强化学习
本文提出QUADS,一种通过对齐训练端和推理生成端的量化误差来稳定混合专家大语言模型的NVFP4强化学习的方法,实现了BF16级别的精度,并且吞吐量高于FP8。
4-Bitter的教训:在NVFP4 RL中平衡稳定性与性能
本文介绍了一种低精度(NVFP4)强化学习训练的方法,平衡了吞吐量和稳定性,解决了前向和后向传播量化误差的问题。
@SpaceTimeViking: 我有一个版本保持BF16注意力层,另一个混合精度量化使用NVFP4权重和FP8 At…
对Google的Gemma-4-12B-it模型进行混合精度量化,使用NVFP4用于MLP权重,FP8用于注意力层,实现了25%更小的存储占用和更快的吞吐量,同时保持质量。
采用 QUASAR QAD 的完全量化 NVFP4 Qwen3.8-27B
这是 Qwen3.8-27B AI 模型的完全量化 4-bit NVFP4 版本,采用 QUASAR 方法进行训练,以在保持高质量的同时减小模型大小。
ScaleSweep:通过块缩放初始化实现LLM的NVFP4训练后量化精度提升
ScaleSweep提出了一种针对LLM的NVFP4训练后量化的新型块缩放初始化方法,通过遍历可行的块缩放候选值来提高精度。在Llama和Qwen模型上的实验表明,在激进量化下,该方法保留了超过93%的全精度性能。