Pretraining Large Language Models with NVFP4

发表时间: 2025-09 · arXiv:2509.25149 (NVIDIA)

NVIDIA

A1 主要贡献

大型语言模型(LLM)的快速发展增加了对更高效数值格式的需求,以降低训练过程中的计算成本、内存需求和能耗。虽然8位浮点数(FP8)已成为加速LLM训练的流行数据类型,但向更窄的精度(如4位浮点数,FP4)过渡,有望进一步提升计算速度和资源利用率。然而,如此低的精度量化给训练稳定性、收敛性和实现带来了挑战,尤其是对于在长序列上训练的大规模模型。

本研究旨在解决使用4位精度稳定、准确地训练大型语言模型的挑战。为此,我们引入了一种基于新型NVFP4格式的训练方法。该方法的核心创新和贡献如下:

  1. 提出一种综合性的4位训练方法论:该方法整合了多种关键技术以确保训练的稳定性和准确性。

    • 随机哈达玛变换(Random Hadamard transforms, RHT):用于限制块级别的异常值,通过重新分布异常值使其更易于用窄精度格式表示。
    • 二维量化方案(Two-dimensional quantization):应用于权重,确保在前向和后向传播中使用一致的量化表示,从而避免破坏反向传播的链式法则。
    • 随机舍入(Stochastic rounding):应用于梯度,以提供无偏的梯度估计,减少量化引入的系统性偏差。
    • 选择性高精度层:将数值上敏感的少数层(如模型的最后几层)保留在更高的精度(如BF16),以保证模型的收敛。
  2. 验证了FP4在大规模长序列训练中的可行性:我们成功地使用该方法训练了一个120亿参数的模型,训练数据量高达10万亿个token。据我们所知,这是迄今为止公开记录的规模最大、训练序列最长的4位精度训练。

  3. 证明了与FP8相当的性能:实验结果表明,使用我们的NVFP4训练技术训练的模型,其训练损失和下游任务准确率与FP8基线相当。例如,在MMLU-pro基准测试中,NVFP4训练的模型准确率达到62.58%,几乎与FP8预训练的62.62%持平。

这些发现表明,NVFP4与我们的训练方法相结合,代表了窄精度LLM训练算法的重大进步,为未来更强大模型的更快、更高效训练奠定了基础。

A2 方法细节

除了NVFP4数据类型,我们的方法还整合了几项关键技术,以实现有效的4位训练。这些技术包括:(1)将特定的数值敏感层保留在更高精度;(2)使用随机哈达玛变换来管理块级异常值;(3)对权重应用二维(2D)块缩放,以保持前向和后向传播的一致性;(4)采用随机舍入以确保量化梯度的无偏性。虽然在较短token范围内训练的较小模型可能不需要所有这些技术,但我们发现,对于在10万亿token范围内训练的12B模型,每个组件对于确保收敛和稳定性都至关重要。图4通过消融研究证明了这一点:从下面描述的完整训练方法开始,我们一次移除一个组件,并观察到消除任何一个都会导致更差的收敛。


图 4 | 对训练了10万亿token的12B模型进行的消融研究。消融研究从使用NVFP4训练至3.43T token的模型开始(除了前两个和最后八个块),并系统地一次移除一个方法组件:随机舍入(SR)、随机哈达玛变换(RHT)、二维缩放(2D)和更少的BF16块。相对差异定义为 (FP8 - 实验) / FP8,负差异意味着实验效果更差。

简而言之,我们对NVFP4训练的建议是:
1. 将少数敏感的线性层保持在更高精度(网络中15%的层,大部分高精度层位于网络末端)。
2. 对权重梯度GEMM的输入应用大小为16×16的随机哈达玛变换。
3. 对权重使用16×16块的二维(2D)缩放,对激活和梯度使用1×16块的一维缩放。
4. 对梯度使用随机舍入,对权重和激活使用四舍五入到最近的偶数。

在本节的其余部分,我们将详细讨论训练方法的每个组成部分,并描述图4中呈现的消融研究。附录E中报告了额外的消融研究以支持我们的选择。

4.1. 混合精度

采用混合精度策略进行FP4训练。我们为FP4训练采用混合精度策略。大部分计算,特别是线性(全连接)层内的GEMM操作,在FP4中执行。如图5所示,每个线性层有三个底层的GEMM:一个在前向传播(Fprop)中的GEMM,以及在后向传播中用于计算激活梯度(Dgrad)和权重梯度(Wgrad)的独立GEMM。GEMM操作消耗FP4张量作为输入,并产生BF16或FP32的输出。


