KV快取

KV Cache

快取注意力Key/Value以加速LLM生成

詳細解釋

KV快取(Key-Value Cache)是Transformer架構 (變換器 / 注意力模型) (Switch Transformer)推理中的核心優化技術,存儲先前token的Key和Value,避免自回歸生成時的重複計算。

為何需要:

  • 自回歸生成:逐token生成,每步都需所有歷史token的注意力
  • 無KV Cache:每步重新計算所有歷史Key和Value
  • 計算複雜度:O(n²d),n為序列長度,d為維度
  • 實際情況:大部分計算浪費在重複計算上

工作原理:

  • 存儲:每層每個token的Key和Value向量
  • Prefill階段:首次計算並存儲所有prompt的KV
  • Decode階段:只計算新token的Query,與存儲的K、V做注意力
  • 更新:每步將新token的KV追加到Cache

記憶體需求:

  • 每token每層:2 × hidden_dim × precision_bytes
  • 總量:batch_size × seq_len × num_layers × hidden_dim × 2 × precision
  • 示例:LLaMA 70B,FP16,batch=1,4K上下文 → ~10GB Cache
  • 長上下文:是大型語言模型 (大語言模型 / 大模型)推理的主要記憶體瓶頸

優化技術:

  • 多查詢注意力(多查詢注意力):所有頭共享同一KV,減少1/頭數
  • 分組查詢注意力(分組查詢注意力):平衡方案和效果
  • Flash Attention:記憶體高效的注意力計算
  • PagedAttention(vLLM):動態分配,減少碎片
  • 量化KV Cache:INT8存儲,FP16計算
  • 滑動窗口:只保留最近N個token的KV

挑戰:

  • 記憶體限制:長上下文時KV Cache占主導
  • 上下文長度:支持百萬token需要專門設計
  • 動態長度:不同序列長度差異大

KV Cache是現代大型語言模型 (大語言模型 / 大模型)高效推理的基石。

探索更多AI詞彙

查看所有分類,繼續學習AI知識