詳細解釋
在 LLM 推理中緩存提示前綴(通常是系統消息、RAG 上下文、對話歷史)的 KV Cache,避免重複計算的優化技術。
問題背景:
- 自回歸生成:每個新 token 需計算與所有前文的注意力
- 重複前綴:多輪對話中,系統提示和前文不變,僅新增用戶消息
- 浪費:每次都重新計算相同前綴的注意力,消耗 90%+ 計算
Prefix Caching 原理:
- 存儲前綴的鍵值矩陣(KV Cache)
- 新請求到達時,檢查前綴是否已緩存
- 命中:直接從緩存加載,僅計算新 token
- miss:計算完整前綴並存入緩存
應用場景:
- 多輪對話:聊天機器人,上下文越來越長
- RAG:相同文檔集合回答多個問題
- 批量推理:相同提示模板,僅變量不同
- Agent 循環:每步添加觀察,但指令和工具描述不變
實現工具:
- vLLM:v0.3.0+ 引入 Prefix Caching
- SGLang:RadixAttention 機制
- Hugging Face TGI:Flash Attention 2 支持
- 商業:Together AI、Fireworks 等已實現
效果:
- 延遲降低:首 token 時間減少 50-90%(取決於緩存命中率)
- 吞吐量提升:相同硬件服務更多並發
- 成本:GPU 利用率提高,雲端成本降低
挑戰:
- 內存管理:緩存淘汰策略(LRU、LFU)
- 並發安全:多線程訪問緩存一致性
- 分佈式:多 GPU 間緩存共享
這是 LLM 服務優化的核心技術之一,直接影響成本和用戶體驗。