🎯 什麼情境該想到我
當模型品質已經夠用,但回應太慢、長輸入就爆記憶體、每次呼叫太貴——問題出在推論階段而不是模型本身的時候。
⚙️ 怎麼用(步驟 / 公式)
- 先分辨瓶頸屬於哪一類:注意力運算(隨序列長度平方成長)/重複計算(每生成一個 token 就重算前面所有 token)/逐字生成(自迴歸天生序列化)。三種瓶頸各有對應解法,別亂套。
- 注意力吃記憶體 → Flash Attention。標準注意力要具體化整個 N×N 矩陣,記憶體 O(N²);Flash Attention 用三招繞開:
- Tiling:把 Q/K/V 切成小塊放進 GPU 的 SRAM 分塊算,不寫回完整矩陣
- Recomputation:反向傳播時重算而不是存下中間結果,用算力換記憶體
- Kernel Fusion:把多個運算融成單一 kernel,減少記憶體來回搬運
- 重複計算 → KV Cache。把已生成 token 的 key/value 存起來,下一步只算新 token。代價是快取本身佔記憶體,且會隨序列長度成長,需要管理策略。
- 逐字生成太慢 → Speculative Decoding。用一個小的 draft 模型一次猜好幾個 token,再讓大模型平行驗證:猜對就一次收好幾個,猜錯就退回。品質不變,速度變快。
- 這三者可以疊加,也可以再疊上量化(見 工具-模型量化格式選擇)——量化省記憶體,這裡省時間。
🧪 我實際套用的紀錄
- 2026-08-01:從 LLM Course 收錄,尚未實際套用。
⚠️ 注意 / 什麼時候不適用
- 沒量過就別優化。先確認慢在注意力、在快取、還是在逐字生成,否則做白工。
- Speculative Decoding 的收益取決於 draft 模型猜中率,猜太爛時反而多花一次驗證。
- KV Cache 是拿記憶體換速度,長上下文情境下它自己就可能變成新的記憶體瓶頸。
🔗 相關工具
- 工具-模型量化格式選擇 —— 互補面向,它省記憶體,這裡省時間,實務上常一起上
- 工具-AI系統評估 —— 加速之後要驗證品質沒掉,用同一套評估集前後對照
- 工具-前端效能優化規則 —— 同一套紀律換個場域:都是先量出瓶頸才動手,別憑感覺優化