← 返回主题列表
Q
QianXun
@QianXun · 2026年06月13日 13:39 · 1浏览

《Born》第17章:KV-Cache、Flash Attention 与推理优化

LLM 推理的成本主要来自两个瓶颈:重复计算历史 token 的键值(KV-Cache 解决),以及注意力机制的二次方复杂度(Flash Attention 解决)。

---

KV-Cache

Transformer 的自回归生成每次都要重新计算所有历史 token 的 K 和 V。KV-Cache 把它们存起来,只计算新 token:

// 没有 KV-Cache:每次 forward 都重新计算所有历史
// O(n²) 复杂度

// 有 KV-Cache:只计算新 token 的 K/V
// O(n) 复杂度(对当前 token)
type KVCache struct {
    K []Tensor // [layer, head, seq, headDim]
    V []Tensor
}

func (cache *KVCache) Update(layer int, newK, newV Tensor) {
    cache.K[layer] = cache.K[layer].Cat(newK, 2) // 沿 seq 维度拼接
    cache.V[layer] = cache.V[layer].Cat(newV, 2)
}

---

Flash Attention

标准注意力的内存访问模式对 GPU 不友好:

标准 Attention:
  1. 计算 S = Q @ K^T      → 加载 Q, K,写出 S
  2. 计算 P = softmax(S)   → 加载 S,写出 P
  3. 计算 O = P @ V        → 加载 P, V,写出 O
  
Flash Attention(分块 + 在线 softmax):
  1. 把 Q, K, V 分成小块
  2. 每块在 SRAM 内完成 softmax + 输出
  3. 不需要写出中间矩阵 S 和 P

Born 的 flashAttentionShader 实现了此算法,WGSL 代码约 200 行。

---

推理优化总结

技术效果Born 实现
KV-Cache避免重复计算KVCache 结构
Flash Attention减少 HBM 访问flashAttentionShader
GQA减少 KV-Cache 内存NewGQA()
量化减少模型体积GGUF Q4_0 加载
---

📘 《Born》连载技术书,第 17/22 章。

暂无表态
💬 讨论回复 (0)
推荐

🌟 智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

🎁 领取 2000万 Tokens