Kimi K3 在 AMD MI355X 上的部署:效能與成本分析
AMD MI355X 在提供 2.8T 參數 Kimi K3 模型服務時,具有更佳的每美元效能比,每節點可達到 952 個 token/秒(tok/s)。雖然 NVIDIA 的 B300 在絕對總體吞吐量上仍佔優勢,但 MI355X 每 GPU 小時的成本較低,使其在超過單一 B200 節點記憶體容量的前沿規模模型中成為更具成本效益的替代方案。
硬體比較與吞吐量
Kimi K3 模型的大小(2.8T 參數)在為 1M token 的上下文分配 KV 快取之前,需要超過 1.5TB 的 VRAM。此記憶體需求使得 MI355X 和 B300 成為可行的選項,因為它們每塊 GPU 提供 288GB VRAM,而單一 B200 節點(8 個 GPU)無法容納模型權重和 KV 池,因而需要多節點 TP16 部署。
在 1,024-token 輸入和 400-token 輸出的工作負載上進行的效能基準顯示以下結果:
| 指標 | 8× MI355X (TP8) | 2×8 B200 (TP16) | B300 (TP8+DCP8) |
|---|---|---|---|
| 每串解碼 tok/s | 118 tok/s | 90 tok/s | 172 tok/s |
| 峰值總吞吐量 | 952 tok/s | 498 tok/s | 1,568 tok/s |
| 峰值總吞吐量每 GPU | 119 tok/s | 31 tok/s | 196 tok/s |
| 峰值總吞吐量每 $/GPU-hr | 48 tok/s/$ | 7 tok/s/$ | 33 tok/s/$ |
定價基於每 GPU 小時 $2.50 的 MI355X,$6.00 的 B300,$4.25 的 B200。
雖然 B300 在絕對效能上領先(約為 MI355X 總吞吐量的 1.65 倍),但 MI355X 每 GPU 的成本約便宜 2.4 倍,因此每美元效能指標顯著提升。
ROCm 的軟體優化
在 AMD 硬體上部署 Kimi K3 需要兩項主要的工程介入,以達到峰值吞吐量並降低延遲。
投機解碼修復
為了使用 RadixArk 的 Kimi-K3-DSpark 實作投機解碼,Wafer 在 sglang ROCm 建置中遇到了 NameError。該錯誤發生是因為 ROCm 建置缺少 top_k_renorm_prob 的定義,該函式用於接受採樣驗證器的密集路徑。
Wafer 透過實作一個處理 top-k 重新正規化的 PyTorch 函式(排序、遮罩填充和重新縮放)來解決此問題。此修復啟用了投機解碼,使單串效能提升 2.2×,峰值總吞吐量增加 18%。
前填優化
MI355X 上的初始冷前填效能顯著慢於 B300(對於 172k-token 前填,分別為 51秒 vs 23秒)。這是因為系統回退到慢速的通用 Triton 注意力核心,因為快速的 AITER MLA 前填核心因形狀不匹配而無法載入(K3 在 TP8 下提供每 rank 12 個注意力頭,而 AITER 期望 4、8 或 16 的倍數)。
透過將頭數從 12 零填充至 16,並從輸出中提取真實的 12 個頭,Wafer 使前填速度提升了 2 - 3×,使得 AITER MLA 前填 ASM 的穩定狀態達到約 13k tok/s。
社群批判與反駁
發表這些結果後,技術社群對方法論和數據的呈現提出了數項關注:
- TCO 與定價: 評論者指出,使用每小時雲端租賃價格無法反映擁有硬體組織的總擁有成本(TCO),也不考慮電力成本。
- 基準有效性: 部分使用者質疑 1,024-token 的輸入長度是否為現代前沿模型的相關基準。
- 比較公平性: 評論者指出,B300 在每項原始效能指標上都優於 MI355X,而 B200 的比較因需要多節點設置而處於劣勢,這會引入跨節點 all-reduce 開銷。
- 模型正確性: 有關零填充優化對前填核心是否影響模型連貫性或正確性的疑問,儘管未提供降低的證據。
"B300 在單串上快約 46%,在總體上快約 65%。AMD 只有在 Wafer 將吞吐量除以 // 選定的雲端租賃價格後才獲勝……基準無法重現,遺漏電力成本,ROCm 已被修補…"