2026-05-04
Qwen3 MoE 在 DGX Spark 上的效能 — NVFP4 vs FP8 基準測試與實際可行的設定
社群驗證的 Qwen3.6-35B-A3B 與 Qwen3.5-122B-A10B 在 GB10 上的數據:NVFP4+MTP 單使用者可達 55.9 tok/s,c=32 可達 433 tok/s。涵蓋 TRITON-only MoE 後端問題與 MTP+prefix-cache 失敗模式。
2026 年 5 月,Qwen3 MoE 在 DGX Spark(GB10,128 GB 統一 LPDDR5X)上的社群基準測試結果已趨於穩定。以下是經驗證的數據與產生這些結果的設定。
Qwen3.6-35B-A3B — 日常使用設定
模型: RedHatAI/Qwen3.6-35B-A3B-NVFP4
容器: vllm/vllm-openai:cu130-nightly(NVFP4 必須使用此版本 — 其他 vLLM 映像會出現量化格式錯誤)
後端: --moe-backend=flashinfer_cutlass
| 情境 | 輸出 tok/s | 平均 TTFT | MTP 接受率 |
|---|---|---|---|
| 單使用者(512 輸入 / 512 輸出) | 55.9 | 166 ms | 85.4% |
| 並發 32(1024 輸入 / 512 輸出) | 433.4 | 2,317 ms | 85.2% |
| 長輸出(4096 tokens) | 158.0 | 251 ms | 92.8% |
MTP-1(投機解碼,1 個草稿 token)是從 FP8 基準約 32 tok/s 跳升至 55.9 tok/s 的關鍵。85–93% 的接受率意味著草稿 token 大多數時間都被採用 — 這個模型的預測性夠強,投機解碼效益顯著。
沒有 MTP 的情況下,FP8 單使用者頂多 28–33 tok/s,c=32 時約 155.6 tok/s。273 GB/s LPDDR5X 的記憶體頻寬是 dense token 生成的硬性上限。
Qwen3.5-122B-A10B — 效能優化階梯
這個更大的模型需要 vLLM 0.19+ 以及 2026 年 4 月的 Marlin kernel 修補。以下是 NVIDIA 論壇上的優化階梯:
| 設定 | Tok/s | 增益 |
|---|---|---|
| 基準 INT4(Intel AutoRound) | 28.3 | — |
| + 共享 expert 層 Hybrid INT4+FP8 | 30.8 | +8.8% |
| + MTP-1 投機解碼(FlashInfer) | 38.4 | +35.8% |
38.4 tok/s 是此模型在單台 Spark 上的驗證硬體上限。任務類型有實際差異:短數學輸出約 36.3 tok/s,長程式碼生成(2048+ tokens)可達 39.9 tok/s。
常見踩坑點
1. SM121 上 MoE 後端只支援 TRITON。 FLASHINFER、CUTLASS 和 DEEPGEMM 無法用於消費者 Blackwell 上的 FP8 MoE。NVFP4 透過明確旗標取得 flashinfer_cutlass — 不要省略此設定。
2. MTP + prefix caching = 失敗。 同時啟用投機解碼和 prefix caching 在 c=8 時導致 17/32 請求失敗(FP8 模型)。在上游修復前只能二選一。
3. NVFP4 在 2026 年 4 月前比 INT4 更慢。 Marlin kernel 修補改變了這一點。如果你使用的是四月前的容器且 NVFP4 顯示 16.6 tok/s(比 INT4 基準的 28.3 還慢),請更新容器。
4. CUDA graph 編譯需要 5–8 分鐘。 伺服器初次啟動時看起來像是卡住了 — 它其實正在編譯。健康檢查的 readiness probe 超時時間至少要設為 600 秒。
5. Qwen3-27B 未量化的上限。 以 BF16/FP8 計算,頻寬理論上限約 10 tok/s(27 GB × 1 byte = 27 GB/pass,÷ 270 GB/s)。MTP-3 最佳情況可達 15.2 tok/s。要在這個尺寸下互動使用,NVFP4 是正確選擇。
快速啟動指令
docker run -d --gpus all --ipc host --shm-size 64gb \
-p 8000:8000 \
-v ~/.cache/huggingface:/root/.cache/huggingface \
vllm/vllm-openai:cu130-nightly \
RedHatAI/Qwen3.6-35B-A3B-NVFP4 \
--served-model-name qwen3.5-35b \
--host 0.0.0.0 --port 8000 \
--dtype bfloat16 --gpu-memory-utilization 0.9 \
--max-model-len 262144 \
--enable-prefix-caching \
--enable-auto-tool-choice \
--tool-call-parser qwen3_coder \
--reasoning-parser qwen3 \
--moe-backend=flashinfer_cutlass
啟用 MTP-1 投機解碼請加上:--speculative-model-type=ngram --num-speculative-tokens=1