跳至主要内容

每迭代安全檢查

問題

語言模型可能產生退化的隱狀態 — 爆炸的範數、NaN 傳播、對抗觸發的不穩定。在標準 transformer 中,只能在完整前向傳播完成後才能檢查。在循環 transformer 中,相同 block 執行 L 次。如果隱狀態在迭代 3 爆炸,迭代 4-8 是浪費的計算。

解決方案

每次迭代後檢查殘差 L2 範數。超過閾值立即中止。每 token 有 L 個檢查點而非 1 個。

成本分析

操作FLOPs (D=2048)相對成本
L2 範數~2K
Attention~4M2000×
完整 block~34M17,000×

檢查讀取 buf.main(已在 L2 cache)並計算單一標量。基本上免費。

實測結果

H100 / 2B INT4:

閾值行為觸發迭代範數值
10.0提前中止迭代 030.7
50.0捕獲發散迭代 262.4
1000.0正常生成最大 45.2

使用方式

model.generate(prompt, loops=8,
safety_check=True,
safety_norm_threshold=50.0)

為何僅限 Looped 架構

在標準 transformer 中,各層位於不同表示空間 — 跨層比較範數無意義。在循環 transformer 中,每次迭代在相同空間以相同權重操作,單一閾值可均勻適用。