@VukRosic99: NVFP4端到端训练发散。当前方案通过Hadamard变换、随机舍入、高精度层等方式修补,但牺牲了大部分加速优势。

X AI KOLs Timeline 论文

摘要

Four Over Six(4/6)为NVFP4量化引入了自适应块缩放,以最小开销降低量化误差,同时改善了大语言模型的训练和训练后量化。

NVFP4端到端训练发散。当前方案通过Hadamard变换、随机舍入、高精度层以及BF16收尾来修补,但牺牲了大部分加速优势。 Four Over Six(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…
查看原文
查看缓存全文

缓存时间: 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 等人, 2025Meta AI, 2025Mishra 等人, 2025

超越 FP8,一些工作开始研究使用 FP4 训练 LLM 的可行性 Castro 等人, 2025Chmiel 等人, 2025Tseng 等人, 2025NVIDIA 等人, 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 等人, 2025NVIDIA 等人, 2025aWang 等人, 2025Castro 等人, 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 等人, 2025Liu 等人, 2023。例如,FP4 的可表示值范围(最大值除以最小正值)是 12(6/0.5),而 INT4 仅为 7(7/1)。

请注意,公式 2 和 3 涉及将值转换为特定数值精度。这是为了利用硬件支持所必需的,但同时也是引入量化误差的地方,因为在舍入到最近的可表示值时信息会丢失。总之,NVFP4 量化中有两个误差来源:

  1. FP8 块级缩放因子:由于 E4M3 提供的精度有限,每个缩放因子都包含一些量化误差。如果缩放因子从其高精度对应值向上或向下舍入,会影响其块中的所有值。
  2. 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) 一致,该图显示

相似文章