news 2026/10/1 4:02:20

NVFP4 vs MXFP4 vs 普通 FP4:4bit 浮点进化史——区别、怎么想到的、解决什么问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
NVFP4 vs MXFP4 vs 普通 FP4:4bit 浮点进化史——区别、怎么想到的、解决什么问题

NVFP4 vs MXFP4 vs 普通 FP4:4bit 浮点进化史——区别、怎么想到的、解决什么问题

声明:本文作为笔者个人备忘的文章,不喜勿喷。· 综合 NVIDIA 技术博客、CSDN/知乎/腾讯云、OCP MicroScaling 规范、壁仞/AMD 公开资料等(2026-09)


〇、导读

英伟达 Blackwell 把 FP4(4-bit 浮点)算力推到了惊人的 9~15 PFLOPS,宣传语常说"4 位精度、16 位表现"。但当你真去部署时,会碰到三个长得像的格式:普通 FP4、MXFP4、NVFP4。它们都叫"4 位",却根本不是一回事——普通 FP4 几乎没人直接用,真正上战场的是 MXFP4 和 NVFP4 这对"师兄弟"。

这篇讲清楚:① 三种格式到底是什么 → ② 核心解决什么问题 → ③ 这个思路怎么想到的 → ④ 工程上带来的差异与代价。


一、三种格式到底是什么

1. 普通 FP4(原生 4-bit 浮点,E2M1)

  • 2 位指数 + 1 位尾数,一共 4 位。
  • 指数只能表达 4 种状态,尾数只能表达 1.0 / 1.5 两种精度。
  • 数值范围只有 [-6, 6],极其有限。
  • 问题:张量里一旦出现大数值(outlier 离群值),要么溢出爆炸,要么大量普通数值被压到相近值、欠拟合。所以裸 FP4 直接用来算,精度几乎不可用。

2. MXFP4(OCP Micro-Scaling 微缩放)

  • 由 OCP(Open Compute Project)制定的MicroScaling(MX)通用框架下的 FP4 格式,跨 FP8/FP6/FP4/INT8 统一。
  • 核心:把一个张量切成每 32 个连续元素的小块,每个块共享一个E8M0(8 位指数、0 位尾数)缩放因子——它是一个2 的幂乘数。
  • 重建:每个元素 = 该元素的 4-bit 尾数 × 块共享的 2 的幂缩放。
  • 特点:每个小块有自己的动态范围,不会被全局 outlier"绑架";且 2 的幂缩放对硬件极友好,适配 Blackwell 张量核的 1×32 粒度。AMD 的 MI355X 也原生支持。

3. NVFP4(NVIDIA 自家微缩放格式)

  • 同样是"块内共享缩放"的思路,但做了三处针对精度的升级:
    • 块更细:从 32 元素缩到16 元素微块;
    • 缩放因子更准:把 E8M0(只能 2 的幂)换成E4M3(4 位指数 3 位尾数的 FP8),支持分数倍缩放(1.5×、2.5×…),舍入误差远小于"只能乘 2 的幂"的 MXFP4;
    • 加了一层全张量 FP32 全局缩放:对数值跨度极大的张量做全局协调,形成"微块精细缩放 + 张量全局缩放"的双重缩放。

4. 三者一张表看懂

维度普通 FP4MXFP4NVFP4
位结构E2M14bit 尾数 + 块共享指数4bit 尾数 + 微块共享缩放
缩放方式无缩放32 值块 +E8M0(2的幂)16 值微块 +E4M3(FP8,分数倍)+ 全张量 FP32
数值范围[-6,6],很窄大(块级动态范围)大(更精细块级+全局)
缩放精度—粗,指数级舍入偏大细,可分数倍,更准
主导方IEEE/原生OCP 开放标准NVIDIA 专有
硬件通用Blackwell/AMD 张量核Blackwell 原生
定位理论 4bit统一生态 + 硬件效率高精度 + 训练稳定

二、核心解决什么问题

  1. 解决普通 FP4"范围太窄、精度崩溃"的死穴:一个张量里数值可能差好几个数量级,单靠裸 FP4 必然溢出/欠拟合。块缩放让"每个小块有独立动态范围",是最关键的破解。
  2. 在 4-bit 下逼近 16-bit 精度:NVFP4 官方宣称实现了"16 位训练的精度 + 4 位训练的速度和效率",通过哈达玛变换重排数值分布、随机舍入、2D 块量化等,让低精度不损失质量(MIT 的研究也用 NVFP4+SVDQuant 在 FLUX 上接近 16 位输出)。
  3. 极致省显存、带宽和算力:4-bit 数据只有 FP16 的1/4、FP8 的1/2,直接砍掉显存占用、通信量(AllGather 减半)和计算 FLOPs,是 Blackwell 冲上 FP4 9~15 PFLOPS、缓解"显存墙/带宽墙"的根本。
  4. 统一生态 vs 高精度两条路线:MX 系列要的是"跨厂商、跨精度统一框架 + 硬件高效",NVFP4 要的是"单家极致精度 + 训练可用"——这就是两者的分野。

