工具
NInfer fork:双 5090 跑通 Qwen3-27B 1M 上下文
开发者 fork NInfer 推理引擎,加入张量并行与 YaRN×4 位置扩展,让 Qwen3-27B 在两张 RTX…
2026.08.30 · 周日约 3 分钟阅读
近日,海外开发者社区出现了一个针对 Qwen3 系列模型的 C++20/CUDA 推理引擎 NInfer 的 fork 项目。该作者在原版基础上加入了两项关键改造:张量并行(tensor parallel)扩展至两张 GPU,以及 YaRN ×4 的 RoPE 位置编码外推。二者结合后,Qwen3-27B(NVFP4 量化)在两张消费级 RTX 5090 上实现了 1,048,576 token 的全上下文推理,每张卡占用约 27.4 GB 显存,全程无 NVLink 互联。
性能实测与 vLLM 对比
作者在 500 W 单卡功耗上限下进行单流测试,主要结果如下:
- Decode(解码)速度:在约 65.3 万 token 上下文下,使用 MTP 投机解码可达到 119 tok/s,关闭 MTP 时为 57 tok/s;同一组 prompt 下 vLLM 仅 42 tok/s。
- 1M 上下文:开启 MTP 时 decode 约 100 tok/s,关闭时约 48 tok/s。
- Prefill(预填充):vLLM 反而更快,比 NInfer 高约 1.2–1.3 倍;NInfer 处理完整 1M prompt 用时约 18 分钟,这一部分尚未调优。
- 双卡 vs 单卡:在 25 万 token 上下文下,双卡 75 tok/s,单卡 54 tok/s;每张卡上的权重与 KV 流量减半,且跨 GPU 约 128 次归约操作在 CUDA Graphs 下仅多出约 0.2 ms。
关键差异:MTP 接受率
作者特别指出,长上下文下两套引擎表现拉开差距的核心原因在于 MTP 投机解码的接受率:
- vLLM 一旦超过 Qwen3 自身的 26.2 万原生上下文窗口,MTP 接受率直接归零——在 1,533 个 draft 中 0 个被接受,drafter 模型的开销被白白浪费。
- NInfer 的接受率在扩展到 1M 上下文时仍能稳定在 55%–60% 区间。
此外,vLLM 的 FP8 KV cache 在双 5090 上最高约支撑 75.9 万 token,而 NInfer 使用 INT8 KV cache 可以完整装下 1,048,576 token。
现状与局限
该项目仍是一个个人 fork,并非厂商正式发布版本,预填充速度和工程稳定性仍是短板。作者表示 NTuner 项目对未来整合更长上下文与更高效投机解码持开放态度。整体来看,对于希望在 5090 这种消费级硬件上跑超长上下文 Qwen3 的研究者与极客玩家而言,这是一种值得尝试的轻量化推理方案,但生产环境的可靠性仍待验证。
