06 進階

生成與 KV Cache

每生成一個字,前面的字都被重算一遍——LLM 推論最大的浪費。KV cache 把算過的 Key/Value 存起來重用,是即時回應的關鍵。

生成與 KV Cache 範例輸出

這堂課的完整程式碼在 Jupyter notebook 裡。點下面按鈕在 Colab 開啟,就能直接執行、修改、實驗——你的修改不會動到原檔。

每次生成一個字,前面的字其實被重算了一遍又一遍——這是 LLM 推論最大的浪費。KV cache 把算過的 Key/Value 存起來重複利用,是讓 ChatGPT 能即時回應的關鍵工程。這堂課親手實作它。

這堂課你會學到

  • 理解自回歸生成為什麼重複計算
  • 親手實作 KV cache:只算新 token 的 K/V,舊的存起來重用
  • 驗證「有 cache」與「沒 cache」輸出完全相同、但 cache 更快

把 O(n²) 變成 O(n)

naive 生成每產一個字,就把整段序列重跑一次,前面字的 Key/Value 一再重算。KV cache 的點子:把每層算過的 K、V 存起來,下一步只算新 token 的 Q/K/V,再接上快取即可。

預覽圖說明了差別:naive 的累積成本隨長度平方成長,cached 接近線性。在 notebook 裡我們親手驗證:兩種方法輸出一字不差(證明 cache 正確),但 cached 明顯更快(實測約 3 倍,序列越長差距越大)。代價是記憶體——cache 要存每層每個 token 的 K、V,這也是長對話越聊越吃 VRAM 的原因。

👉 在 Colab 裡把生成長度從 200 加到 500,看加速比怎麼變,並想想為什麼長對話越聊越吃記憶體。

#llm #kv-cache #inference #optimization

留言 0

留言載入中…