本页学习说明
参数保存训练所得,K/V 保存特定请求在特定层的当前计算状态。prefill 处理已知提示并产生首分布,选择首 token 后进入逐步 decode。新位置读取允许的旧 K/V 与当前状态,将输出交给下一层,并把本层新 K/V 追加到缓存。训练见过同文,并不等于已有可直接复用的请求缓存。
进一步阅读
条件与来源
以下从计算对象、条件与原始证据继续展开。
原 N21:整段在手,不等于每一行都能偷看答案
输入 BOS / I / gave / him 对应下一词标签 I / gave / him / a。gave 行可读取 BOS、I、gave,而不能读取后面的输入 him。标签 him 在目标端,不作为该行可见输入。训练前向之后另有 loss 与反向更新;推理 prefill 处理已知提示,只做前向;decode 生成未知新 token,需要逐步等待。
来源:L5 T30/T34 的因果训练与生成;原句片段固定使用 him。
相关的完整阅读材料保留原有公式、引用和原始图解。
原 N52:训练结束后,这一次请求从哪里开始?
训练结束后,普通推理保留模型参数,不为每条请求重新建立梯度和 Adam 更新历史。本次输入仍须经过所有层,计算新的表示与 K/V。prefill 是处理已知提示的前向阶段;对因果模型,位置可批量处理,但每个位置只能读取合法前缀,层与层之间仍有依赖。
首输出概率分布与选择首 token 是两个动作。选出首 token 后,才有新的已知输入供下一轮 decode 使用。图中的 B 仅标识示意 token,不宣称真实 tokenizer 切分或模型运行结果,也不把 prefill 画成同时生成完整回答。
原推理流程与完整说明 · 服务系统主题 · PagedAttention §2.1–2.2,物理 p3。
原 N53:新 token 读取旧 K/V,再把自己的 K/V 留下来
因果计算使旧位置的表示不依赖后来追加的 token,因此旧 K/V 可以复用。每个新 token 在当前层生成自己的 Q、K、V:Q 匹配允许的旧 K 和当前位置 K,权重用于汇总对应的 V,输出送往下一层,新 K/V 追加本层缓存。
缓存复用省掉的是旧位置重算,不是后续读取成本。旧 Q 通常不需要为所有后续步骤持久保存;临时激活和其他运行状态仍然存在。图示一层,各层有各自的缓存。改变参数、前缀或位置计算条件后,应重新判断兼容性,不能任意修改旧文本而沿用缓存。
完整 KV 机制 · 服务主题与兼容条件 · PagedAttention §2.1–2.2,物理 p3。
阅读完整讲义