生產中減少LLM延遲和推理成本的12種方法
擴充套件LLM的關鍵不是增加GPU,而是消除每個請求中的不必要工作。本文介紹了12種實用的減少延遲和成本的方法。
在將大語言模型(LLM)投入生產時,延遲和成本往往會迅速超出預期。最佳化通常不在於升級模型或增加GPU,而在於消除不必要的計算。以下12種方法可幫助您有效降低LLM推理延遲和成本。
- 先測量正確的延遲指標。全面的監控應包括佇列時間、首token時間(TTFT)、token間延遲、端到端延遲、輸入輸出token數量、快取命中率以及工具和檢索延遲。尾延遲(P95/P99)比平均值更重要,有助於定位瓶頸。
- 積極減少輸出token。輸出token是延遲和成本的主要來源。設定合理的max_tokens限制,要求模型提供簡潔答案,使用停止序列,避免重複使用者問題,採用緊湊JSON格式。區分“簡要回答”和“詳細解釋”模式,不為使用者不讀的內容付費。
- 將請求路由到最小的可行模型。並非所有任務都需要最大模型。情感分析、資料提取、FAQ回答等重複性任務可用小模型處理。使用模型路由:小模型處理簡單請求,低置信度時升級到大模型。
- 減少LLM呼叫次數。避免工作流中包含過多順序呼叫。合併步驟,使用單個設計良好的提示替代多次呼叫。用確定性程式碼替代LLM處理日期格式化、欄位驗證等任務。獨立任務並行執行。
- 設計支援字首快取的提示。將系統指令、安全策略、示例等穩定內容放在提示開頭,使用者請求等變化內容放在後面,以便重用字首快取,避免重複處理。
- 新增多層快取。除提示快取外,使用精確響應快取(針對相同請求)、語義快取(針對相似請求)、檢索快取和工具結果快取。避免重複處理已知資訊。
- 控制RAG上下文預算。檢索過多文件會增大提示、增加延遲和成本。限制檢索數量,重排序後輸入模型,去重,移除無關內容。為系統指令、檢索內容、對話歷史等設定獨立的token預算。
- 將非互動任務移至批處理。資料標註、批次摘要、報表生成等任務不應占用即時資源。使用低優先順序佇列或批處理API,保護使用者體驗。
- 針對延遲調整批處理。過大的批處理會提高佇列時間和TTFT。根據使用者服務目標(P95 TTFT、併發量等)調整批處理大小,追求最佳使用者體驗而非GPU利用率。
- 謹慎管理KV快取和上下文長度。長上下文會快速消耗GPU記憶體。設定合理的最大上下文長度、輸出長度、併發請求數等限制。避免不必要地使用最大上下文視窗。
- 基於真實流量測試服務最佳化。量化、推測性解碼、分塊預填充等最佳化並非普遍適用。用生產環境的真實提示長度、輸出長度、併發模式進行基準測試。
- 新增准入控制和優雅降級。突發流量下,實施使用者速率限制、請求大小限制、優先順序佇列、降級到小模型等策略。確保系統在過載時仍能提供可接受的服務。
透過系統性地應用這些策略,您可以在不顯著影響質量的情況下,大幅降低LLM生產應用的延遲和成本。