兩個參數量差不多的模型站上同一台 GPU。照規格表看,速度應該也差不多;真正跑起來,一個順順吐出 token,另一個卻像下班時間卡在交流道。算力沒有少,工作也沒有變難,差別可能只藏在矩陣的長寬。

這就像一座只畫固定大小停車格的停車場。前一排剛好停滿,下一台車抵達時,管理員不能只補一格,而是得開放一整排;其餘空位照樣占地、照樣亮燈、照樣花錢。GPU 做大型矩陣乘法也有這種脾氣:模型只需要邊角的一小部分,硬體仍可能得啟動一整塊磁磚。

於是問題從「模型塞了多少參數」變成一場追查:資料是不是搬太多、矩陣有沒有貼齊磁磚、工作又切成了多少份?

左邊的矩陣尺寸剛好對齊固定磁磚;右邊只多出一小條有效資料,硬體卻仍得啟動整欄磁磚。橘色區域就是有成本、沒有有效結果的邊角空轉。

第一個嫌疑犯:閒著的算力、塞住的資料

追速度之前,得先看清楚哪一張成績單掉了。一個 AI 系統至少同時背著三項目標:回答準不準、整座資料中心每秒能產出多少 token,以及每位使用者感覺要等多久。第三項又可拆成第一個 token 多久出現,以及後續 token 之間隔多久。

在準確度固定時,吞吐量與互動速度彼此拉扯,工作負載還會偷偷更換瓶頸。長上下文、高吞吐量的服務可能把大部分時間花在注意力計算;低延遲服務則可能多付出跨卡通訊成本。假設注意力已占執行時間 77%,再怎麼精雕前饋網路,總體改善也很有限。安達爾定律在這裡像交通警察:先找到真正塞住的路口,別在隔壁空巷子拚命拓寬。

當塞車點落在線性層,才輪到矩陣形狀上場。Transformer 的線性層最後會落成矩陣乘法,也就是常見的 GEMM。矩陣的一邊來自同時處理的 token 數,另外兩邊主要受模型的隱藏維度與中間投影維度控制。這三邊共同決定 GPU 每搬一份資料,可以順手完成多少運算。

這個比例叫算術強度:每搬動一個位元組,能做多少次計算。比例低時,運算單元再強也只能等資料從記憶體送到門口,工作負載受記憶體頻寬限制;比例夠高,才輪到 GPU 的算力成為上限。

把矩陣想成鋪地的區域就容易理解。接近正方形時,橫向與直向都有足夠空間,搬進來的資料能反覆配對,產生更多結果。若矩陣又長又窄,其中一邊太短,資料才剛搬完,能做的配對就結束了,只好繼續搬下一批。即使一次處理很多 token,模型形狀仍可能限制資料重用。

GB300 的一組理論估算刻意把前饋層做成 H′=512H=8192,輸入採 4 位元、輸出採 8 位元。即使 token 數增加,寫出結果仍比純數學運算更花時間;較小的 512 維讓整層卡在記憶體瓶頸。GB300 的 4 位元實測也呈現相同方向:投影或縮減維度太小,吞吐量會明顯下降。

第一個答案因此浮出來:在固定參數預算下,線性層的權重矩陣應盡量接近正方形,避免任一邊瘦到 GPU 還沒充分運算就得繼續搬資料。

參數量可以相同,形狀卻改變資料的使用方式。左邊的方正矩陣讓搬進來的資料在更多方向重複參與運算;右邊的狹長矩陣很快用完其中一個方向,只好一批批繼續搬。
Mogu 插嘴:

「參數一樣多,速度應該差不多」就像「兩間倉庫坪數一樣,出貨速度應該差不多」。一間是方正賣場,另一間是狹長到像沒有盡頭的走廊;員工每天的運動量肯定很漂亮,包裹幾點出門就先別問了 (⁠ ̄⁠▽⁠ ̄⁠)⁠/


矩陣方正了,帳單卻從邊角冒出來

事情到這裡還沒結束。矩陣夠大、夠方正,尺寸若沒有對齊 GPU 真正執行工作的磁磚,停車場仍會為一台車點亮整排空位。

GPU 會把輸出矩陣切成小塊,交給串流多處理器計算。較新的硬體還能讓兩個相鄰處理器合作處理更大的磁磚,或讓一整群處理器組成叢集。合作提高了資料重用,卻也把有效磁磚放大了。

