在 DwarfStar 中進行分散式 LLM 推論
高階 NVIDIA 顯示卡,以及驅動它們所需的伺服器與電力成本都非常高昂,尤其是當你想取得足夠的 VRAM(顯示記憶體) 來運行超大型模型時。到目前為止的替代方案一直是 Apple 硬體,或 DGX Spark——即便因 memory bandwidth(記憶體頻寬) 而受到嚴重限制,仍能讓 LLM 的提示處理(prefill(預填))速度夠快。Mac Studio 提供了高達 512GB 的 unified memory(統一記憶體),這是一個 memory bandwidth 適中(但比 Spark 好得多)且具備一定運算效能的解決方案,以當前的局勢來看,價格算是相對合理。
舉例來說,透過 DwarfStar,Mac Studio M3 Ultra 512GB 能以 150 t/s 的 prefill 與約 10-13 t/s 的 decoding(解碼) 來運行 DeepSeek v4 PRO,表現不算出色,但對某些使用情境而言已達可用水準。即使經過 2-bit quantized(量化),DeepSeek v4 PRO 的表現依然非常出色,就像同樣量化下的 Flash 一樣(今天我讓 PRO 寫了一個 C 編譯器,影片很快就會發布)。能在家中以約 12k 的總花費運行一個前沿模型,我認為這絕非一件小事。
人們或許會期待情況會越來越好,但前景看起來卻相當不明朗。NVIDIA 方案幾乎不可能變得更便宜,即使是小公司也難以輕易負擔與維運一個用於本地 inference(推論) 的小型資料中心。同時,RAM 短缺使得我們不太可能看到搭載 M5 Ultra、具備約 1.2T/s memory bandwidth 與更強運算能力的 Mac Studio(M5 Max 在運算方面已經更快,且每個 GPU 核心內都配有 Neural Accelerators,有助於處理特定模型)。
因此,就本地 inference 而言,目前最好的機器恐怕是一台筆記型電腦。M5 Max 128GB 能以相當不錯的 prefill 與 decoding 速度運行經 2-bit 量化的 DeepSeek v4 Flash 與 Mimo V2.5。我們談的是約 500 t/s 的 prefill 與約 35-40 t/s 的 decoding 速度,且隨著上下文長度增加,效能下降的幅度非常可接受。以 6-7k 的價格(依配置而定),這是目前最划算的選擇之一。
如果情況如此,那麼對於一般的本地 inference 專案,特別是對 DwarfStart 而言,開始關注 distributed inference(分散式推論) 就變得很有意思了。如果我們有兩台、三台、四台 MacBook M5 Max 系統能做什麼?或者有兩台配備 512GB RAM 的 M3 Ultra 呢?
傳統上,運行 distributed inference 有兩種主要方式。一種是透過將 50% 的 transformer layers(Transformer 層) 載入電腦 A、剩餘 50% 載入電腦 B 來倍增記憶體,並以循序方式運行 inference。在這種情況下,只需要傳送 activations(激活值),概念上非常簡單,而且透過一些 micro-batching(微批次) 的技巧,不僅能倍增記憶體,理論上甚至還能大幅提升提示處理速度(但無法提升 decoding:對於單一 token 的生成,你必須等待機器 A 上的前半層、再等待機器 B 上的後半層,依此類推——但至少產生的熱量較少,因此可以承受持續負載),這已經相當不錯了。這意味著,例如,擁有兩台 Mac Studio 512GB 的幸運兒可以運行完整尺寸的 DeepSeek v4 PRO(即使 2-bit 量化版本已經運行得非常、非常好),而且透過 micro-batching 甚至能享有更快的 prefill。
另一種方法是利用 Apple RDMA(遠端直接記憶體存取) 將執行過程在兩台機器之間平行化,基本上是一種垂直分割。舉例來說,可以嘗試在機器 A 和 B 上載入相同的 2-bit 量化模型,使兩邊都能容納,且每一邊都擁有 *全部* 的 routed experts(路由專家)。接著,對於每一層,我們可以嘗試進行必要的協調,以便讓一半的專家在機器 A 上執行、另一半在機器 B 上執行,依此類推(請注意,兩台機器都擁有所有專家,因此無論路由器如何決定,我們都可以將 50% 的運算發送到另一台機器上,而且 activations 非常小)。這對於擁有更大 routed experts 的 PRO 來說更可行,因此通訊懲罰較不明顯。但這是否能真正良好運作,仍有待觀察。
你可能也在想,還有 tensor parallelism(張量並行) 對吧?但我敢打賭,以我們在兩台 Apple 電腦、兩台 DGX Spark 等設備之間的通訊速度來說,這完全不可行(去查查 NVLink 的速度就知道了)。上述兩種模式的神奇之處在於,你只需要傳送非常少的資料。
好吧,到目前為止我敢說你在想,這不過就是大家都知道的那些以平行方式運行 LLM 的老套路,的確如此。但這篇文章正是為了要談到這個重點。如果我們能以一種完全不同的方式來平行化兩台 Mac 或 DGX,會怎麼樣呢?開放權重模型現在正處於黃金時代,我們擁有很多且其中不少都非常強大。在 128GB 的 2-bit 量化級別中,有許多有趣的選擇:Minimax M2.7、Mimo V2.5、DeepSeek v4 Flash 等等。同時,最近有人指出,LLMs ensemble(集成)(https://arxiv.org/abs/2502.18036)是一個尚未被充分研究的可能性,它能讓兩個模型以完全 shared-nothing(無共享) 的方式在兩台不同的機器上運行,僅在最後組合 logits(對數機率) 或選擇最佳的接續內容。實現這點有不同的方法,而且即使兩個模型的詞彙表不同也能運作:你可以挑選 perplexity(困惑度) 較低的接續(也就是挑選更有把握的模型:這就像一個路由為隱式的雙專家 MoE(混合專家模型)),甚至還有可能組合 logits(會因詞彙表不同而有些複雜性)並從中取樣。更近期的論文指出,混合這兩種技術是最佳方法。無論如何:這些技術似乎真的有效,模型表現起來比單獨運行時更好。就好像它們的知識得到了提升,因為每一方都為接下來該說什麼帶來了自己的觀點。
或許,除了前兩種方法之外,這是最合乎邏輯的第三種嘗試方向。我真的希望在接下來的幾個月裡,能找到時間多玩玩這些東西。
隨機一篇部落格