图 5 | NVFP4量化线性层的计算流程图。所有GEMM操作都将其输入量化为NVFP4。

部分线性层对FP4敏感,需保持高精度。尽管线性层通常在较窄的精度下计算,我们观察到一些线性层比其他层对FP4更敏感。特别是,当每个线性层都量化到FP4时,训练会发散。我们从消融研究(见附录E.2)中观察到,模型中最后几个线性层会导致训练发散,因为它们需要比FP4提供的更大的动态范围和尾数。基于这些发现,我们建议将最后层的一小部分(例如,少于15%)保留在BF16或MXFP8中,以获得更好的训练收敛性。

12B模型的混合精度配置。对于12B模型,我们选择了一个保守的配置,将前两个块以及最后八个块(FFN或Mamba-2,每个包含2个线性层)保留在BF16中,这占网络中线性层的16%。然而,图4表明,即使只将最后四个块保留在更高精度,收敛性仍然稳定,这表明模型中更大部分本可以安全地在FP4中训练。

其他组件的精度选择。为了确保训练过程中的数值稳定性,我们将嵌入、输出投影头、归一化层、非线性部分以及注意力组件(包括softmax和query-key、attention score-value的批处理GEMM)保留在原始精度(例如,BF16或FP32)。主权重(由优化器存储)、权重梯度(用于跨微批次和数据并行副本的梯度累积)以及优化器状态也保持在FP32。张量并行归约在BF16精度下执行。

4.2. 随机哈达玛变换

随机哈达玛变换(RHT)缓解异常值影响。虽然微缩放减少了表示张量值所需的动态范围,但异常值仍然可能对FP4格式产生不成比例的影响,从而降低模型准确性【3, An et al., 2025; 21, Park et al., 2025; 22, Raman et al., 2025; 11, Dettmers et al., 2022; 29, Xiao et al., 2024】。随机哈达玛变换【24, Shah et al., 2024; 5, Ashkboos et al., 2025; 4, Ashkboos et al., 2024; 25, Tseng et al., 2024; 26, Tseng et al., 2025a; 14, Malinovskii et al., 2024】通过将异常值重新分布成近似高斯分布来解决这个问题,使它们更容易用更窄的格式表示。下面我们讨论随机哈达玛变换在FP4训练中的应用。

RHT主要应用于Wgrad的输入。随机哈达玛变换通常应用于两个GEMM输入,以便点积通过另一个操作数 aufgrund 正交性来反转每个变换。关于其力学机制的更多细节在附录C中讨论。根据经验,我们观察到变换Wgrad输入可以改善12B模型的训练(例如,图4显示从Wgrad中移除变换后损失恶化)。另一方面,在较小规模下,哈达玛变换对Fprop和Dgrad没有显示出可测量的益处(见附录E.4.1),这可能是因为FP4已经提供了足够的范围。因此,我们将哈达玛变换限制在Wgrad输入上,尽管在某些情况下Fprop和Dgrad也可能受益。

哈达玛矩阵大小的选择。随机哈达玛变换通过$N \times N$的哈达玛矩阵与张量中同样大小的每个瓦片进行矩阵乘法来实现。矩阵大小$N$在准确性和性能之间引入了权衡。更大的矩阵通过将异常值分布在更多值上,从而更有效地分布异常值,但会增加计算和内存成本。条目太少的矩阵不太可能重现高斯分布,从而损害FP4的准确性。在小规模上,我们观察到由于矩阵大小不同,收敛性没有可测量的差异。在更大规模上,例如12B模型,我们观察到哈达玛矩阵超过中等大小后收益递减(见附录E.4.2),而矩阵条目太少会影响收敛。我们认为这部分是由于更大的模型有更多的异常值。因此,我们选择矩阵大小$N=16$,我们发现其收敛性比$N=4$好,并且结果与$N=128$相似。

