长会话为什么越来越贵:二次方注意力的一次讲清
来源:dev.to — 2026-10-24
📋 概述
「把这个变量改个名」作为第 8 条消息发出,和作为第 80 条发出,答案一样,按作者的样例数字成本约三倍;关掉提示缓存则是六倍。长会话两次撞上二次方曲线:模型内部每个 token 都要看前面所有 token,账单上每一轮都要重发整段对话。缓存让重复部分变便宜,但没有改变曲线形状。模型内部每个 token 有 query、key、value,Q·Kᵀ 是一张 n×n 的格子,只能往前看所以只剩约 n²/2 个格子的三角形,token 翻倍工作量四倍。FlashAttention 解决了显存要存整张格子的问题,但每个格子仍然要算,时间还是二次的。
🔑 核心要点
- 同样的请求在第 80 条发出,成本约是第 8 条的 3 倍,关缓存为 6 倍
- 只能往前看,把 n×n 格子削成约 n²/2 的三角,仍然是二次方
- FlashAttention 省的是显存而不是计算量,时间依旧二次
- 提示缓存让重复前缀变便宜,但不改变曲线的形状
- 模型在请求之间没有记忆,工具结果每轮都作为新请求重发
💡 金句
“A long session walks into a quadratic curve twice: once inside the model, where every token looks at every earlier token, and once on your bill, where every turn ships the whole conversation again.”
译:长会话会两次撞上二次方曲线:一次在模型里,每个 token 都要看之前所有 token;一次在账单上,每一轮都要重发整段对话。
← 返回 dev.to 首页