外观
如何理解Transformer 注意力与 KV Cache?
标准回答
注意力以 Query 与 Key 的匹配决定如何汇聚 Value;经典缩放点积形式是 softmax(QKᵀ / √dₖ)V。多头机制让不同子空间参与表示。因果生成通过掩码限制当前位置读取未来 Token,模型仍需位置相关信息表达顺序。
常见自回归服务可以区分处理输入的 prefill 与逐步生成的 decode。KV Cache 复用历史位置的 Key / Value,减少每一步重复计算,但缓存会随上下文和并发请求占用内存。长输入、长输出与大批次对资源的影响不同。
因此首个有效 Token 时延、后续 Token 速度和整个任务完成时间应分开测量。模型服务加并发可能改善吞吐,也可能增加排队和显存压力;具体架构、注意力实现和缓存策略需要按实际模型核对。
追问与回答
为什么每次只生成一个 Token 仍占很多内存
模型权重、KV Cache、激活与运行缓冲共同占用内存;输出步长小不代表历史上下文无需保存。
上下文加倍是否一定让耗时加倍
不能简单线性推导,注意力阶段、缓存、硬件和实现不同;要分别测 prefill、decode 与排队。
易混淆点
- 仅用输出字数解释完整请求成本。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q212