随机符号向量的作用。随机哈达玛变换通过与一个随机对角符号向量相乘来引入随机性,该向量翻转整行或整列的符号。这降低了“结构化”异常值(例如,与哈达玛基对齐的张量模式)在变换后存活的几率。在小规模上,随机化对准确性没有影响,并且使用标准哈达玛变换训练保持稳定。然而,我们发现随机化对在更长token范围内训练的更大型号有益,如附录E.4.3所述。在我们的设置中,我们使用一个在整个训练过程中所有线性层共享的单个随机符号向量。我们的研究表明,增加随机符号向量的数量没有可测量的影响。

4.3. 二维缩放

前向与后向传播中的量化不一致问题。在训练期间,变换和缩放操作沿点积维度应用,导致张量在前向(沿行)和后向(沿列)传播中被不同地变换和缩放。这是因为后向传播会转置张量,从而改变了点积维度。因此,同一个张量可以有两个不同的量化表示,这实际上打破了链式法则,因为反向传播不再是对前向传播中使用的相同函数进行微分。更精确地说,当 $Q_{fprop} \neq Q_{bprop}$ 时,后向更新 $\partial L / \partial W = D_{bprop} \cdot \partial L / \partial Y$ 计算的是与前向传播中使用的函数 $Y_{fprop} = Q_{fprop}(W)$ 不同的函数 $Y_{bprop} = Q_{bprop}(W)$ 的梯度。我们假设权重中的链式法则违反对模型准确性降低有贡献。

二维块缩放解决权重不一致性。为了缓解这个问题,我们提出了一种二维(2D)块缩放方法,确保在前向和后向传播中量化的一致性。对于权重,元素在16×16的块(即16个输入通道乘以16个输出通道)中分组和缩放,类似于【10, DeepSeek-AI et al., 2024】。当传递给Tensor Cores时,2D块缩放因子会为每个1×16的块进行复制,并继续利用一个FP32的张量级缩放因子。激活和梯度使用标准的NVFP4缩放(即1×16的块),因为更细粒度的缩放可以提高量化精度。虽然激活量化也存在链式法则问题,但我们观察到训练对激活张量中的不一致性不如对权重张量敏感(附录E.5对此进行了进一步讨论)。权重对缩放粒度也更具容忍性,因为它们可以适应FP4的值。如图4所示,保持一致的量化权重可以改善12B模型的训练损失。

RHT与一致性。与缩放类似,沿点积维度应用的随机哈达玛变换在量化后会引入不一致性(即,不同的变换将导致不同的量化值),因此不应用于权重张量。结果是,与权重相关的GEMM中变换后的激活和梯度无法再通过变换权重张量来反转,这阻止了Fprop和Dgrad从变换中受益。因此,我们将哈达玛变换限制在Wgrad张量上,我们发现这对训练我们的模型是足够的(附录E.4.1)。

4.4. 随机舍入

确定性舍入引入的偏差问题。在量化到FP4期间,确定性舍入(例如,四舍五入到最近的偶数)可能会引入偏差,产生系统性误差,原因在于尾数分布倾向于向特定方向舍入、值下溢为零或值饱和到最大可表示数。偏差的影响通常在梯度张量中更为明显【6, Castro et al., 2025; 27, Tseng et al., 2025b; 9, Chmiel et al., 2025; 8, Chmiel et al., 2023; 1, Alistarh et al., 2017】,这会影响训练收敛。为了解决这种偏差,我们在将高精度值量化到FP4时采用随机舍入。随机舍入将一个值概率性地舍入到其两个最近的可表示数之一,概率与它们之间的距离成反比。这可以防止值被持续地向同一方向量化,从而减少偏差。

随机舍入对梯度的重要性。我们观察到,将随机舍入应用于梯度张量对于12B模型的收敛至关重要,如图4所示。后向传播中的其他张量并未从随机舍入中受益,这再次证实了梯度是偏差的主要来源(见附录E.3)。此外,将随机舍入应用于前向传播的张量是有害的,因为它相对于最近舍入会放大量化误差【6, Castro et al., 2025】。

A3 背景知识

由于窄浮点格式的范围有限,引入了微缩放(MX)格式【20, Open-Compute-Project, 2023】以平衡动态范围和精度。这些格式的特点是块状表示,其中一组数据元素共享一个单一的、共同的缩放因子。MX格式包括8位(MXFP8)、6位(MXFP6)和4位(MXFP4)浮点类型。在MXFP4中,每个元素表示为E2M1【20, Open-Compute-Project, 2023】,意味着它有1个符号位、2个指数位和1个尾数位。这使得MXFP4能够编码±0、±0.5、±1、±1.5、±2、±3、±4和±6这些值。