三、这个思路是怎么"想到"的?(思想来源)

  • 本质是"块浮点 / 共享指数"的再次升级:整张量共用一个缩放(per-tensor)不够,就细化到 per-channel、per-block、再到 per-microblock——量化粒度从"全局一刀切"走向"局部自适应",是低精度表示演进的主线。
  • 直接前辈是 FP8 的缩放策略:FP8 训练从per-tensor → per-tensor-block(128×128,DeepSeek-V3 验证)→ MXFP8 的 1×32 细粒度(Blackwell 张量核原生)。FP4 只是在 FP8 这条路上再走深一步。
  • 两个组织用不同价值观给了答案:
    • OCP/MX想统一:MXFP4 用最笨但最便宜的E8M0(2 的幂)换硬件极致简单和跨厂商互操作,代价是缩放粗糙、有舍入误差;
    • NVIDIA/NVFP4想做到极致:用 E4M3 的分数倍缩放换更准的量化,再叠加随机哈达玛等"工程魔法",把 4-bit 训练稳定地卷上"16 位精度"。
  • 一句话总结思路:“与其让所有数共享一个量程,不如给每个局部小块一个自己的量程。”

四、工程上带来的差异与代价(实战认知)

  1. 缩放因子决定了精度天花板:E8M0 只能乘 2 的幂 → 块内数值被"成倍"压缩,遇到非 2 的幂的真实分布误差大;E4M3 支持 1.5×/2.5× 等分数倍 → 更贴合数据分布、误差小。
  2. 块大小影响适应性:MXFP4 用 32、NVFP4 用 16,块越小越能避免"大数掩盖小变化",但缩放开销和硬件成本越高。
  3. NVFP4 不是"改一行类型就能用":要稳定,需要重做量化感知训练(QAT)、校准敏感度、重写低精度内核,甚至做哈达玛变换+随机舍入的融合内核。硬把 FP8 权重截断成 4-bit 会快速崩精度(连 NVIDIA 自家 DLSS 都还没完成全量 NVFP4 量化)。
  4. MXFP4 生态更开放,NVFP4 精度更极致:
    • 追求跨硬件、省事、统一 → MXFP4(OCP,Intel/AMD/ARM/NVIDIA 都参与);
    • 追求极限精度、训练质量、单一家 Blackwell → NVFP4。
    • 目前原生 A4W4 训练的开源大模型还很少(如 GPT-OSS 仅 MoE 层用 MXFP4),未来缩放粒度/格式可能仍有演化。

五、总结(个人备忘)

  • 普通 FP4:E2M1,范围 [-6,6] 太窄,裸用会溢出/欠拟合——是"地基",不当主力。
  • MXFP4:32 块 + E8M0(2的幂) 共享指数,块级动态范围,宽动态 + 硬件高效 + 开放统一,但缩放大、精度略粗。
  • NVFP4:16 微块 + E4M3(FP8,分数倍) + 全张量 FP32,更细、更准、训练稳定,但 NVIDIA 专有、实现重。
  • 路线:一句话——“给每个局部小块一个自己的量程”,从 per-tensor 一路细化到 per-microblock。
  • 选型:跨平台省事用 MXFP4;单家 Blackwell 要极限精度/训练用 NVFP4。

声明:本文作为笔者个人备忘的文章,不喜勿喷。以及AI生成。


主要参考来源(公开资料)

NVIDIA 技术博客(Introducing NVFP4 / NVFP4 16-bit 精度 4-bit 速度 / FP8 按张量与按块缩放)、CSDN 文库(MXFP4 vs NVFP4 全对比选型)、腾讯云开发者社区(NVFP4 量化 2.3× 推理加速)、腾讯新闻/AMD(MXFP4 微缩放与训练不稳定性研究)、壁仞(MXFP4 缩放粒度与异常值平滑)、知乎(Megatron-Core 下 FP8/FP4 训练实战)。本文由 AI 辅助整理。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/1 4:02:18

高校Wi-Fi 7全覆盖建设实战:从技术选型到落地验收

1. 校园网的真实瓶颈:为什么Wi-Fi 5/6的升级被提前提上日程在高校信息中心待过的人都有这种体会:每年新生入学季,就是一次网络运维的“大考”。湖职这次启动Wi-Fi 7全覆盖建设之前,我们其实已经做过一轮摸底测试。测试结果不太乐观…

作者头像 李华
网站建设 2026/10/1 4:02:02

大西洋花园马德拉:徒步levada+自驾环岛深度攻略

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 4:01:19

Linux下LAMMPS安装全攻略:从环境配置到GPU加速

1. 安装之前,你得先想清楚这三件事这几年分子动力学模拟越来越普及,LAMMPS作为一款开源免费、生态庞大、社区活跃的软件,几乎成了做材料、化学、生物、物理模拟的人绕不开的工具。我见过太多人一上来就搜“lammps安装教程”,照着别…

作者头像 李华
网站建设 2026/10/1 4:01:11

跨平台开发对抗赛:SQLite数据层与Godot物理回滚的实战拆解

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/10/1 4:00:47

Flutter插件鸿蒙化适配:以MercadoPago支付SDK为例

做了几年 Flutter 跨境支付,MercadoPago 这个名字应该不陌生:拉美市场的“微信支付支付宝”,巴西、阿根廷、墨西哥这些国家的电商基本绕不开它。我们团队负责的拉美业务线,早期在 Android 和 iOS 上就用 Flutter 接入了官方维护的…

作者头像 李华