Warm-Start 中途恢復
功能
如果你以 L=4 生成並想嘗試 L=8,TinyLoop 從快取的 iter-4 狀態恢復 — 只跑迭代 5-8,而非從頭跑全部 8 次。
成本:8 次迭代
成本:4 次迭代(節省 50%)
運作方式
build_resume_handle(prompt, L_used=4)— 以 L=4 執行 prefill,快照 residualresume_generate(handle, new_L=8)— 恢復快照,只跑迭代 5-8- KV cache 層 0-5(2 pre + 4 loop)被重用;層 6-9 重新計算
量測
H100 / 407M INT4,prefix=128,decode=16:
| 操作 | 時間 |
|---|---|
全新 generate(loops=8) | 329 ms |
build_resume_handle(一次性) | 6.4 ms |
resume_generate(new_L=8) | 222 ms |
| 節省 | −32.5% |
在 N=1 次後續呼叫即達損益平衡 — 6.4 ms 的建構成本在第一次 resume 就回本。
用法
handle = model.build_resume_handle(prompt, L_used=4, max_loops=32)
out_4 = model.resume_generate(handle, new_L=4, max_tokens=64)
# 使用者想要更好品質:
out_8 = model.resume_generate(handle, new_L=8, max_tokens=64)
為何僅 looped
從迭代 k 恢復需要迭代 k 的權重與迭代 0 完全相同。在標準 transformer 中,第 5 層的權重與第 1 層完全不同 — 無法有意義地「從第 5 層恢復並繼續跑第 5-8 層」。