For the complete documentation index, see llms.txt. This page is also available as Markdown.

🦥运行 Unsloth Dynamic NVFP4 指南

了解 Unsloth Dynamic NVFP4 如何在 NVIDIA Blackwell GPU 上实现快速、准确的 4-bit 推理。

Unsloth Dynamic NVFP4 是一种量化模型格式,可在 NVIDIA Blackwell GPU 上运行,旨在实现更快、更准确的 4 位推理。它将 NVIDIA 原生的 NVFP4 精度与 Unsloth Dynamic 2.0 量化结合起来,以在减少 VRAM 占用并提升速度的同时保留模型准确性。本指南将解释 FP4 量化,对比 NVFP4 与其他格式,并展示如何使用 Qwen3.8, Gemma 4Qwen3.6 在本地使用 vLLM 或 SGLang 于 RTX 5050-5090、B200、RTX PRO 6000 以及更多 GPU 上运行。

Dynamic NVFP4 的工作方式是选择重要层保留为 FP8(W8A8)或 BF16,而其余层使用 W4A4(而不是 W4A16),而不是强制每一层都进入 FP4。这使得最高可达到 2.5倍更快的推理 ,因为 W4A4 利用了 Blackwell GPU 的 FP4 Tensor Core。对于所有量化版本,我们还提供 FP8 KV cache 校准,从而实现 2倍更长的上下文长度.

Float4 与其他精度

更快 GPU 的诀窍在于 降低矩阵乘法的数值精度。矩阵乘法单元所需的晶体管数量与 尾数平方相关。尾数决定数字可以有多少“分数”小数位——因此位数越多,对小数的表示就越准确。例如,使用更多尾数位可以表示 0.121332,而尾数位很少时则会把它舍入为 0.1。

FP32 有 23 位尾数,因此需要 23^2 + 8 位指数 = 537 的空间。Bfloat16 有 7 位尾数,因此需要 7^2 + 8 位指数 = 57 的空间。这意味着 bfloat16 所需空间比 FP32 少约 9 倍!而当我们转到只有 3 位尾数的 float8 时,3^2 + 4 位指数 = 13——这比 FP32 少 41 倍!

最后,float4 只有 1 位尾数和 2 位指数,因此只需 3 个空间——比 FP32 足足少 179 倍——这本质上意味着一个 GPU 在相同空间内可执行大约 179 倍更多的 FP4 矩阵乘法,而不是 FP32 乘法 FLOPs!

NVFP4 与 MXFP4

还有另一种叫 MXFP4 的 FP4 格式——由于两个原因,它比 NVFP4 不准确:

  1. NVFP4 的块大小为 16,而 MXFP4 为 32——这使得异常值更容易被隔离,并且会为更小的权重子集提供缩放因子,从而提高准确性

  2. 每个块使用的是 E4M3(FP8)缩放,而不是 E8M0(2 的幂缩放)。采用 FP8 类型的块大小看起来要好得多,尤其是对 LLM 而言。

性能分析

