2026-05-04
DGX Spark上のQwen3 MoE — NVFP4 vs FP8ベンチマークと実際に動く設定
GB10でのQwen3.6-35B-A3BとQwen3.5-122B-A10Bのコミュニティ検証済み数値:NVFP4+MTPで単一ユーザー55.9 tok/s、c=32で433 tok/s。TRITON-only MoEバックエンドの注意点とMTP+prefix-cache失敗モードを解説。
2026年5月、DGX Spark(GB10、128 GB統合LPDDR5X)上のQwen3 MoEに関するコミュニティベンチマークの結果が安定してきました。以下が検証済みの数値と、それを実現する設定です。
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トークン) | 158.0 | 251 ms | 92.8% |
MTP-1(投機的デコーディング、ドラフトトークン1個)がFP8ベースラインの約32 tok/sから55.9 tok/sへのジャンプをもたらしています。85〜93%の採用率は、ドラフトトークンがほぼ常に採用されていることを意味します。
MTPなしでは、FP8は単一ユーザーで28〜33 tok/s、c=32で155.6 tok/sが上限です。273 GB/s LPDDR5Xのメモリ帯域幅が密なトークン生成のハードウォールです。
Qwen3.5-122B-A10B — 最適化の階段
この大型モデルにはvLLM 0.19+と2026年4月のMarlinカーネル修正が必要です:
| 設定 | Tok/s | 向上率 |
|---|---|---|
| ベースラインINT4(Intel AutoRound) | 28.3 | — |
| + 共有エキスパート層にHybrid INT4+FP8 | 30.8 | +8.8% |
| + MTP-1投機的デコーディング(FlashInfer) | 38.4 | +35.8% |
38.4 tok/sが単一Sparkでの検証済みハードウェア上限です。タスクによって変動があり、短い数学出力では36.3 tok/s、長いコード生成(2048+トークン)では39.9 tok/sでした。
時間を無駄にする落とし穴
1. SM121のMoEバックエンドはTRITONのみ。 FP8 MoEではFLASHINFER、CUTLASS、DEEPGEMMはコンシューマーBlackwellで利用不可。NVFP4は明示的なフラグでflashinfer_cutlassを使用できます。
2. MTP + prefix caching = 失敗。 投機的デコーディングとprefix cachingを同時に使用すると、c=8で17/32のリクエストが失敗しました(FP8モデル)。上流で修正されるまでどちらか一方だけを使用してください。
3. NVFP4は2026年4月まではINT4より遅かった。 Marlinカーネル修正でこれが変わりました。古いコンテナでNVFP4が16.6 tok/sしか出ない場合はコンテナを更新してください。
4. CUDAグラフのコンパイルに5〜8分かかる。 サーバーが初回起動時にフリーズしているように見えますが、コンパイル中です。ヘルスチェックのreadiness probeタイムアウトを最低600秒に設定してください。
5. Qwen3-27B未量化の上限。 BF16/FP8では帯域理論値から約10 tok/s(27 GB × 1バイト = 27 GB/パス、÷ 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