老闆剛開完會,丟給他一個任務:新一代開源模型的智慧程度已經逼近付費API,如果能自己架設,公司一年能省下大筆的API費用;但這個模型大到現有的GPU伺服器根本塞不下,得重新採購硬體
最近幾個月,開源AI模型的實力嚇死人。像GLM5.2、DeepSeek V4-Pro這些公開釋出、任何人都能下載來自己架設的開源模型跟需要花錢呼叫官方API、看不到內部細節的「閉源模型」相反,開源模型的參數會整包公開,你可以下載到自己的機器上執行,已經逼近頂級付費模型的聰明程度。而這篇文章的主角Kimi K3,更是被形容為有機會摸到最頂級商用模型的水準。但問題來了:模型要變聰明,通常代表它要記住的參數(parameters)模型裡負責記住規律的一堆數字旋鈕,你可以想成是模型的「腦細胞數量」,參數越多通常學到的東西越細緻,但也越佔位置越多——Kimi K3的參數量高達2.8兆(2.8T),換算下來光是把這些參數塞進顯示卡,就需要超過1.5TB的VRAM顯示卡專門用來放模型參數跟運算暫存資料的記憶體,俗稱顯存,VRAM不夠大,模型根本裝不進這張卡,這還沒把服務長文章對話所需的KV cache模型在處理很長一段文字時,把已經算過的中間計算結果先存起來、之後重複利用的暫存區,可以想成是「先算好的筆記」,省得每次從頭算一遍算進去。
這麼胖的模型,連NVIDIA最新的B200顯示卡,一個節點塞8張卡都裝不下——只好用Tensor Parallelism(張量平行,簡稱TP)當一個模型太大、一張顯示卡裝不下時,把模型內部的運算拆成好幾份,分給多張顯示卡一起分工計算的技術,TP16就是把工作切成16份,讓16張卡一起扛這招,把運算拆給更多顯示卡一起扛。這時候擺在工程團隊面前的選擇只剩兩條路:要嘛硬上規格更高、單卡288GB顯存的NVIDIA B300,一個節點8卡就夠;要嘛動用兩個B200節點(TP16跨16張卡)一起分攤。而這篇文章要介紹的第三條路,是AMD的MI355X——它同樣有288GB顯存,價格卻比B300便宜約2.4倍、比B200便宜約1.7倍。過去AMD最讓人詬病的是軟體支援跟不上,跑推論(inference)模型訓練完成後,拿來實際回答問題、生成內容,正式上場運作的階段,跟訓練(教會模型)是不同的兩件事效率所需要的底層優化工程量很大,但這次AMD在Kimi K3發布當天就把優化做好(業界稱為day-0支援),等於幫工程團隊省下一大段苦工。
實測結果很有意思:B300單節點的吞吐量(throughput)單位時間內能處理完成的資料量,這裡指每秒能吐出幾個字(tok/s),吞吐量越高代表機器越能同時應付更多人使用確實是三者中最快的,但因為它的租金也最貴,算成「每花一塊美金能換到多少tok/s」(也就是每美元效能)之後,反而是MI355X奪冠。至於花了兩個節點硬撐的B200,因為要透過網路做跨節點的all-reduce多張顯示卡分頭算完各自負責的部分後,要互相對答案、把結果同步成一致版本的通訊動作,節點跨得越多,對答案的來回次數跟等待時間就越長,會拖慢速度,表現反而是三者中最吃虧的一個。
| 方案 | 單串流解碼(tok/s) | 整節點吞吐量尖峰(tok/s) | 每GPU吞吐量尖峰(tok/s) | 每美元效能尖峰(tok/s/$) |
|---|---|---|---|---|
| 8×AMD MI355X(TP8) | 118 | 952 | 119 | 48 |
| 2×8 NVIDIA B200(TP16,跨2節點) | 90 | 498 | 31 | 7 |
| NVIDIA B300(TP8+DCP8) | 172 | 1568 | 196 | 33 |
這段小程式重現文章表格裡「每美元效能」是怎麼算出來的——用吞吐量除以總花費,就知道誰的錢花得划算。
def calc_perf_per_dollar(node_throughput, price_per_gpu_hour, gpus_per_node): total_cost_per_hour = price_per_gpu_hour * gpus_per_node return round(node_throughput / total_cost_per_hour, 1)configs = { "MI355X (TP8)": (952, 2.50, 8), "B200 x2節點 (TP16)": (498, 4.25, 16), "B300 (TP8+DCP8)": (1568, 6.00, 8),}for name, (tput, price, gpus) in configs.items(): print(name, calc_perf_per_dollar(tput, price, gpus))