缓存到 a,blue 仍需逐层计算
T50 · 缓存到 a,blue 仍需逐层计算
同一图文条件下继续生成:a 已经选出 blue,下一步把 blue 送回。因果计算使旧位置不受后来位置影响,因此可以追问每层哪些结果能复用。
状态 b0
旧缓存截至a;上一行已选择blue,本步把blue作为新输入,book尚未知。
状态 b1
由于causal mask,追加blue不改旧表示;每层保留各自历史K/V,blue仍逐层产生Q/K/V。
状态 b2
blue当前query读取合法历史及自身,经后续计算和词表选book;不复算旧位置的完整表示。
状态 b3
下一步输入book,缓存加入已处理blue;历史增长使存储增长,图像或前缀改变时不能复用旧缓存。
公式与算例详情
缓存复用以参数、前缀、位置与推理状态一致为条件。每层保存该层旧位置的 K/V;新 token 仍逐层计算自己的 Q/K/V,再把本层新 K/V 加入缓存。图片或前缀变化时,不能直接沿用旧条件的缓存。
KV payload 近似为 2×L×B×T×Hkv×dh×s:2 为 K 与 V,L 为层数,B 为批次,T 为位置数,Hkv 为 KV 头数,dh 为每头维度,s 为每元素字节。L=32、B=1、T=4096、Hkv=8、dh=128、s=2 时为 536870912 字节,即 512 MiB,只计 KV,不含参数、FFN 激活及其他缓存。完整账本见 resource-ledger。
继续学习
历史推导与原实验身份:R54 · R55 · R56 · R57。旧切分、代词、权重与测量保留原任务条件,不能替换成本轮九单位新句。