Transformers 4.40 对 OpenAI GPT‑OSS 的性能升级:零构建内核、MXFP4 量化、并行化以及更快的加载
TL;DR
OpenAI 的 GPT‑OSS 模型现在在 Hugging Face 的 transformers 库中得到完整支持,并配备了一系列性能升级——包括零构建可下载内核、MXFP4 4 位量化、张量和专家并行、动态滑动窗口缓存、连续批处理以及更快的模型加载——因此开发者可以在单个 GPU 或多 GPU 上更高效地加载、运行和微调这些模型。
来自 Hub 的零构建内核
结论: 预编译的自定义内核可以自动下载,消除构建时的依赖,并为常见的 LLM 操作提供高达 10 倍的加速。
transformers 现在集成了 kernels 包,它会在首次使用时从 Hugging Face Hub 获取二进制内核(例如 Liger RMSNorm、MegaBlocks MoE、FlashAttention 3)。用户可以在加载模型时传入 use_kernels=True 来启用它们:
from transformers import AutoTokenizer, AutoModelForCausalLM
import logging
logging.basicConfig(level=logging.INFO)
model_id = "openai/gpt-oss-20b"
tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
model_id,
dtype="auto",
device_map="auto",
use_kernels=True,
)
日志输出会确认加载了哪些内核,例如 LigerRMSNorm 和 MegaBlocksMoeMLP。原文中的基准测试显示这些内核在更大的批量大小下表现出色,尽管用户应针对自己的工作负载进行基准测试。
带注意力汇聚的 FlashAttention 3
结论: 启用支持注意力汇聚的 FlashAttention 3 内核可在 Hopper 系列 GPU 上实现更低的延迟。
model = AutoModelForCausalLM.from_pretrained(
model_id,
dtype="auto",
device_map="auto",
attn_implementation="kernels-community/vllm-flash-attn3",
)
该内核兼容 NVIDIA Hopper GPU,并利用了 GPT‑OSS 中引入的注意力汇聚特性。
MXFP4 4 位量化
结论: MXFP4 将 120 B 参数 GPT‑OSS 模型的显存占用降低最多 80 GB,使其能够在单个消费级 GPU 上运行,同时通过专用的 Triton 内核保持推理速度。
MXFP4 是什么
MXFP4 使用 E2M1 4 位浮点格式(1 位符号、2 位指数、1 位尾数),并结合 块级缩放(每 32 元素块共享一个比例因子)。该设计在尾数粗糙的情况下仍能保持动态范围。
transformers 中的原生支持
库中提供了量化器(quantizer_mxfp4.py)和集成钩子(integrations/mxfp4.py)。当模型配置中包含 "quant_method": "mxfp4" 时,会自动选择 MXFP4 路径。
from transformers import GptOssConfig
cfg = GptOssConfig.from_pretrained("openai/gpt-oss-120b")
print(cfg.quantization_config)
如果满足所需环境——accelerate、kernels、triton>=3.4,以及计算能力 ≥ 7.5 的 GPU——模型将以 MXFP4 模式运行;否则会回退到 bfloat16,显存消耗约为其四倍。
显存节省
原文中的图 3 展示了显存消耗:量化后的 20 B 模型占用约 16 GB,而未量化时约 64 GB。相同的比例同样适用于 120 B 模型(≈80 GB 对比 >300 GB)。
张量并行(TP)
结论: TP 将张量切分到多个 GPU 上,使得超出单 GPU 显存预算的模型能够在多 GPU 节点上实现更高吞吐量。
transformers 现在在 from_pretrained 中接受 tp_plan="auto" 参数,它会选择内置的切分方案。示例用法:
from transformers import PreTrainedTokenizerFast, GptOssForCausalLM
model_id = "openai/gpt-oss-120b"
tokenizer = PreTrainedTokenizerFast.from_pretrained(model_id)
model = GptOssForCausalLM.from_pretrained(
model_id,
tp_plan="auto",
dtype="auto",
).eval()
TP 在拥有高速内部互连的单节点上表现最佳,并且与仅处理显存放置的 device_map="auto" 不同。
专家并行(EP)
结论: EP 将 MoE 专家分布到多个 GPU 上,补充 TP,进一步降低每个 GPU 上的计算负载,适用于混合专家模型。
通过 DistributedConfig 启用 EP:
from transformers import DistributedConfig
model = GptOssForCausalLM.from_pretrained(
model_id,
distributed_config=DistributedConfig(enable_expert_parallel=True),
dtype="auto",
).eval()
当 EP 激活时,TP 会自动启用,二者共同带来收益。
动态滑动窗口层与缓存
结论: 新的 DynamicSlidingWindowLayer 和 DynamicCache 在达到注意力窗口后停止 KV 缓存增长,使得像 GPT‑OSS 这样的混合注意力模型的缓存显存减半。
该特性默认已启用;开发者也可以显式创建缓存:
from transformers import AutoModelForCausalLM, AutoTokenizer, DynamicCache
model = AutoModelForCausalLM.from_pretrained(
"openai/gpt-oss-20b",
dtype="auto",
device_map="auto",
).eval()
cache = DynamicCache(config=model.config)
基准测试(图 6)显示在长序列生成时显存显著减少且延迟提升。
连续批处理与分页注意力
结论: generate_batch 实现了动态(连续)批处理,通过用新请求填补已完成的槽位,使 GPU 保持忙碌,提供比静态批处理更高的每秒 token 产出。
该 API 仍属实验性质,适用于研究/评估,而非生产服务(生产环境中 vLLM 或 SGLang 更为优秀)。原文提供了参考脚本和基准测试,显示相较于静态批处理可提升约 2 倍。
更快的模型加载
结论: transformers 现在在复制权重之前为每个 GPU 预分配一大块内存,减少了之前导致数十亿参数模型加载缓慢的成千上万次小内存分配调用。
在使用 device_map="auto" 或任何显式设备映射时,此行为会自动生效,并且对启用 TP 的运行同样有益。
整体影响
结论: 通过将社区驱动的内核、MXFP4 量化以及先进的并行策略直接集成到 transformers 中,Hugging Face 大幅降低了运行最前沿 LLM 的硬件门槛,加速了推理和微调,并为其他工具包(MLX、llama.cpp、vLLM)提供了统一的参考实现。
开发者现在可以:
- 使用 MXFP4 在免费版 Colab GPU 上加载 GPT‑OSS 20 B。
- 通过单条
torchrun命令在 4 块 GPU 上扩展 GPT‑OSS 120 B。 - 受益于自动下载内核,无需手动编译。
- 为长上下文应用降低 KV 缓存显存。
所有这些进展均以开源代码形式发布在 transformers 仓库中,文中提供了详细的 PR 链接和示例脚本。
关键资源
- GPT‑OSS 模型中心: https://huggingface.co/collections/openai/gpt-oss-68911959590a1634ba11c7a4
- Kernels 包文档: https://huggingface.co/blog/hello-hf-kernels
- MXFP4 量化器: https://github.com/huggingface/transformers/blob/main/src/transformers/quantizers/quantizer_mxfp4.py
- 张量并行指南: https://huggingface.co/docs/transformers/en/perf_infer_gpu_multi
- 连续批处理示例: https://github.com/huggingface/transformers/blob/main/examples/pytorch/continuous_batching_simple.py
- 更快加载的 PR: https://github.com/huggingface/transformers/pull/36380
入门指南
- 安装最新的
transformers(≥ 4.40),并带上可选的额外依赖:
pip install "transformers[torch,accelerate,triton,kernels]"
- 选择模型(例如
openai/gpt-oss-20b)。 - 启用所需功能(
use_kernels=True、tp_plan="auto"、DistributedConfig(enable_expert_parallel=True))。 - 运行提供的基准脚本,以验证在你的硬件上获得的速度和显存提升。
通过遵循这些步骤,实践者即可立即获得 2025 年 9 月 Hugging Face 博客文章中宣布的性能收益。
未来方向 博客指出,这些集成只是一个快照;库将随着社区贡献持续演进,加入对更新量化格式的支持、更多内核后端,以及与 vLLM 等服务栈的更紧密耦合。
SUMMARY Hugging Face 为 OpenAI 的 GPT‑OSS 模型在 transformers 库中加入了零构建内核、MXFP4 4 位量化、张量和专家并行、动态滑动窗口缓存、连续批处理以及更快的模型加载,显著提升了效率和可扩展性。
TITLE Transformers 4.40 对 OpenAI GPT‑OSS 的性能升级:零构建内核、MXFP4 量化、并行化以及更快的加载