MXFP4的缩放机制。由于原始的更高精度值(例如FP32或BF16)通常超出FP4的范围,它们必须在量化过程中被缩放到可表示的范围内。缩放因子通常被选择为使得块内的绝对最大值(amax)映射到FP4的最大可表示值,这样既有利于防止饱和,又可以最小化小量值被舍入为零的损失。缩放后,张量中的高精度值被舍入到最接近的FP4可表示数,之后使用相同缩放因子的倒数解码回其原始范围。为了提高硬件效率,MX格式以8位存储块缩放因子。张量中每32个连续元素组成的块共享一个8位缩放因子,该因子以无符号E8M0格式(UE8M0)存储,编码一个范围从$2^{-127}$到$2^{127}$的2的幂次值。Mishra等人【16, Mishra et al., 2025】发现,将缩放因子向上舍入到下一个可表示的UE8M0值以避免饱和是有益的。

NVFP4格式的改进。NVFP4是一种增强的4位格式,相比MXFP4提供了改进的数值属性。首先,通过将块大小从32个元素减少到16个元素,NVFP4缩小了每个块内的动态范围,从而更好地将值适配到FP4范围内。其次,块缩放因子以E4M3而非UE8M0格式存储,牺牲了一些指数范围以换取额外的尾数位。第三,在张量级别应用一个FP32缩放因子,以保留块缩放因子的范围。通过这种两级微缩放方法,NVFP4将块中至少6.25%的值(每个16元素块中的amax值)以接近FP8的精度进行编码,而将其余值存储在FP4中(见图1)。相比之下,MXFP4将所有值存储在FP4中,并且由于2的幂次缩放因子舍入,可能会损失高达一个binade的动态范围(以及四个样本:±4和±6)(详见附录B.4)。


图 1 | 一个以NVFP4格式存储的16×32矩阵。每个块包含16个连续的FP4元素(灰色和绿色)以及一个FP8缩放因子(黄色)。每个块中量级最大的元素(绿色)被缩放到FP4的最大可表示值,并可以使用块缩放因子恢复。还应用了一个未显示的张量级FP32缩放因子。

NVFP4的两级缩放方案。对于NVFP4,使用更精确的E4M3进行缩放减少了表示缩放因子的可用范围。因此,使用第二级FP32缩放来调整原始张量的分布,以便块缩放因子可以用E4M3表示。这种两级缩放方案的工作方式如下:(1)一个张量级的FP32缩放因子将张量内的所有值重新映射到块的可表示范围内(FP4 × FP8),然后(2)一个块级的E4M3缩放因子将块内的值移动到FP4的可表示范围内。附录B更详细地描述了量化和缩放策略。

NVFP4的数值优势。总而言之,NVFP4在MXFP4基础上的设计改进提高了异常值的准确性,同时最大限度地减少了小值被量化为零的数量。这些数值上的进步(更小的块大小和更精确的缩放)使NVFP4比MXFP4具有明显优势,从而实现持续更好的训练行为。我们在第5节讨论了比较这两种格式的训练结果。

硬件支持。NVIDIA Blackwell GPU通过Tensor Cores为多种微缩放格式——MXFP8、MXFP6、MXFP4、NVFP4——提供原生支持,如表1所示。Tensor Cores读取窄精度输入以及每个16或32元素块的8位缩放因子。Tensor Cores计算块上的部分点积,将每个部分积乘以相应的缩放因子以反量化在量化过程中缩放的输入,并在更高精度下累积部分结果,以产生FP32的最终点积。此外,Blackwell GPU对FP4转换指令的多种舍入模式(包括四舍五入到最近偶数和随机舍入)提供原生支持。与FP8相比,Tensor Cores提供的FP4计算吞吐率在GB200芯片上高出2倍,在GB300芯片上高出3倍。与使用FP8操作数相比,使用FP4操作数时内存使用量也大约减半。因此,当GEMM占训练时间的很大一部分时,FP4可以为LLM训练提供显著的加速。

表 1 | NVIDIA Blackwell Tensor Cores。

A4 实验环境与结果

实验环境

本文的实验涉及三种模型变体:12B和8B规模的混合Mamba-Transformer架构,以及1.2B规模的Transformer变体。

