Qwen3.8-Flash-Next NVFP4 在双DGX Spark上的配置:解码速度50t/s,预填充速度2,900t/s
摘要
用户分享了在双DGX Spark硬件上部署Qwen3.8-Flash-Next模型的优化配置,通过技术补丁和设置细节,实现了高达50t/s的解码速度和2,900t/s的预填充速度。
折腾了几天后,这是我目前的配置,希望能帮助到其他人。其中一些内容对单个Spark也有价值。基准测试:双Spark TP2,eager + MTP k=3,262k上下文(预热中位数,精确分词器计数):
┌─────────┬──────────────────┬───────────────────┬─────────────────────────────────┐
│ 流数量 │ 解码总速度 │ 解码单流速度 │ 预填充总速度(10k提示) │
├─────────┼──────────────────┼───────────────────┼─────────────────────────────────┤
│ 1 │ 45.9 t/s │ 45.9 t/s │ 2,940 t/s │
├─────────┼──────────────────┼───────────────────┼─────────────────────────────────┤
│ 4 │ 120.2 t/s │ 30.0 t/s │ 2,524 t/s │
├─────────┼──────────────────┼───────────────────┼─────────────────────────────────┤
│ 8 │ 222.2 t/s │ 27.8 t/s │ 3,098 t/s │
├─────────┼──────────────────┼───────────────────┼─────────────────────────────────┤
│ 13 │ 265.9 t/s │ 20.5 t/s │ 2,960 t/s │
└─────────┴──────────────────┴───────────────────┴─────────────────────────────────┘
预填充与提示深度对比(单流,精确令牌):
┌─────────────┬───────────┐
│ 提示大小 │ 预填充速度│
├─────────────┼───────────┤
│ 11k │ 2,875 t/s │
├─────────────┼───────────┤
│ 100k │ 2,655 t/s │
├─────────────┼───────────┤
│ 200k │ 2,463 t/s │
└─────────────┴───────────┘
以下是一些AI生成的废话,供你阅读并粘贴到你自己的代理中 :)
技术栈 vLLM PR #53896(release/qwen38next分支)——不是main分支;main分支没有该模型,且配方镜像的vLLM提交不在公共仓库中
sm_121支持是一个2文件补丁(详情见下文)——GB10是架构12.1,NVFP4 E2M1转换需要软件回退
PLE n-gram表通过mmap从内部NVMe提供(48 GB,MADV_RANDOM是必须的——在哈希分散的行查找中,读取放大相差30倍),并有一个节点本地CPU工作者进程通过ZMQ + 固定缓冲区 + CUDA-IPC输出进行收集,使收集在图安全且TP2安全
跨双Spark的TP2:原生venv(不是docker——见死胡同),eager + MTP k=3
数字(TP2,预热中位数,结构化计数-20 / 3段散文):
配置结构化散文预填充(11k令牌)eager + MTP k=3
49.7 34.8 ~2,875
死胡同
分段图在MTP+TP2下成本约28%的解码。相同的树,相同的条件,开启与关闭图:36 vs 50 tok/s。图对单节点无MTP解码有帮助(+80%,9→16.5),但与MTP在TP2结合时是纯粹的损失——MTP已经摊销了图所消除的启动开销。我们追踪了一天的“树级MTP回归”,才意识到配置本身就是回归。
Docker静默地将NCCL降级为TCP套接字。默认容器没有IB设备 → NET/Socket → TP2预填充速度约为原生的40%。你需要--privileged(或IB设备直通)以及正确的HCA名称——见下一点。
原生venv运行只获取RoCE。RoCE设备名称在重启后不稳定,并且在两个相同机器之间可能不同(我们的:一个是rocep1s0f1,另一个是rocep1s0f0,动态解析)。硬编码NCCL_IB_HCA会在一个节点上静默失败。用ibdev2netdev枚举,匹配port-ACTIVE到你的轨道netdev,并用NCCL_DEBUG=INFO验证你看到NET/IB,而不是NET/Socket。
flashinfer在GB10上必须是0.6.18——0.6.17会崩溃NVFP4 MoE回退内核。
vLLM的MoE shuffleInputRowsKernel有一个未初始化排列的越界读取,显示为假CUTLASS status=7 GEMM失败——一个两行边界保护修复它(已在PR #53896中)。
2文件sm_121补丁(相对于PR #53896基础):
CMakeLists.txt:将12.1添加到CUDA_SUPPORTED_ARCHS、SCALED_MM_ARCHS、CUTLASS_MOE_DATA_ARCHS、FP4_SM120_ARCHS
csrc/libtorch_stable/quantization/fp4/nvfp4_utils.cuh:约90行软件E2M1转换,由__CUDA_ARCH__ == 1210保护(GB10没有cvt.rn.satfinite.e2m1x2.f32)
这就是完整的差异。离线构建,使用通常的依赖缓存;CUDA架构121。
启动命令:
头部节点(rank 0):
export VLLM_PLE_MMAP=1
VLLM_PLE_MMAP_WORKERS=64
VLLM_PLE_MMAP_PREWARM=1
export VLLM_PLE_MMAP_DIR=$HOME/ple-table # 表的内部NVMe副本
export VLLM_PLE_CPU_OFFLOAD=1 # 激活IPC CPU工作者收集路径
export NCCL_SOCKET_IFNAME=<your-rail-if> # 仅引导;NCCL自行找到RoCE
export GLOO_SOCKET_IFNAME=<your-rail-if>
python -m vllm.entrypoints.openai.api_server \
--model <path-to-qwen38-flashnext-nvfp4> \
--host 0.0.0.0 --port 8086 --load-format safetensors \
--tensor-parallel-size 2 --nnodes 2 --node-rank 0 \
--master-addr <head-rail-ip> --master-port 29511 \
--distributed-executor-backend mp \
--max-model-len 262144 --max-num-seqs 13 --gpu-memory-utilization 0.85 \
--no-enable-prefix-caching --enable-chunked-prefill --max-num-batched-tokens 8192 \
--long-prefill-token-threshold 4096 --enforce-eager \
--enable-auto-tool-choice --tool-call-parser qwen3_xml --reasoning-parser qwen3 \
--speculative-config '{"method":"mtp","num_speculative_tokens":3}'
工作节点(rank 1):相同,但--node-rank 1 --headless,在头部节点后约30秒启动。
注意--enforce-eager——这不是妥协,而是快速路径(见死胡同#1)。
相似文章
使用 Deadcode 的 Radiance 引擎,在 2 张 R9700 + 64GB DDR5 上运行 Q4 量化的 Qwen-3.8 Flash-Next,解码速度为 176 token/秒,预填充速度为 6,450 token/秒
一位用户使用 BetterBench 吞吐量测试工具,在配备 2 块 R9700 GPU 和 64GB DDR5 内存的定制 PC 上,对运行于 Deadcode 的 Radiance 推理引擎上的 Q4 量化版 Qwen-3.8 Flash-Next 进行基准测试,实现了 176 token/秒的解码速度和 6,450 token/秒的预填充速度。
@shantanugoel: 我通过两天对众多超参数和补丁进行系统搜索后得到的配置
Shantanu Goel 分享了一个优化 Qwen 3.8 Flash Next 在单个 DGX Spark 上的配置方案,已针对实际任务进行测试,并计划进一步进行基准测试。
Qwen3.8-Flash-Next 在双 RTX 3090 + DDR4 上:解码速度从 17 提升至 25-29 令牌/秒,使用专家缓存 PR
用户基准测试并详述了 llama.cpp 中的 GPU 常驻专家缓存 PR,该 PR 将 Qwen3.8-Flash-Next 在双 RTX 3090 系统上的解码速度从 17 提升至 25-29 令牌/秒。
在16GB显存的RTX 4080上运行Qwen3.8-27B的提速指南
本指南说明如何配置llama.cpp的DFlash2推测解码,以在配备16GB显存的RTX 4080 GPU上实现Qwen3.8-27B模型最高1.72倍的推理速度提升。
今日在双DGX Spark上运行Qwen3.8-Flash-Next时聚合吞吐量达到181 tok/s
使用2台DGX Spark集群,通过NVMe映射和推测解码等优化,在Qwen3.8-Flash-Next模型上实现了181令牌每秒的聚合吞吐量。