Store-h KV Cache
功能
不儲存每層的 K 和 V(每 token 每層 2 × D),改儲存 pre-QKV hidden state h(每 token 每層 1 × D)。在 attention 時重建 K = W_k · h、V = W_v · h。
壓縮模式
| 模式 | 每 token 足跡(D=2048) | KV 節省 | 品質 |
|---|---|---|---|
| FP16 K/V | 8,192 B | — | 基線 |
| FP16-h | 4,096 B | 50% | Bit-exact |
| INT8-h | 2,080 B | ~66% | 保留 greedy |
| INT4-h | 1,056 B | 78% | 評估/排序安全 |
重建流程
重建使用 block 現有的 attn_qkv 權重 — 不需要額外的投影矩陣。
用法
# FP16-h(bit-exact,節省 50%)
TINYLOOP_KV_H_MODE=1 tinyloop model.tinyloop generate --loops 8
# INT8-h(節省 66%)
TINYLOOP_KV_H_MODE=1 TINYLOOP_KV_INT8=1 tinyloop model.tinyloop generate --loops 8
# INT4-h(節省 78%,用於評估/排序)
TINYLOOP_KV_H_MODE=1 TINYLOOP_KV_INT4=1 tinyloop model.tinyloop generate --loops 8
為何僅 looped
標準 transformer 可以儲存 latent(如 DeepSeek MLA),但 MLA 需要訓練過的壓縮與解壓矩陣(額外參數)。Store-h 不需要額外參數 — 重建使用模型已有的 QKV 權重。這能成立是因為權重跨迭代共享,所以相同的投影在每個 cache 層都有效。