1. 12B混合Mamba-Transformer(主要验证模型)
* 模型架构:
* 基于Nemotron-H家族的Nemotron-Nano-12Bv2-Base模型【18, NVIDIA, 2025b】。
* 包含62个块,由6个自注意力(Self-Attention)块、28个FFN块和28个Mamba-2块组成。
* 隐藏维度为4608,FFN隐藏维度为12288,注意力头数为32。
* Mamba-2块有8个组,状态维度128,头维度64,扩展因子2,卷积窗口大小4。
* 使用Squared ReLU激活函数,RMSNorm归一化,无位置嵌入、dropout或偏置。

  • 数据集:

    • 一个包含10万亿token的高质量策划和合成数据集,混合了通用网页抓取数据、维基百科、数学、代码、学术数据、crawl++、多语言和合成SFT风格数据。
    • 采用分阶段数据混合方法【12, Feng et al., 2024】,训练分为三个阶段,后期阶段侧重于高质量数据。
  • 硬件与超参数:

    • 序列长度8192,批大小736。
    • 使用WSD学习率调度,恒定学习率为$4.5 \cdot 10^{-4}$,在最后20%的训练中衰减至$4.5 \cdot 10^{-6}$。
    • Adam参数 $\beta_1=0.9, \beta_2=0.95$,权重衰减0.1。
  • 软件与精度配置:

    • FP8基线: 遵循【18, NVIDIA, 2025b】的方法,所有线性层使用E4M3格式,除了第一个和最后两个块的线性层使用BF16。权重缩放块大小为128×128,激活和梯度为1×128。
    • NVFP4: 遵循本文第4节描述的方法,除前两个和最后八个块的线性层(占16%)使用BF16外,其余线性层均使用NVFP4。

2. 8B混合Mamba-Transformer(用于与MXFP4对比)

  • 模型架构:

    • 包含52个块:4个自注意力块,24个FFN块,24个Mamba-2块。
    • 隐藏维度4096,FFN隐藏维度21504,32个查询头和4个键值头。
  • 数据集与超参数:

    • 在1万亿token上训练,采用两阶段数据混合。
    • 序列长度8192,批大小768。
    • WSD学习率调度,恒定学习率为$8.0 \cdot 10^{-4}$,在最后15%训练中衰减至$8.0 \cdot 10^{-6}$。
  • 精度配置:

    • BF16基线: 所有计算在BF16中进行。
    • NVFP4/MXFP4: 遵循本文方法,除最后八个块的线性层使用BF16外,其余均在相应FP4格式下计算。

3. 1.2B Transformer(用于消融研究)

  • 模型架构:

    • 标准Transformer架构,包含20个Transformer块。
    • 隐藏维度2048,FFN隐藏维度6144,16个查询头和8个键值头。
    • 使用RoPE嵌入,Squared ReLU激活。
  • 数据集与超参数:

    • 在1万亿token上训练,采用两阶段数据混合。
    • 序列长度8192,批大小768。
    • WSD学习率调度,恒定学习率为$1.2 \cdot 10^{-3}$,在最后15%训练中衰减至$1.2 \cdot 10^{-5}$。
  • 精度配置:

    • BF16基线: 所有计算在BF16中进行。
    • NVFP4: 用于对第4节中的方法进行消融研究。

实验结果

1. NVFP4与FP8的预训练对比(12B模型,10T tokens)

  • 实验内容: 将使用NVFP4精度和我们提出的方法论训练的12B混合Mamba-Transformer模型,与一个使用FP8精度训练的参考模型进行比较。两个模型均在10万亿token上进行预训练。
  • 实验结果:

    • 验证损失: 如图2所示,NVFP4的验证损失在整个训练过程中与FP8基线紧密相随。在训练的稳定阶段,NVFP4的相对损失误差持续低于1%;在训练末期学习率衰减时,差距略微扩大到1.5%以上。这表明NVFP4的训练动态与FP8非常接近。
    • 下游任务准确率: 尽管损失有微小差距,但下游任务的准确率基本不受影响。如图3和表2所示,NVFP4在知识密集型推理、数学、编程和常识推理等多个领域的任务上,其准确率与FP8相当。唯一的例外是编码任务(MBPP+),NVFP4略有落后,这可能归因于评估的噪声。
  • 分析结论: 这些结果证实,NVFP4训练在长token范围内保持稳定,并能保留相对于更高精度基线的准确率。我们的NVFP4训练方法为可扩展的4位训练提供了一条实用的途径。此外,在训练的最后阶段切换到更高精度(如BF16)可以有效弥补损失差距(详见附录D)。


