跳至主要内容

雙位元與三位元權重交換

洞察

在循環 transformer 中,早期迭代修正粗略表示 — 不需要完整精度。晚期迭代微調最終輸出 — 受益於更高精度。透過每迭代分派不同位寬,在重要的地方以頻寬換品質。

雙位元:INT2 + INT4

載入時將 INT4 loop block 複製並重新量化為 INT2:

三位元:INT8 + INT2 + INT4

在迭代 0 加入 INT8 副本 — 初始表示形成的最高靈敏度迭代。

實測結果

H100 / 2B INT4,L=8,16 decode tokens:

設定解碼 (ms)吞吐量vs 基準
基準 (INT4)86.9184 tok/s
雙位元 (INT2+INT4)86.2186 tok/s快 0.8%
三位元 (INT8+INT2+INT4)91.2175 tok/s慢 5%

使用方式

# 雙位元
TINYLOOP_DUAL_BIT=1 TINYLOOP_DUAL_BIT_SWITCH=3 \
tinyloop model.tinyloop generate --loops 8

# 三位元
TINYLOOP_DUAL_BIT=1 TINYLOOP_TRIPLE_BIT=1 \
tinyloop model.tinyloop generate --loops 8

為何僅限 Looped 架構

在標準 transformer 中,每層變化精度需要每層每位寬的獨立量化權重副本 — 24 層 × 3 位寬 = 72 組權重。在循環 transformer 中,無論執行多少迭代,只需 2-3 份單一 loop block 的副本。