大型語言模型工程

提示快取(prompt caching)

多數正式環境的提示共享一段長而不變的開頭:同一個系統提示、同一組工具定義、同一批少樣本範例,前置在每一個請求上。每次呼叫都為這個一模一樣的前綴重算模型內部狀態,純粹是浪費。提示快取把某個前綴算好的鍵值注意力狀態存下來一次,之後凡是以相同詞元開頭的請求便重用它們,直接跳到只處理那段新的、請求專屬的尾巴。

由於 transformer 的注意力在每一層都讀取一個逐詞元的鍵值對,而共享前綴的那些鍵值對與後面接什麼無關,它們可以算一次再回放。服務系統會把快取前綴組織起來以便快速查找——vLLM 的自動前綴快取以詞元區塊雜湊為鍵,SGLang 的 RadixAttention 把前綴存進一棵基數樹,使重疊的提示共享快取片段——而一次快取命中就消除了匹配長度的預填計算,同時砍掉首詞元時間與成本。

節省最大的地方,正是現代應用所棲身之處:長系統提示、跨多個問題重複使用的長文件、以及每一回合都重送歷史的多輪對話。限制在於記憶體——快取的 KV 狀態佔用 GPU 記憶體,受壓時必須被逐出——以及精確性:前綴必須逐詞元相符,所以開頭附近改了一個字元,就會從那一點起讓快取失效。

提示快取重用的是計算、不是輸出——它並不回傳一個快取好的答案,而是略過重算共享前綴,所以生成的尾巴每次仍是現算的。

又稱
prefix cachingKV prefix cache提示快取