图 2 | 使用10T token对12B模型进行NVFP4和FP8预训练的验证损失。


图 3 | 在10T token预训练过程中测量的NVFP4与FP8的任务准确率。

表 2 | 12B模型在FP8和NVFP4预训练后的准确率。评估在BF16下进行。

2. NVFP4与MXFP4的对比(8B模型,1T tokens)

  • 实验内容: 比较使用NVFP4和MXFP4两种4位微缩放格式训练8B混合Mamba-Transformer模型的行为。模型在1万亿token上训练,并与BF16基线进行比较。
  • 实验结果:

    • 收敛损失: 如图6a所示,NVFP4预训练的收敛损失优于MXFP4。与BF16基线相比,MXFP4的相对误差约为2.5%,而NVFP4约为1.5%。
    • 训练效率: 为了弥补与NVFP4的损失差距,MXFP4需要额外的训练token。如图6b所示,MXFP4需要多训练36%的token(即使用1.36T而非1T token)才能达到与NVFP4相当的损失。
  • 分析结论: NVFP4由于其更优的数值属性(更小的块大小和更精确的缩放),比MXFP4具有更高的训练效率,能够在更少的训练时间内达到相同的模型质量。这凸显了NVFP4在训练效率上的优势。


图 6 | NVFP4与MXFP4的比较:(a) 训练损失差异;(b) 不同token预算下的验证困惑度。

A5 结论

我们已经证明,当与一套旨在提高训练稳定性和收敛性的特定方法相结合时,使用NVFP4进行大规模预训练是稳定且准确的。这些技术包括二维权重缩放、随机哈达玛变换、随机舍入等。通过这种方法,一个12B参数的混合Mamba-Transformer模型在10万亿个token上成功训练,其损失和下游任务准确率与FP8基线紧密相随。这为在数万亿token规模上持续进行4位预训练提供了首个公开证据。

在并排实验中,NVFP4用更少的token就达到了与MXFP4相当的损失,这表明在不牺牲准确性的前提下,可以实现效率的提升。这些比较初步揭示了不同FP4格式在预训练期间的内存和计算效率优势以及收敛性权衡。

未来的工作将进一步描述NVFP4相对于其他格式的预训练性能,同时改进方法论以量化所有线性层而不影响收敛,减少剩余的高精度层,并将NVFP4扩展到注意力和通信路径。我们还计划探索其在训练后场景中的应用,并在更大的模型、更长的token范围以及其他架构(如专家混合模型)上进行评估。通过Transformer Engine的最近更新,Blackwell上的NVFP4训练现已得到完全支持。

A6 附录

B. NVFP4量化流程

以下描述了将张量从高精度(FP32或BF16)转换为NVFP4的流程。给定一个张量$X$,每个由连续高精度值$x_i$组成的块$B$($i \in B$)被量化为FP4。在量化之前,值会使用两级缩放策略进行缩放:首先,一个全局的FP32张量级缩放因子将张量内的所有值移动到块的可表示范围内(FP4 × FP8);其次,一个局部的块级缩放因子将块$B$内的值$x_i$移动到FP4的可表示范围内。

B.1. 全局张量级缩放

全局编码缩放因子的计算。全局编码缩放因子计算如下:

其中,$amax_X = \max(|x_i|)$ 表示整个张量$X$的绝对最大值,6和448分别是E2M1和E4M3格式的最大可表示量级。相应的解码缩放因子,$s_{dec,G} = 1/s_{enc,G}$,会以FP32格式存储,用于在NVFP4 GEMM操作后解码结果值。由于全局缩放因子是动态地在整个张量上计算的,它会引发一次额外的设备内存遍历:一次用于计算全局amax,一次用于在转换为FP4之前进行缩放。然而,全局缩放因子可以潜在地跨越更小的粒度(例如,一行或一个元素块),以避免额外的设备内存往返。

B.2. 局部块级缩放

局部解码缩放因子的选择。局部解码缩放因子的选择使得每个块中的最大绝对值,$amax_{B} = \max_{i \in B}(|x_i|)$,归一化到FP4的最大可表示值:

由于局部解码缩放因子必须以FP8格式存储以供Tensor Cores使用,它们在量化前首先乘以全局编码缩放因子:

