自動字首快取¶
簡介¶
自動字首快取(簡稱 APC)會快取現有查詢的 KV 快取,因此如果新查詢與現有查詢之一共享相同的字首,則可以直接重用 KV 快取,從而允許新查詢跳過共享部分的計算。
注意
vLLM 如何實現 APC 的技術細節可在此處找到 此處。
在 vLLM 中啟用 APC¶
在 vLLM 引擎中設定 enable_prefix_caching=True
以啟用 APC。以下是一個示例
examples/offline_inference/automatic_prefix_caching.py
示例工作負載¶
我們介紹兩種示例工作負載,其中 APC 可以提供巨大的效能優勢
- 長文件查詢,使用者使用不同的查詢重複查詢相同的長文件(例如軟體手冊或年度報告)。在這種情況下,APC 允許 vLLM 僅處理一次此長文件,而不是反覆處理,並且所有未來的請求都可以透過重用其 KV 快取來避免重新計算此長文件。這使得 vLLM 能夠以更高的吞吐量和更低的延遲服務未來的請求。
- 多輪對話,使用者在同一聊天會話中可能與應用程式多次聊天。在這種情況下,APC 允許 vLLM 重用聊天曆史的處理結果,而不是反覆處理整個聊天曆史,從而使得 vLLM 能夠以更高的吞吐量和更低的延遲服務未來輪次的對話請求。
限制¶
APC 通常不會降低 vLLM 的效能。話雖如此,APC 僅減少處理查詢(預填充階段)的時間,而不減少生成新令牌(解碼階段)的時間。因此,當 vLLM 大部分時間用於生成查詢答案(例如答案長度很長時),或者新查詢與任何現有查詢不共享相同字首(從而無法重用計算)時,APC 不會帶來效能提升。