@AaronWeiHuang:我们最新博客探讨了FP4如何从压缩工具演变为训练和推理的实用基础方案,涵盖……
摘要
NVIDIA的博客详细介绍了FP4(配合NVFP4格式和Blackwell硬件)如何从一种压缩技巧演变为训练和推理的实用基础方案,涵盖LLM和扩散模型,并实现了接近16位的精度。
查看缓存全文
缓存时间: 2026/07/01 04:01
我们的新博客探讨了FP4如何超越压缩,成为LLM和扩散模型训练与推理的实用原语:
https://research.nvidia.com/labs/eai/blogs/pushing-intelligence-to-4-bit…
- 为什么4位很困难:仅有15个值使得缩放至关重要。
- NVFP4:更小的块和更精细的缩放提高了精度。
- LLM与FP4:W4A4计算、训练、推理和融合内核。
- 视频生成:端到端4位训练和实时推理。
- KV缓存量化:压缩、K平滑和并行反量化。
- FP4注意力:低精度注意力与专用softmax处理。
要点:通过协同设计的格式、内核、内存系统和模型,FP4成为未来大型模型的一个有吸引力的选择。
@yukangchen_ @WeianMaoX @ShuaiYa68505475 @songhan_mit
将智能推向4位
来源:https://research.nvidia.com/labs/eai/blogs/pushing-intelligence-to-4-bit/ 四位浮点(FP4)将每个值编码为仅十六个等级。直到最近这仅适用于存储;借助NVIDIA的NVFP4格式和Blackwell硬件,它现在支持大型模型的完整生命周期——训练、推理,甚至长视频生成——且精度接近16位。本文解释了FP4如何实现这一目标,涵盖LLM、扩散和视频领域,以及尚未解决的问题。
核心困难在于表示:四位仅提供十五个不同的数值,因此精度完全取决于这些数值如何缩放。NVFP4通过细粒度、双层缩放解决了这个问题,Blackwell原生执行这种缩放——回报现在延伸至整个技术栈,从LLM权重和激活值到KV缓存、注意力机制,以及完整的扩散视频生成。
FP4已从仅用于存储的压缩技巧,转变为推理和训练的原语。 NVFP4为Blackwell Tensor Cores提供了实用的4位路径,涵盖权重、激活值、KV缓存和注意力机制——适用于语言、视觉和视频模型。
在本文中
- 为什么4位很困难(https://research.nvidia.com/labs/eai/blogs/pushing-intelligence-to-4-bit/#why-hard)
- NVFP4:更智能的标尺(https://research.nvidia.com/labs/eai/blogs/pushing-intelligence-to-4-bit/#nvfp4)
- LLM与FP4(https://research.nvidia.com/labs/eai/blogs/pushing-intelligence-to-4-bit/#llm)
- 视频生成与FP4(https://research.nvidia.com/labs/eai/blogs/pushing-intelligence-to-4-bit/#video)
- KV缓存量化与FP4(https://research.nvidia.com/labs/eai/blogs/pushing-intelligence-to-4-bit/#kv-cache)
- FP4注意力(https://research.nvidia.com/labs/eai/blogs/pushing-intelligence-to-4-bit/#attention)
1. 为什么4位很困难
大多数人通过整数——INT8、INT4——来接触量化,即权重被压缩到更少位数中,带有一个缩放因子。FP4则有所不同:仍然是四位,但采用浮点形状(符号、指数、尾数)。E2M1变体具有1个符号位、2个指数位、1个尾数位,这恰好产生十五个不同的数值:{0, ±0.5, ±1, ±1.5, ±2, ±3, ±4, ±6}。
将FP4想象成一个微型标尺,只有寥寥几个刻度。一个4位编码只是挑选哪个刻度;其他东西必须决定标尺在实数上的放置位置。那个“其他东西”就是缩放因子,最终格式的精度就取决于它——无论张量是LLM的权重、扩散模型的激活值还是KV缓存。十五个刻度几乎微不足道:如果一个张量混合了小值、大异常值和介于两者之间的所有数值,一个全局标尺会将其大部分刻度浪费在空区域上。
解决办法是停止对整个张量使用一个标尺。MXFP4,开放计算项目的微缩放格式,为每32个值的块分配自己的2的幂缩放(一个E8M0指数)[2],因此一个异常值只会扭曲其局部块。问题在于,2的幂调节是粗糙的:如果理想缩放位于两个2的幂之间,MXFP4必须进行舍入,而微小的4位预算为此误差付出了代价。NVFP4精确地改进了这一点——NVIDIA自己的图表最好地说明了这一点:
NVIDIA diagram comparing MXFP4’s coarse 32-value power-of-two block scaling against NVFP4’s finer 16-value blocks each with a dynamically computed FP8 scale图1. MXFP4在每32个值上放置一个粗糙的2的幂缩放;NVFP4在每16个值上放置一个更精细、动态计算的缩放。更小的块和更精准的调节能更紧密地适应不均匀的分布。来源:NVIDIA,“Introducing NVFP4 for Efficient and Accurate Low-Precision Inference”,NVIDIA技术博客,2025年[1]。
2. NVFP4:更智能的标尺
NVFP4保留了配方——4位E2M1值加块缩放——但改进了两个旋钮。它使用一个共享的FP8(E4M3)缩放用于每16个值的块,外加一个更高层的FP32每张量缩放[1]。与MXFP4相比有两个变化,均具有决定性:
- 更小的块(16对32):一个异常值只污染一半的数值。
- 更精细的调节(带有尾数位的E4M3,对比2的幂E8M0):标尺落在数据实际所在的位置。NVIDIA报告称量化误差比2的幂缩放降低约88%[1]。
- 两个层级:FP32每张量缩放对整个张量进行归一化,使每个块的E4M3缩放能干净地适配FP8——上层提供全局范围,每块提供局部适配。
NVIDIA diagram of NVFP4’s two-level scaling: a 4-bit E2M1 element, groups of 16 values each sharing an FP8 E4M3 block scale, and a global FP32 per-tensor scale图2. NVFP4的两级结构:4位E2M1元素、每个16值微块共享一个FP8(E4M3)块缩放、以及一个全局FP32每张量缩放。来源:NVIDIA,“Introducing NVFP4 for Efficient and Accurate Low-Precision Inference”,NVIDIA技术博客,2025年[1]。
| 格式 | 心智模型 | 缩放 | 权衡 |
|---|---|---|---|
| FP4 E2M1 | 一个15刻度的码本。 | 需要外部缩放。 | 仅有15个值。 |
| MXFP4 | 每32个值一个2的幂调节。 | E8M0 / 32值块。 | 简单但粗糙。 |
| NVFP4 | 每16个值一个更精细的调节,外加全局调整。 | E4M3 / 16值块 + FP32张量缩放。 | 精度更高;需要Blackwell。约4.5比特/值,对比MXFP4的约4.25。 |
本文跟踪FP4在技术栈中的上升——从LLM到扩散到视频——并进入两个最困难的地方:KV缓存和注意力。关于伴随这个故事的长视频并行性和KV缓存基础设施,请参阅我们的配套文章:关于使用并行性扩展视频训练和KV缓存压缩。
3. LLM与FP4
FP4首先在大规模LLM推理中得到应用,这恰恰受限于低精度最擅长的操作:从内存中移动权重、将权重与激活值相乘、以及存储随上下文增长的KV缓存。最具挑战性的目标是W4A4——权重和激活值都是四位——因为同时量化两者才能加速算术运算,而不仅仅是存储。这种算术主要由矩阵乘法主导,在W4A4中,它在Blackwell Tensor Cores上完全以4位执行:
W4A4 NVFP4 matrix multiply on a Blackwell Tensor Core图3 — NVFP4 W4A4矩阵乘法 输出 = 权重 x 激活值,两个操作数均为4位,在Blackwell Tensor Core上 W · 权重 NVFP4 4位 × X · 激活值 NVFP4 4位 Blackwell Tensor Core W4A4 GEMM · 低精度 A · B = C Y · 输出 累加 每元素内存流量 BF16 16位 NVFP4 4位 · 1/4 W4A4:权重和激活值均为4位,最高4倍GEMM吞吐量 · 对比BF16内存流量减至1/4 权重和激活值均为4位——乘法本身以低精度运行 经过NVFP4感知训练,因此W4A4推理保持质量
图3. W4A4 NVFP4推理:权重和激活值均为4位,因此主要的矩阵乘法直接在Blackwell Tensor Cores上以低精度运行——相比BF16,吞吐量上限提升至4倍,且内存流量大大减少[1][5]。
然而,馈送这些4位GEMM并非没有代价。每个激活值必须在乘法之前立即量化为NVFP4,如果这个转换作为独立内核运行,它会增加一次额外的HBM往返——一个运算开销税,可能悄无声息地侵蚀4倍上限,尤其是在较小、受内存限制的层上。标准的解决方法是内核融合:将激活值量化折叠到GEMM的前导部分(并将前面的归一化折叠到后记部分),这样转换在寄存器中内联完成,无需对内存进行额外遍历。生产级NVFP4栈依赖于这些融合内核——NVIDIA的TransformerEngine提供融合的量化-and-GEMM路径,而TensorRT Model Optimizer提供NVFP4量化配方[9][10]。
精度能保持吗?大体上可以。将DeepSeek-R1训练后量化为NVFP4后,在推理和知识基准测试中精度保持在FP8的约1%以内(MMLU-Pro 85→84,GPQA 81→80,AIME 2024实际上从89升至91)[1]。并且NVFP4始终优于MXFP4:在一次面对面的预训练运行中,要达到与NVFP4相同的损失,MXFP4需要多36%的令牌[12][3]。这种精度余量使得格式的效率提升可以在无需重新训练的情况下实现。
FP4在LLM全生命周期中——训练和推理 训练(Llama-3.1 405B预训练)1.0×FP8 1.9×NVFP4 推理(峰值吞吐量,Blackwell)1.0×FP8 3.0×NVFP4 相对FP8(= 1.0×)。推理为同硬件峰值吞吐量;训练为Llama-3.1 405B预训练。
图4. NVFP4在LLM全生命周期中:相比FP8,预训练速度提升约1.9倍(Llama-3.1 405B),在Blackwell上推理峰值吞吐量高达FP8的约3倍,精度达到FP8水平且领先于MXFP4 [11][1]。
这不再是实验室成果。NVFP4推理已内置在TensorRT-LLM中,量化配方内置在TensorRT Model Optimizer中,前沿模型(包括DeepSeek-R1)的NVFP4检查点已发布供Blackwell部署[1][11]。更新的设计走得更远,将FP4直接构建到架构中:DeepSeek-V4——一个1.6万亿参数的混合专家模型——通过量化感知训练将其专家权重和稀疏注意力索引器直接在FP4中训练,其余组件保持FP8。因此,模型的最大部分有意以四位存储和计算,而非事后量化[15]。OpenAI的开源权重GPT-OSS模型使用不同格式做出了相同的选择:其MoE专家——超过90%的参数——以量化感知方式在MXFP4中训练,这使得120B模型能在单个80 GB GPU上运行[16]。这种对比具有启发性:两者都通过QAT将4位烘焙到模型中,但DeepSeek-V4使用了NVFP4更精细的16值块,而GPT-OSS使用了MXFP4更简单的32值块——与第2节相同的权衡,现在在前沿模型内部决定。
4. 视频生成与FP4
扩散和视频生成是较新的目标,并且相同的W4A4方法适用:扩散变压器(DiT)主要由上图中的矩阵乘法组成,在多个去噪步骤中重复。量化在这里也有效:像ViDiT-Q这样的方法使用定制内核将DiT推至W8A8和W4A8,视觉损失可忽略[14]。激进的做法是直接走向端到端W4A4 NVFP4。
这一方向建立在我们早期的Blackwell工作之上。2025年2月,我们的RTX 5090设置报告记录了消费级GPU对原生FP4的早期访问,随后我们的SVDQuant + NVFP4演示展示了FLUX以比BF16小4倍、快3倍的速度运行,并且质量接近16位——且图像质量优于INT4[23][24]。LongLive-2.0将这条以推理为先的路线扩展为端到端的长视频系统,涵盖训练、W4A4执行、KV缓存和注意力。
LongLive-2.0是最清晰的例子:一个基于Wan2.2-TI2V-5B构建的自回归(AR)长视频模型,在训练和推理中均运行NVFP4——据我们所知,这是首个用于长视频生成的端到端NVFP4方案[5][8]。结果是一个5B模型,能够实时生成长达一分钟、720p的视频:
一分钟视频,逐块绘制——实时进行 五张由NVFP4实际生成的机器人种植幼苗的帧,一个绿色生成高亮逐帧移动,一个FPS标注胶囊,以及一个加速条。 一分钟视频,逐块绘制——实时进行 45.7 FPS · 1280×720 · 约2倍实时 生成中… 3.3 FPS(50步基础)→ 45.7 FPS · 约14倍更快,同样720p 每个块从其前面的干净历史生成 过去保持冻结——只计算下一个块
图5. 来自LongLive-2.0的真实NVFP4生成帧(机器人种植幼苗):一个5B自回归模型实时流式传输720p视频,每个块建立在其前面的干净历史之上。帧来自LongLive-2.0论文预告片[5]。
训练:一个NVFP4流水线,两个阶段
质量在降到四位后得以保持,因为模型是以NVFP4感知方式训练的,而非事后量化,并且该训练分两个NVFP4阶段进行。首先,双向基础模型被微调为块级AR生成器,采用干净上下文教师强制——每个块基于其前面的干净历史进行去噪。为了适应长序列,均衡序列并行将配对的干净块和噪声块分片到多个GPU,使承担损失计算的工作保持均衡,同时NVFP4加速了以GEMM为主的DiT;两者结合将64秒AR训练迭代时间相比BF16+SP(纯BF16无SP会出现内存不足)降低了2.1倍。
其次,为了达到实时速度,模型通过分布匹配蒸馏(DMD)蒸馏到少量去噪步骤——同样以四位运行。DMD在每块GPU上共置三个网络:一个生成器、一个真实评分模型和一个虚假评分模型。所有三个模型共享一个冻结的W4A4 NVFP4主干,并且在
相似文章
@HowToAI_: NVIDIA 完成了一项不可能的任务,却无人提及。他们以 4 位精度训练了一个 120 亿参数的 LLM…
NVIDIA 利用新的 NVFP4 格式及微缩放技术,以 4 位精度训练了一个 120 亿参数的大语言模型,在几乎不损失智能的同时,内存使用减半、算术速度提升三倍,标志着高效 AI 训练的重大突破。
@RayFernando1337: “所选运行时使用NVFP4权重以获得最大性能。从原始FP8权重,我们进行了内部量…
讨论使用NVFP4 4位浮点权重以获得最大性能,通过使用NVIDIA ModelOpt从FP8进行内部量化实现,突出了该数据格式的双缩放因子以保持高动态范围。
@nrehiew_:献给视觉学习者
一条推文线程,回顾了论文《使用NVFP4预训练大型语言模型》并讨论了NVFP4预训练,特别是针对NVIDIA Blackwell。
@hotschmoe: 在阅读了这篇文章后,我决定让 nvfp4 在我的 Intel Arc B70s 上运行看看,12小时后,它的运行速度……
一位用户成功在 Intel Arc B70s GPU 上运行了 nvfp4 量化,相比其最佳的 int4 配置,实现了近乎两倍的速度和更高的精度,挑战了硬件特定的格式假设。
@eisokant:来自@ArkadiiBessonov关于我们预训练团队的一篇精彩博客文章!
一条推文分享了一篇博客文章,讨论了LLM预训练中FP8的三种方法:per-tensor、blockwise和MXFP8,重点介绍了缩放因子的附加方式。