AI

PowerInfer:透過 CPU-GPU 混合設計在消費級 GPU 上實現高速 LLM 推論

PowerInfer 是一個專為消費級 GPU 設計的高速 LLM 推論引擎,利用激活局部性在單張 RTX 4090 上運行 175B 參數模型。

Keeping this site alive takes effort — your support means everything.
無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分! 無程式碼也能輕鬆打造專業LINE官方帳號!一鍵導入模板,讓AI助你行銷加分!
PowerInfer:透過 CPU-GPU 混合設計在消費級 GPU 上實現高速 LLM 推論

在本地運行大型語言模型一直受到一道難以逾越的限制:GPU 記憶體。一個 1750 億參數的 FP16 模型需要約 350GB 的 VRAM——遠遠超出 RTX 4090 等消費級 GPU 所能提供的 24GB。伺服器級的解決方案(A100、H100)確實存在,但它們的價格高達數萬美元。PowerInfer 由 Tiiny-AI(原名上海交通大學團隊)開發,利用一個巧妙的洞察突破這道高牆,該洞察利用了神經網路實際計算方式的一個基本特性。

這個洞察稱為激活局部性:對於任何給定的輸入 token,只有一小部分模型神經元處於活躍狀態,其餘的基本上處於閒置狀態。PowerInfer 透過預先分析模型來識別哪些神經元是「熱的」(頻繁激活)和哪些是「冷的」(很少激活)。熱神經元保留在 GPU 上以便快速存取;冷神經元保留在 CPU 記憶體中,僅在需要時才載入。

這種混合方法非常有效。一個通常需要多 GPU 伺服器的 175B 模型可以在單張 RTX 4090 上運行,冷神經元的 CPU-GPU 資料傳輸與 GPU 對熱神經元的計算同時進行。其結果是傳統模型平行或記憶體卸載方法無法達到的推論速度。


激活局部性在實踐中如何運作?

PowerInfer 的方法包括一個離線分析階段和一個線上混合執行階段。

流程圖 TD
    A[LLM 權重\n完整模型] --> B[離線分析\n激活模式分析]
    B --> C[神經元分類]
    C --> D[熱神經元\n頻繁激活]
    C --> E[冷神經元\n很少激活]

    D --> F[GPU 記憶體\nRTX 4090 24GB]
    E --> G[CPU DRAM\n系統記憶體]

    H[輸入 Token] --> I{線上推論}
    I --> J[計算熱神經元\n在 GPU 上 - 快速]
    I --> K[CPU 查詢\n預測需要哪些冷神經元]
    K --> L[載入所選冷神經元\n至 GPU - 重疊進行]
    L --> J

    J --> M[下一個 Token\n預測]

關鍵的效能技巧在於重疊:當 GPU 計算當前 token 的熱神經元激活時,CPU 預先擷取預測為下一個 token 所需的冷神經元。這將記憶體傳輸延遲隱藏在計算背後,保持 GPU 的高使用率。


可測量的效能增益有哪些?

PowerInfer 發表的基準測試顯示了相較於傳統方法的驚人加速。

模型大小llama.cpp(token/秒)PowerInfer(token/秒)加速比
OPT-6.7B8.532.13.8x
Llama-2-13B4.218.74.5x
Llama-2-70B0.96.47.1x
OPT-175B0.2(GPU OOM)2.211.0x

175B 參數模型在 RTX 4090 上以每秒 2.2 個 token 運行是最引人注目的結果。雖然不是即時聊天的速度,但對於批次推論、內容生成和非同步處理任務來說已經足夠——全部在一張價格不到 2,000 美元的消費級 GPU 上完成。


有哪些硬體需求和限制?

PowerInfer 的 CPU-GPU 混合設計有特定的硬體要求和權衡。

元件需求備註
GPUNVIDIA GPU 8GB+ VRAM70B+ 模型建議使用 RTX 3090/4090
CPU多核心(建議 8+ 核心)CPU 負責冷神經元預測和預擷取
系統 RAM70B 需 32GB+,175B 需 128GB+冷神經元存在於系統記憶體中
儲存建議使用快速 NVMe SSD模型權重從磁碟載入
CUDACUDA 11.8+GPU 核心需求

主要的限制在於效能高度依賴模型的激活稀疏性。密集、高度活躍的模型可能無法從混合方法中獲得同樣多的好處。PowerInfer 最適合經過訓練或微調以展現激活局部性的模型——幸運的是,這包括大多數現代 Transformer 架構。


PowerInfer 如何安裝?

PowerInfer 需要從原始碼構建以在目標硬體上獲得最佳效能。

# 克隆並構建
git clone https://github.com/Tiiny-AI/PowerInfer.git
cd PowerInfer
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build --config Release

# 使用模型運行
./build/bin/main -m /path/to/model -p "你的提示內容"

該專案為流行的架構提供了預先量化的模型權重,激活分析步驟已整合到模型載入過程中,無需手動配置。


常見問題

什麼是 PowerInfer? PowerInfer 是一個針對消費級 GPU 最佳化的高速 LLM 推論引擎,採用 CPU-GPU 混合設計,可在單張 NVIDIA RTX 4090(24GB VRAM)上運行 175B 參數等大型模型。

什麼是激活局部性? 激活局部性是 PowerInfer 的關鍵洞察:對於任何給定的輸入 token,只有一小部分神經元處於活躍狀態。透過預先計算哪些神經元可能被激活,它僅將這些權重載入 GPU,大幅降低記憶體需求和頻寬。

PowerInfer 的效能與其他引擎相比如何? PowerInfer 在相同硬體上對於大型模型可達到最高 11 倍的加速(相較於 llama.cpp),並且可以在單張消費級 GPU 上運行通常需要多張 GPU 或高記憶體伺服器硬體的模型。

PowerInfer 支援哪些模型? PowerInfer 支援 Llama 系列模型,包括 Llama-2、Llama-3、CodeLlama 和其他基於 Transformer 的架構,特別專注於 7B 到 175B 參數範圍。

如何安裝 PowerInfer? PowerInfer 從原始碼透過 CMake 構建安裝。該倉庫提供 Linux、macOS 和 Windows 的構建腳本,GPU 加速需要 CUDA 支援。


延伸閱讀

TAG