跳至主要内容

Warm-Start 中途恢復

功能

如果你以 L=4 生成並想嘗試 L=8,TinyLoop 從快取的 iter-4 狀態恢復 — 只跑迭代 5-8,而非從頭跑全部 8 次。

成本:8 次迭代

成本:4 次迭代(節省 50%)

運作方式

  1. build_resume_handle(prompt, L_used=4) — 以 L=4 執行 prefill,快照 residual
  2. resume_generate(handle, new_L=8) — 恢復快照,只跑迭代 5-8
  3. 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 層」。