Workstation 技術簡介:如何增強 LLM 服務和代理 PagedAttention, vLLM, Self-Debugging, PowerInfer, 和 EG-MLA。伴侶: 部落格 ·底漆: Kubernetes 上的 LLMs 文章 · 實驗室: 企業人工智慧實驗室.
- 瓶頸: KV 快取增長和碎片,而不是抽象的“模型很慢”。
- PagedAttention: OS風格的KV塊分頁;調整塊大小和快取層次結構。
- vLLM: 服務發動機近零KV浪費+連續配料;觀看 TTFT 與代幣的對比。
- Self-Debugging: 少量的程式修復擊敗了龐大的候選集;產品中的帽輪。
- PowerInfer: 熱/冷分流; RTX 4090 上的平均 13.20 tok/s / 29.08 峰值(紙面/回購資料)。
- EG-MLA: 架構級 KV 壓縮(相對於 MHA 約 91.6%);交換之前重新評估。
1. 為什麼危機是服務而不是培訓
大型語言模型改變了 NLP:聊天、生成、工具。培訓一次是昂貴的;每秒的服務都很昂貴。解碼是自迴歸的。每個新令牌都需要以前的鍵和值。 KV 快取的記憶體與層 × 頭 × 隱藏 × 序列 × 批次成正比。預填充計算量大;解碼需要大量記憶體頻寬。如果您為每個請求分配一個連續的最大長度 KV 張量,則其中大部分是空的,直到序列實際增長 - 經典的內部碎片。併發請求無法竊取這些漏洞。批次大小下降。每秒掉落的令牌數。 GPU 看起來很忙,但仍然閒置。
那就是2023年PagedAttention和vLLM攻擊的問題,PowerInfer問題以及後來的注意力變體仍然從不同的角度攻擊。
觀看:LLM 心理模型
上下文影片: 大型語言模型簡介。 Workstation直譯器: LLM 的工作原理以及如何在 Kubernetes 上執行它們.
2. PagedAttention:KV快取的分頁
Kwon、Li、Zhang、Sheng、Zheng、Yu、Gonzalez、Zhang 和 Stoica 介紹了 PagedAttention 作為受虛擬記憶體和作業系統分頁啟發的注意力演算法,並在此基礎上構建了 vLLM [arXiv:2309.06180]。想法:
- 將 KV 拆分為 固定大小的塊 (每個區塊少量代幣)。
- 保留一個 塊表 從邏輯令牌位置到物理 GPU 塊(可能不連續)。
- 隨著序列的增長或完成而分配/釋放塊——就像頁面分配一樣,而不是像一個巨大陣列的 malloc 那樣。
- 共享塊(寫入時複製)以實現字首重用、波束搜尋和並行取樣,這樣您就不會重複相同的字首。
實施並不是“給 BERT 設定一個標誌”。注意力核心必須收集分散的塊。排程程式必須知道哪些塊是空閒的。快取層次結構很重要:HBM 駐留塊與 CPU 解除安裝與 NVLink 對等體。緩衝區(塊)大小是一個真正的旋鈕。太小:更多的表查詢和核心開銷。太大:最後一個部分塊內的插槽被浪費。將塊大小與 max_model_len 以及流量的實際提示/完成組合。
實踐: 配置檔案碎片(未使用的 KV 位元組/保留的 KV 位元組)和令牌在一起。沒有吞吐量的記憶體圖是虛榮的。
3. vLLM:尋呼機周圍的服務系統
vLLM 聲稱 KV 快取記憶體幾乎為零浪費,並且可以在請求內和請求之間靈活共享。論文中的評價大致表明 2–4× 吞吐量 與當時的 SOTA 系統(FasterTransformer、Orca)相比,延遲相似,在長序列和更高階的解碼方面具有更大的增益。如今,該引擎還為多 GPU 提供連續批處理、分塊預填充、字首快取和張量/管道並行功能。
操作清單:
- 放
gpu_memory_utilization高到足以容納重量 + KV,低到足以離開 CUDA 工作區。 - 僅在確認 eval 分數和 p95 TTFT 開啟後才啟用字首快取 你的 提示。
- 如果混合流量破壞 SLO(分解服務),則將預填充密集型和解碼密集型池分開。
- 在閘道器後面公開與 OpenAI 相容的端點(Workstation 資產通常將其放在後面) WSL Proxy/API閘道器 模式)。
from vllm import LLM, SamplingParams
llm = LLM(
model="meta-llama/Llama-3.1-8B-Instruct",
gpu_memory_utilization=0.90,
max_model_len=8192,
enable_prefix_caching=True,
)
params = SamplingParams(temperature=0.2, max_tokens=256)
outs = llm.generate(["Summarise PagedAttention for a platform engineer."], params)
print(outs[0].outputs[0].text)
反模式(這是 不是 PagedAttention):
# Classifier forward pass — logits, not paged KV serving
import torch
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
out = model(torch.tensor([[1, 2, 3]]), attention_mask=torch.tensor([[1, 1, 1]]))
print(out.logits)
觀察:野外服務系統
情境服務談話。規範寫作: vLLM 部落格 (PagedAttention) · 引擎: vllm-專案/vllm.
4. Self-Debugging:每個候選人的質量更高,而不是更多的候選人
陳、林、克萊因等人。結果表明,教 LLM 透過幾次演示來除錯其預測程式可以匹配或擊敗生成超過 10 倍候選數量的基線 [arXiv:2304.05128]。迴圈是:生成→執行或單元測試→反饋跟蹤→修復。
生產權衡:每個反饋訊息都是另一個預填充+解碼(或長上下文附加)。回合數越多,準確度通常越高;延遲和成本也是如此。 Workstation 代理指南(另請參閱 Muse Glimmer / 當地代理):
- 每次工具呼叫的除錯輪數有硬性上限(例如 2-4 輪)。
- 預算令牌與使用者可見的聊天分開。
- 升級為人類或專家模型,而不是無限重試。
- 評估的日誌跟蹤 — 沒有遙測的 Self-Debugging 是民間傳說。
5. PowerInfer:位置感知令牌生成
PowerInfer(SJTU IPADS /相關儲存庫)是一個利用啟用區域性性的令牌生成系統:GPU 上設定的小型“熱”神經元,CPU 上流式傳輸或執行的較冷權重。已釋出的操作點包括 平均 13.20 個令牌/秒 和 峰值 29.08 個令牌/秒 在單個 NVIDIA RTX 4090 上,最多 11.69× 與保留精度的 llama.cpp 相比 [PowerInfer GitHub]。 (Tiiny-AI/PowerInfer 等面向使用者的分叉跟蹤相同的工作線。)
橫向擴充套件是困難的部分。單個 4090 位置配置檔案不會自動成為健康的 Kubernetes 部署。您需要:
- 如果 CPU 專家執行,誠實的 GPU 請求/限制和 NUMA 感知的 CPU 固定。
- 如果模型不再適合,則採用分散式計劃:張量並行、管道並行、專家並行。
- SLO 拆分:互動式聊天、批次完成、代理工具迴圈。
在工作站和邊緣盒上使用 PowerInfer(或 llama.cpp、或 MLX);當您使用併發 OpenAI 型別的流量填充資料中心 GPU 時,請使用 vLLM(或 TensorRT-LLM 或 SGLang)。測量兩者。我們的 企業人工智慧實驗室 立場與Polyglot Benchmarks相同:證據,然後是ADR。
6. EG-MLA:在架構上壓縮注意力
服務技巧無法修復 KV 本質上巨大的模型。 EG-MLA(嵌入門控多頭潛在注意力)報告 KV 快取大小減少超過 91.6% 與多頭注意力 (MHA) 相比,效能下降可以忽略不計,與 MLA 相比,節省了更多成本(高達 59.9%),並且提高了推理基準準確性。作者認為嵌入門控會引發隱含的高階相互作用,並顯示出超過 1B 引數的縮放 [EG-MLA,arXiv].
工程意義:這是一個 培訓/架構 決定。您無法在 Llama-3 的每晚隨機 vLLM 上翻轉 EG-MLA 並期望論文的百分比。如果您控制預訓練或持續預訓練,EG-MLA 是您購買另一個 GPU 之前削減 HBM 的候選者。如果您只提供公共權重,請繼續使用引擎已支援的 PagedAttention + 量化 + MLA 變體,並在 EG-MLA 檢查點落地時對其進行跟蹤。
7. 無需進行貨物崇拜即可組合堆疊
| 層 | 使用時 | 當心 |
|---|---|---|
| PagedAttention / vLLM | 併發 API 服務、長上下文、共享字首 | 字首快取與正確性;高利用率時 OOM |
| PowerInfer | 單胖GPU/工作站代幣率 | 地點不匹配;混亂的橫向擴充套件 |
| Self-Debugging | 可以執行測試的程式碼/代理迴圈 | 無限回合;額外的預填充費用 |
| EG-MLA | 您訓練或微調骨幹 | 不是服役旗幟;重新執行完整評估 |
8. Kubernetes 上的可擴充套件性
精心設計的分散式架構會提高吞吐量,但也會引發故障模式:落後者、KV 快取傳輸、分詞器傾斜以及殺死熱字首的自動縮放器。實用模式(與我們的 Kubernetes 上的 Ollama / vLLM 寫):
- 專用GPU節點池;切勿將解碼盒與隨機 CPU 作業打包在一起。
- 如果 TTFT SLO 和令牌 SLO 發生衝突,則將預填充和解碼分開。
- HPA 對佇列深度或 GPU KV 佔用率的影響,而不僅僅是 CPU。
- 透過環提升服務堆疊(Ring Promoter)所以糟糕的引擎構建不能跳過測試。
9. 結論
渦輪增壓 LLMs 不是一種演算法。它對 KV 快取進行分頁 (PagedAttention),一個不會浪費這些頁面的服務引擎 (vLLM),當硬體是工作站 GPU (PowerInfer) 時進行位置感知生成,除錯而不是噴射候選者的代理迴圈 (Self-Debugging),以及 - 當你擁有權重時 - 只儲存較少的注意力 (EG-MLA)。每一層都會以記憶體、延遲和準確性為代價。衡量您的流量。釋出 ADR。船。
參考
- 權等人。 — 使用 PagedAttention 進行大型語言模型的高效記憶體管理 (arXiv:2309.06180,2023 年 9 月 14 日)。
- 陳等人。 — 教授大型語言模型進行自除錯 (arXiv:2304.05128,2023 年 4 月 12 日)。
- PowerInfer— 上海交通大學-IPADS/PowerInfer (以及相關的Tiiny-AI 分叉)。
- EG-MLA— 嵌入門控多頭潛在注意力 (arXiv,2025 年 9 月 20 日)。
- vLLM 部落格 — 簡單、快速且便宜的 LLM 與 PagedAttention 一起服務.
釋出者: Workstation。引用原作者發表的論文資料;您叢集上的生產數量會有所不同。