麻煩出在邊角。尺寸若不能整除磁磚,最後一塊即使只用到一小條,仍得啟動完整計算;補齊的空白不會產出有用結果,運算週期卻省不下來。GB300 的測量採用 256×128 基礎磁磚、雙處理器合作與 4×2 處理器叢集時,吞吐量會在相關維度對齊 256 或 512 的位置出現局部高點。

這次抓到的是邊角帳單。實用規則很直白:模型維度至少用 128 的倍數;條件允許時,優先對齊 256 或 512。 128 是較安全、可攜的底線,後兩者更容易吻合放大後的合作磁磚。

Mogu 畫重點:

GPU 不會因為邊角只用到一小部分,就把剩下的磁磚成本退回來。模型架構一旦定型,這些空白可能跟著每次推論一起重複出現;看似不起眼的尺寸選擇,最後會被部署規模放大。


最誘人的捷徑:乾脆把模型做寬

既然又瘦又小的矩陣不討喜,一個很自然的念頭是:乾脆把模型做寬一點、層數減少一點。

在參數量固定時,較深的模型把工作分散到更多層,每層做較小的矩陣乘法,而且上一層完成後下一層才能接手。GPU 得反覆啟動許多較小的工作,資料重用較差,依序執行的路徑也更長。較寬的模型則把參數集中成較少、較大的矩陣乘法,更容易提高算術強度,也縮短必須一層一層走完的關鍵路徑。

從硬體這一側看,答案確實誘人:較少次的大型運算,通常比許多次的小型運算更合 GPU 胃口。這同時有利於整體吞吐量與單一請求的互動速度。

接著煞車立刻踩下來。深度也會影響模型的表達能力與準確度;把層數砍得太少,可能換到漂亮的硬體利用率,卻把模型能力一起丟掉。真正可用的不是「越寬越好」,而是一段寬深比例區間:先守住準確度,再在可行範圍內往較寬、較少層移動。

固定參數預算下,左邊把工作集中成少數大型運算,路徑較短;右邊拆成許多小層,每一層都要等前一層完成。硬體偏愛左邊,但模型準確度仍決定能往寬淺方向走多遠。
Mogu 想補充:

硬體友善不等於模型友善。為了讓 GPU 跑分漂亮就一路砍深度,像是為了提高餐廳翻桌率,最後只賣白開水:出餐確實快,客人也不必再來。準確度這條護欄不能省。


形狀修好以後,部署才有資格放大它

寬深比例守住準確度後,還有一個槓桿可以減輕搬運:量化會減少記憶體流量,也讓矩陣核心一次處理更多數字。NVIDIA 的 4 位元格式為每 16 個值配置一個縮放係數,再做第二層校正;DeepSeek-R1 的七項基準測試中,多數結果與 8 位元版本相差約一分以內,部分項目持平或更高。

這也代表量化不能等到部署前才想。模型加入昂貴運算時,就要確認那些層能否有效使用低精度格式;否則磁磚鋪整齊了,貨車卻還是每趟超載。

然後才來到最容易讓人誤判的場面:把工作放上更多張 GPU。

高吞吐量的混合專家模型,可以把不同專家分散到多張 GPU。以 DeepSeek-R1 為例,每個 token 只啟動 256 個專家中的 8 個;卡數增加後,可用的記憶體頻寬與空間也增加,能容納更多注意力暫存資料和同時進來的請求。

卡數增加不會讓前面的問題蒸發,只會多出新的路口。token 必須在 GPU 之間搬動,熱門專家可能塞車。另一種做法是把長提示詞切成幾塊,依序送過不同 GPU 上的模型層;NVIDIA 的 256K 輸入案例縮短了第一個 token 的等待時間,但只要其中一站較慢,其他 GPU 就會排隊空等。

追查到這裡,最初幾個看似分散的線索終於接在一起:矩陣要讓資料值得搬、尺寸要貼齊磁磚,工作切到多張卡後還要分得平均。否則每增加一張 GPU,都可能只是替原本的浪費多開一條車道。

Mogu OS:

CP-296 已整理過這套推論組合拳的效能與產業脈絡。Clawd 的解讀是:平行化能把工作攤到更多 GPU,卻不會自動修好又瘦、又對不齊磁磚的矩陣;先把單次工作塑造成硬體容易消化的形狀,規模化才不會連浪費一起放大。


結語

回頭看那兩個參數量差不多的模型,規格表其實只寫了倉庫的總坪數,沒寫貨架是不是狹長、邊角會浪費幾塊磁磚,也沒寫包裹得經過多少工作站。

參數量回答模型裝了多少東西;形狀才回答 GPU 能不能準時把貨送出去。 停車場最貴的,往往不是那台多出來的車,而是為它被迫點亮的一整排空位。