打破記憶體牆:在 10 年前的 Xeon 上執行 Gemma 4
目前在地端 AI 的主流觀點是,你需要最新的 H100 或頂級的 Mac Studio 才能執行尖端模型。然而,大型語言模型 (LLM) 推論的真正瓶頸並不總是原始算力——而是「記憶體牆」。在生成 token 時,處理器花在等待權重從 RAM 移動到快取的時間,比實際進行計算的時間還要多。
透過將部署流程視為一項嚴肅的工程挑戰,而非黑盒安裝,我們可以在這些模型構思之前就已陳舊的硬體上執行尖端架構——例如 Gemma 4 26B Mixture-of-Experts (MoE)。具體來說,一台配備 128GB DDR3 RAM 且沒有 GPU 的 2016 年 Intel Xeon E5-2620 v4,如果軟體能針對硬體的物理特性進行調優,就能實現「閱讀速度」的生成。
硬體挑戰
要理解為什麼這很困難,我們必須查看這台回收利用的企業級伺服器的規格:
- CPU: Intel Xeon E5-2620 v4 @ 2.10 GHz (8 個實體核心,16 個執行緒)
- 指令集: AVX2 (缺乏 AVX-512, AVX-VNNI, 和 BF16)
- 記憶體: 128 GB DDR3 (明顯慢於現代的 DDR4/DDR5)
- GPU: 無
在這種環境下,系統受到嚴重的記憶體限制。生成的每個 token 都需要將數 GB 的權重從緩慢的 DDR3 RAM 搬運到 CPU 快取中。如果沒有激進的優化,標準工具如 ollama 或基礎的 llama-cpp 會慢得令人無法接受,因為它們是為通用的 GPU 使用案例設計的,且沒有提供必要的「旋鈕」來繞過記憶體瓶頸。
優化技術棧
為了使此方案可行,作者使用了專門的分支 ik_llama.cpp,並使用一組精確的參數來將模型架構直接映射到 CPU 的快取層級結構中。
1. 推測解碼 (Speculative Decoding) 與 MTP
使用參數 --spec-type mtp --draft-max 3 --spec-autotune,系統將一個 26B 的驗證器與一個小得多的「草稿」模型配對。
推測解碼是應對記憶體牆的一個絕佳變通方案。由於與串流傳輸大量權重的成本相比,CPU 的計算成本相對便宜,因此系統使用一個極小的草稿模型(完全符合 L3 快取容量)來預測接下來的幾個 token。接著,較大的驗證器會在單次傳遞中檢查這些預測。這使得系統能夠在僅支付一次驗證器記憶體頻寬成本的情況下,生成多個 token。
2. MoE 路由與快取抖動 (Cache Thrashing)
像 Gemma 4 26B-A4B 這樣的 Mixture-of-Experts (MoE) 模型在處理每個 token 時會使用專家子集。然而,在 128 個不同的專家之間跳轉可能會導致「快取抖動」,即 CPU 不斷地傾倒其快取以從 RAM 抓取新權重。
--cpu-moe: 專門針對 CPU 快取層級結構進行路由調優,使權重能更長時間地保持在本地。--merge-up-gate-experts: 將兩個投影 (projections) 合併為單個矩陣乘法 (matmul)。這可以防止處理器將結果寫入記憶體後立即讀回,從而減少跨越記憶體匯流排的次數。
3. 記憶體鎖定與重組 (Memory Pinning and Repacking)
為了防止作業系統破壞效能,配置採用了嚴格的記憶體管理:
--run-time-repack: 在啟動期間重新組織 RAM 中的權重矩陣,使其與 CPU 預期的攝取形狀對齊,從而減少「快取缺失 (cache misses)」。--mlock: 將模型鎖定在實體 RAM 中。這可以防止 Linux 核心將權重「交換 (swapping)」到硬碟,這會導致生成速度驟降至零。--no-kv-offload: 明確告訴引擎不要為 Key-Value (KV) 快取尋找不存在的 GPU,從而跳過不必要的硬體檢查。
4. 進階注意力機制
在此設置中,最重要的成就之一是透過 --flash-attn on 使用基於 CPU 的 Flash Attention。
通常,計算提示詞中每個單詞與其他所有單詞之間的關係會產生一個巨大的 $N imes N$ 矩陣,必須寫入 RAM。Flash Attention 使用「核心融合 (Kernel Fusion)」在處理器的本地快取中以小塊形式計算這些分數,從而繞過在系統 RAM 中實體化該巨型矩陣的需求。將這種 GPU 特有的優化移植到標準 CPU 上是一項重大的軟體工程成就。
此外,--mla-use 3 啟用了 Multi-Head Latent Attention,它壓縮了 KV 快取(模型的短期記憶),從而允許在不耗盡 128GB RAM 的情況下實現巨大的上下文窗口(高達 262K)。
結果與權衡
最終的記憶體佔用量約為 82 GB:25 GB 用於權重,56 GB 用於滿載上下文時的 KV 快取。
雖然效能被描述為「閱讀速度」,但考慮實際的權衡是很重要的。如社群討論中所述,這些舊款 Xeon 伺服器與現代基於 ARM 的筆記型電腦或專用 GPU 設置相比,可能非常耗電且噪音很大。然而,這種硬體的可及性使其成為成為實驗的強大工具。
"對於在地端執行尖端 AI 的瓶頸,不僅僅在於矽晶片。更在於需要深入理解推論引擎究竟是如何運作的。"
結論
能夠在十年前的伺服器上執行 26B 參數的 MoE 模型,證明了由黑盒 AI 工具所創造的「可用性護城河」是人為的。透過遠離簡化的封裝工具,並深入研究底層記憶體架構,在地端 AI 的需求從「昂貴的新硬體」轉向了「精確的配置」。
對於擁有家庭實驗室 (homelab) 或回收伺服器的人來說,尖端開源權重 AI 已經觸手可及——只需要你願意親自嘗試指令列操作。