我们的新 动态 NVFP4 Qwen3.6 量化版本运行约快 2.5 倍 相比其他 NVFP4 量化版本,并且具有 更好的性能 且文件大小相当。运行 Qwen3.6-27B NVFP4 快 2.5 倍 24GB 显存 以及 Qwen3.6-35B-A3B 快 1.7 倍 32GB 显存。我们还添加了 FP8 KV cache 校准 ,以实现 2 倍更长的上下文长度!NVFP4 需要 NVIDIA 的 Blackwell GPU,例如 RTX 50X、DGX Spark(见 Unsloth Dynamic NVFP4

,B200、B300 GPU。对于较老的 GPU,我们的 GGUF 也表现良好!全部基准测试都使用 1x B200、128 并发。更高并发可将 35B 提升到 17,561 tokens/s。我们还刚刚发布了新的 Qwen3.8 NVFP4 量化版本:

我们还发布了两个 35B-A3B NVFP4 版本:

在准确性基准测试方面,我们对 FP8、BF16、NVIDIA 的 NVFP4 以及我们的 NVFP4s 进行了 MMLU-Pro、AIME 2025、GPQA 测试——结果显示我们更快的量化版本在所有项目上的表现都相近:

Qwen3.8-27B(新)
Qwen3.6-35B-A3B
Qwen3.6-27B

Qwen3.6-35B-A3B-NVFP4 (快 1.56 倍)

Qwen3.6-27B-NVFP4 (快 2.5 倍)

Qwen3.6-35B-A3B-NVFP4-Fast (快 1.79 倍)

MTP 张量也被直接构建进量化版本中,以进一步加速。 准确性提升来自对 Qwen3.6 聊天模板和数据集校准的改进。我们使用此前对聊天模板的更新来提高代码与工具调用的一致性,同时减少循环和其他已报告问题。我们的校准结合了我们专门为代码、工具调用和聊天优化的数据集,以及 UltraChat。

在解码速度(tokens/s)方面,我们的 27B 快 1.03 倍,而 35B 分别快 1.17 倍和 1.22 倍。

概览

下面是可使用模型所需的硬件要求,包括 Gemma 4 和 Qwen3.6。也请查看你将获得的整体速度提升:

Gemma 4:

Gemma 4 变体
所需显存
比 BF16 更快

7 GB

快 1.12×

9 GB

快 1.22×

11 GB

快 1.26×

26 GB

快 1.41×

32 GB

快 1.45×

Qwen3.6:

Qwen3.6 变体
所需显存
比其他 NVFP4 量化版本更快

24 GB

快 2.5 倍

32 GB

快 1.56×

32 GB

快 1.79×

NVFP4 基准测试

NVFP4 直接在 Blackwell Tensor Core 上运行 4 位权重和矩阵乘法。我们的 Qwen3.6 NVFP4 量化版本使用 W4A4,因此它们实际上使用的是 FP4 Tensor Core,所以解码速度比使用 W4A16 的 NVIDIA 版本更快。我们还会动态量化各层以保留准确性,并对所有量化版本进行了 MMLU-Pro、AIME 2025、GPQA 测试,同时还与 FP8 和 BF16 做了比较。

Qwen3.6-27B NVFP4 准确性基准测试

提供方
MMLU-Pro
GPQA
AIME 2025

Unsloth

86.25

86.34

93.12

NVIDIA

85.96

86.87

93.12

FP8

86.11

86.87

93.75

BF16

85.96

88.13

93.33

Qwen3.6-35B-A3B NVFP4 准确性基准测试

提供方
MMLU-Pro
GPQA
AIME 2025

Unsloth

85.85

86.74

92.29

Unsloth 快速版

85.58

87.75

91.67

NVIDIA

85.60

87.12

91.88

FP8

85.75

86.74

93.12

BF16

85.75

86.36

92.50

我们还检查了所有基准测试的输出长度,结果是可比的,因此新的 NVFP4 量化版本并没有为了“想得更久”而抵消量化的意义!(即如果快 2 倍,但思考也多 2 倍,那就没用了)

运行 NVFP4 教程

要运行 NVFP4 量化版本,请参见下方在 vLLMSGLang 中运行 Qwen3.6-27B 的命令(你可以把模型名称改为 Qwen3.6-35-A3B-NVFP4).

vLLM 教程

你可以在 vLLM中运行所有 NVFP4 模型。不要选择任何 MoE 后端——让 vLLM 自动选择即可——例如 Marlin 会慢 2.5 倍!请参见 Marlin vs Flashinfer vs cutlass vs cute-DSL如果你有 DGX Spark,请参见 Unsloth Dynamic NVFP4 你必须使用 --moe-backend flashinfer_b12x ,否则推理会慢很多。

要在单独的 venv 中安装 vLLM:

然后启动 35B Fast 版本:

unsloth/Qwen3.6-35B-A3B-NVFP4-Fast 替换为 NVFP4 量化名称!

要启用 MTP / speculative decoding(解码更快,但吞吐会稍低),请使用:

如果你遇到 Torchcodec 问题,请务必先执行下面的步骤,然后重新启动 vllm。

DGX Spark 教程

为确保 DGX Spark 使用正确的内核(否则你会得到 快 2 倍的推理),请先检查:

这不应该报错——如果报错了,请更新 vllm 或通过以下方式重新安装:

然后在 DGX Spark 上用 vLLM 提供服务:

如果你遇到 Torchcodec 问题,请务必先执行下面的步骤,然后重新启动 vllm。

SGLang 教程:

你可以在 SGLang。记得把模型名称替换成你想要的模型。

Qwen3.6:

Gemma 4:

Gemma 4 及其他

现在每个 Gemma 4 变体都有一个 Unsloth Dynamic NVFP4 检查点。

我们显示 Gemma-4 在 1x B200 上以 128 并发服务时,相比 BF16 的吞吐提升最高可达 1.44 倍。Qwen3.5-122B-A10B 快 1.38 倍,GLM-4.7-Flash 快 1.27 倍。

Marlin vs Flashinfer vs cutlass vs cute-DSL

我们还发现 Marlin kernel 对 W4A4 的支持并不好——启用它会导致 2.5 倍的性能下降——因此请使用 CUTLASS、Flashinfer-TRTLLM 或 Cute-DSL(在 vLLM 中自动启用)!如果你有 DGX Spark,也请参见 Unsloth Dynamic NVFP4 你必须使用 --moe-backend flashinfer_b12x ,否则推理会慢 2.5 倍。

所以不要设置任何后端——vLLM 会自动选择最佳方案。

模型
方案
后端
解码 tok/s
吞吐 tok/s

NVIDIA 27B

W4A16

marlin(自动)

115.6

2,403

Unsloth 27B

W4A4

marlin

105.6

2,127

Unsloth 27B

W4A4

cutlass

113.5

6,681

Unsloth 27B

W4A4

flashinfer_trtllm

112.6

6,158

Unsloth 27B

W4A4

cute-DSL(自动)

125.9

6,863

NVIDIA 35B-A3B

W4A4

marlin(自动)

240.8

8,721

Unsloth 35B-A3B

W4A4

marlin

215.8

8,619

Unsloth 35B-A3B

W4A4

cutlass

158.3

11,017

Unsloth 35B-A3B

W4A4

cute-DSL(自动)

295.2

15,636

最后更新于

这有帮助吗?