其中,$s_{enc,G}$的目标是将最大的局部解码缩放因子,即$\max_{B}(s_{dec,L,B}) = amax_X/6$,重新映射到FP8的最大可表示值。我们通过在高精度下对量化后的局部解码缩放因子求逆,并将其缩放回其原始可表示范围,来获得真实的局部编码缩放因子,$s_{enc,L,B} = 1/(fp32(\hat{s}_{dec,L,B,E4M3}) \cdot s_{dec,G})$。通过这种方式,我们试图确保原始值在用$s_{enc,L,B} \cdot s_{dec,G} \cdot \hat{s}_{dec,L,B,E4M3} \approx 1$进行缩放后可以被恢复,因为如果做不到这一点会影响模型精度。在公式3中计算解码缩放因子时使用四舍五入到最近偶数的方法。

B.3. 转换

最终的量化过程。综合以上所有步骤,块中的每个元素$x_i$通过局部编码缩放因子进行缩放并量化为:

其中$Q(\cdot)$表示FP4量化函数。除了存储量化值$\hat{x}_i$外,局部和全局解码缩放因子$\hat{s}_{dec,L,B,E4M3}$和$s_{dec,G}$也存储在内存中,并在矩阵乘法期间使用。

Tensor Core的处理。Tensor Core读取局部解码缩放因子,并将它们应用于在$N$个元素上计算的部分点积:

其中$A$和$B$表示两个输入操作数。在GEMM操作之后,全局解码缩放因子$s_{dec,G,A}$和$s_{dec,G,B}$会以类似的方式应用于最终输出。

B.4. 关于MXFP4和NVFP4缩放因子的说明

MXFP4缩放因子的局限性。MXFP4的缩放因子被限制为2的幂,这意味着值无法被完美地缩放到FP4的可表示范围内。缩放后,块的amax要么会溢出FP4的最大可表示值并饱和,要么会向下舍入到一个更小的FP4样本。由于观察到饱和会导致MXFP8训练的收敛问题【16, Mishra et al., 2025】,我们通常将解码缩放因子向上舍入以防止饱和。

MXFP4的动态范围损失。这种缩放策略可能导致一些FP4样本被浪费,同时减少了利用的动态范围。例如,考虑一个绝对最大值为$amax = 3 + \epsilon$的块,其中$\epsilon$表示一个小的增量。为了将块的amax移动到FP4的最大可表示数(对于E2M1是±6),解码缩放因子计算为$s_{dec,L,B} = amax/6 = 0.5 + \epsilon/6$,它会向上舍入到下一个2的幂,即$s_{dec,L,B,UE8M0} = 1$。缩放后,块的amax变为$amax/s_{dec,L,B,UE8M0} = 3 + \epsilon$,量化为FP4中的3。结果,在最坏的情况下,FP4无法表示±4和±6的样本。这也将动态范围减少了将近一个binade,其中只有$\log_2(3/0.5) = 2.58$个binade被利用,而不是完整的$\log_2(6/0.5) = 3.58$个binade,其中0.5表示FP4中最小的正非零量级。

NVFP4的优势。NVFP4通过更精确的E4M3块缩放克服了这一限制,它将块的amax映射得更接近FP4的最大可表示数。这最大化了FP4样本的利用率,并保留了更多FP4的动态范围。

C. 哈达玛变换机制

哈达玛变换的数学原理。随机哈达玛变换对被量化的张量应用一个正交旋转,即$X' = Q(s \cdot (H \cdot X))$,其中$H$是哈达玛矩阵,$Q(\cdot)$是量化函数,$s$是在旋转空间$H \cdot X$中计算的缩放因子。哈达玛矩阵由形式为$H_N = (1/\sqrt{2}) H_2 \otimes H_{N/2}$的归一化矩阵定义,其元素限制为±1。鉴于其正交性,它们可以应用于矩阵乘法的两个操作数:

其中,来自每个操作数的变换在点积内部通过$H^T H = I$被反转。

随机化机制。随机哈达玛变换通过左乘一个$N$维对角随机矩阵$D_r$与一个哈达玛矩阵来向变换中引入随机性,得到$H_r = D_r H$,其中$D_r$的对角线元素从{-1, 1}中随机选择。$D_r$中的元素将翻转$H$不同行的符号。

实现方式。我们以分