跳到內容

自動字首快取

簡介

自動字首快取(簡稱 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 不會帶來效能提升。