JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

上線:脈絡延伸、提示快取與模型合併

一個太慢或太貴的好模型永遠上不了線。延伸脈絡視窗、為你重複使用的提示前綴做快取,並在不重新訓練的情況下合併微調後的檢查點——這些工程,把一個檢查點變成一個產品。

服務的心態

訓練優化的是一個損失;服務優化的是延遲、吞吐量,以及每詞元的成本。同一個在基準測試上得分漂亮的檢查點,若第一個詞元要花三秒、或每個請求要花五分錢,在生產環境裡就可能不堪用。推論成本(inference cost)主宰了一個已部署模型的生命週期預算——你只訓練一次,卻要服務數十億次——所以本指南裡的工程,正是大部分金錢實際被省下來的地方。

大型語言模型服務的核心資料結構是 KV 快取(KV cache):每一個注意力層為目前每個詞元算出的鍵與值,被儲存起來,好讓你在下一步不必重算。幾乎每一項服務優化,本質上都是一種更少地建構 KV 快取更便宜地儲存它的方法。握住這個視角,底下三項技術就各就各位了。

自回归服务逐个生成词元;KV 缓存保存每一层的键和值,使下一步无需重新计算前缀。

一个把每个生成词元作为输入反馈以产生下一个词元的循环。

脈絡視窗延伸

一個以 4k 詞元脈絡視窗(context window)預訓練的模型,開箱即用是無法處理一份 10 萬詞元的文件的——餵給它超過訓練時所見的量,品質會斷崖式下滑。瓶頸在*位置編碼(positional encoding)*:模型只學會解讀到訓練長度為止的位置訊號。脈絡視窗延伸(context window extension)是一組輕觸的技術,把那個極限往外推,通常靠一段短暫的微調而非完整的重新訓練。

多數現代模型使用旋轉位置嵌入(rotary position embeddings, RoPE),它把位置編碼成一組頻譜上的旋轉——而正是這個結構讓延伸變得便宜。最簡單的做法是*位置內插(position interpolation)*,把新的、更長的位置擠回模型已經理解的範圍。YaRN 把這點精煉:它不是對每個頻率均勻縮放,而是溫和地內插高頻(承載局部細節)、更積極地內插低頻(承載長程位置),只用一段極短的微調,就換來 4×–16× 的延伸而幾乎不掉品質。

m \;\longmapsto\; m\cdot\dfrac{L_{\text{train}}}{L_{\text{target}}},\qquad L_{\text{target}}>L_{\text{train}}

位置插值把每个 RoPE 位置索引重新缩放回模型训练时见过的范围,让更长的上下文不再性能骤降。

提示快取

許多請求共享一段又長又完全相同的前綴:同一份數千詞元的系統提示(system prompt)、同一組少樣本範例、同一套 RAG 指示、同一份工具 schema。沒有快取的話,每個請求都從零重算那整段共享前綴的 KV 快取——為同樣的數千詞元一付再付。提示快取(prompt caching)把前綴的 KV 狀態算一次就重複使用於各個請求,於是只有真正新增的後綴詞元需要處理。

報酬之所以巨大,是因為*預填(prefill)階段(處理輸入提示)是算力受限的,且對長提示而言常主宰延遲。快取把一個要處理 8,000 個提示詞元的冷請求,變成只處理那 50 個新詞元的熱請求——同時砍掉首詞元時間與成本。服務引擎把這實作為前綴快取(prefix caching),對提示前綴做雜湊並儲存其 KV 區塊以供重用;你則設計提示去最大化那段共享、穩定*的前綴,並把可變的部分放到最後。

模型合併

假設你從同一個基礎微調出三個專家——一個寫程式、一個算數學、一個聊天。同時服務三個模型很貴,而在它們之間路由又很麻煩。模型合併(model merging)把數個微調後的檢查點在權重空間裡組合成單一模型,而且不需額外訓練、不花 GPU 在梯度上——你只是在權重上做算術。

最簡單的配方是把權重取平均。更銳利的一種是*任務算術(task arithmetic)*:計算每個專家的*任務向量(task vector)*——它的權重與基礎模型權重之差——再把你想要的任務向量相加,讓你能字面意義上地組合技能。更講究的方法(TIES、DARE)會修剪並化解任務向量之間的符號衝突,使它們較少互相干擾。它之所以可行,是因為來自共享基礎的微調,往往停留在權重空間裡一個相連、低損失的區域內。

\tau_i=\theta_i^{\text{ft}}-\theta_0,\qquad \theta_{\text{merge}}=\theta_0+\sum_i \lambda_i\,\tau_i

任务算术把每个专家相对基座模型的权重差作为任务向量,再加上缩放后的向量,无需重训即可合并能力。

從檢查點到產品

退一步看這條路徑的完整弧線。你拿了一個基礎模型,用 SFT 給它行為,用 LoRA 家族的 PEFT 廉價地適配它,用偏好優化對齊它,用 RAFT 接地、用結構化解碼鎖定它的格式,最後用脈絡延伸、提示快取與合併讓它又快又負擔得起。這條端到端的流程——資料、適配、對齊、接地、服務——就是大型語言模型工程。