DEV Community

Cover image for GB10 實測 DiffusionGemma 26B 挑戰 32K 極限
JH5
JH5

Posted on

GB10 實測 DiffusionGemma 26B 挑戰 32K 極限

作為三平台評測的最終章(前兩篇為 M2 Max 96GB MLXGH200 vLLM),本篇將完整測試一下 GB10 的吞吐量表現、32K 長 Context 的速度代價、以及在 Podman 部署時讓人抓狂的 OOM 踩坑紀錄。

在數據的結果來看,155 tok/s,比 M2 Max 快了整整 10 倍! 更重要的是,Context 長度一路從 2K 解鎖到 32K都成功Pass,直接與老大哥 GH200 站在同一條起跑線上,直到 32,600 tokens 才開始撞牆。

整體來說, NVIDIA GB10(Grace Blackwell 128GB)在執行 DiffusionGemma 26B 時,交出了一份令人驚艷的成績單,雖然 Context 拉長後,速度衰減得比 GH200 明顯,但實際串接在CLI 的使用體感與超高性價比,絕對是本地推理 Server 的首選。

測試環境:GB10 + vLLM,32K Context 達標

項目 內容
平台 NVIDIA GB10(Grace Blackwell),128 GB 統一記憶體
框架 vLLM 0.22.1rc1
模型 nvidia/diffusiongemma-26B-A4B-it-NVFP4
部署參數 --gpu-memory-utilization 0.7 --max-model-len 32768 --max-num-seqs 4 --enable-auto-tool-choice --tool-call-parser gemma4 --reasoning-parser gemma4
容器 vllm-diffusiongemma
部署方式 Podman,需用 --device nvidia.com/gpu=all 而非 --gpus all

部署的設定我跟 GH200 那台使用相同的 vLLM 版本(0.22.1rc1),部署參數也差不多,另外設定--gpu-memory-utilization 0.7 只分配約 90 GB GPU 記憶體給 vLLM,但靠 --max-num-seqs 4 限制併發數避免 OOM,也成功把 --max-model-len 推到 32768 跟 GH200 達到差不多的輸出體驗。

Generation Throughput

Output 長度 速度 延遲
64 tokens 35 tok/s 1.82s
128 tokens 78 tok/s 1.64s
256 tokens 140 tok/s 1.83s
512 tokens 155 tok/s 3.30s
1024 tokens 151 tok/s 6.76s

Throughput 的峰值在 512 tokens(155 tok/s),不過有趣的是 64 tokens 反而最慢(35 tok/s),應該是因為在較短輸出時 denoising step 的 warmup overhead 佔比大,剛開始的 decoding overhead 被攤分到的 token 數太少,而跟 GH200 的 1180 tok/s 相比,GB10 約 1/8,但對比 M2 Max 的 14.7 tok/s 已經是 10 倍。

輸出的速度曲線很平穩,大概從 256 到 1024 tokens 都維持在 140-155 tok/s,這也代表 Blackwell GPU 在 multi-canvas 處理上 scale 得不錯。

Context 限制:32K 達標,20K 內都還算順

前面有提到,透過設定--max-model-len 從 8192 再拉到 32768 之後,context 極限跟 GH200 打平了。

實測上的最大輸入有到 32,600 tokens(配 1 個 output token,距 32,768 差 168),超過就會一直跳出類似的提示

This model's maximum context length is 32768 tokens.
Enter fullscreen mode Exit fullscreen mode

當然,context 越長速度越慢,跟 GH200 比起來還是有一段距離

Context 長度 輸入 tokens GB10 速度 GH200 速度(對照)
~1.5K 1,484 tok 35.4 tok/s
~5K 7,500 tok 15.7 tok/s 104 tok/s
~10K 15,070 tok 9.3 tok/s 66 tok/s
~20K 30,273 tok 3.3~15.6 tok/s 39 tok/s
~30K 32,216 tok 9.9 tok/s
~32K(極限) 32,600 tok 0.09 tok/s 4.0 tok/s

前 10K 都還有 9 tok/s 以上,對多輪對話和中等長度文件分析完全夠用,到快 20K 的時候生成速度看 workload 差異很大(簡單 prompt 有 15.6 tok/s,複雜摘要掉到 3.3 tok/s),而 30K 還有 10 tok/s,但到極限 32K 就只剩 0.09 tok/s。

跟 GH200 比起來,GB10 在同 context 長度下大約慢 4-7 倍。但考慮到 GB10 的價格和功耗,這個 trade-off 很合理,實際上在CLI 的串接體感上,較長context的等待時間我覺得還可以接受,偶爾需要等一下。

部署踩到的坑

這顆模型在 Podman 上部署不算順利,記錄幾個有筆記起來的部分。

一開始在 CUDA graphs warmup OOM:gpu-memory-utilization 設太高(~0.8+)時,模型權重載入後剩餘空間不足以讓 CUDA graphs 完成 warmup,直接噴 OOM,後來陸續調降到 0.7 後才變得比較穩定,再配合參數 --max-num-seqs 4 限制併發,可以把 max-model-len 推到 32768。

Podman GPU 參數--gpus all 在 Podman 上不支援,要用 --device nvidia.com/gpu=all

CNI DNAT 殘留:刪除舊容器重建後,nftables 還留著舊容器的 DNAT 規則,連 localhost:8090 會 No route to host,後來是利用 sudo nft flush chain ip nat CNI-HOSTPORT-DNAT && sudo systemctl restart podman來成功排除。

DGX Spark CNI 插件路徑:這台機器的 CNI plugins 放在 /usr/lib/cni/ 不是預期的 /opt/cni/bin/,Podman 會找不到網路插件,需要手動 symlink。

併發

併發數 總吞吐量 Wall time
1 70 tok/s 1.14s
2 126 tok/s 1.27s
4 123 tok/s 2.59s

在併發數2的時候還是接近線性 scaling(70→126),但到 4後就 plateau 了(123 tok/s),跟GH200 的 4個併發結果可以到 256 tok/s,GB10 大約是它的一半,再跟 M2 Max 的 1.4 tok/s 比,已經是阿彌陀佛了🤣

三平台定位

到目前為止三台的關鍵數字:

項目 M2 Max 96GB GH200 480GB GB10 128GB
框架 MLX vLLM vLLM
峰值生成 14.7 tok/s 1180 tok/s 155 tok/s
4 路併發 1.4 tok/s 256 tok/s 123 tok/s
可用 context ~8K-16K ~32K ~32K
優勢 開發方便、RAM 大 極致效能 價格效能比最佳

GB10 把 context 推到 32K 之後,跟 GH200 站在同一條起跑線了,雖然 155 tok/s 的生成速度雖然只有 GH200 的 1/8,但 32K context 全滿可用、不貴、不吵、插電就能當 local 推理 server。

以 GB10 的價位來說,這個表現已經遠超出預期,如果你的應用需要長時間執行推理任務(batch processing、定期分析),GB10 搭配 GH200 可以形成一個很有效率的 tiered 架構,一般日常開發和短任務給 GB10,長 context 或高併發丟給 GH200。


  • 模型:nvidia/diffusiongemma-26B-A4B-it-NVFP4
  • 框架:vLLM 0.22.1rc1
  • 平台:GB10 Grace Blackwell(128 GB 統一記憶體)

Top comments (0)