Terrarium。1 bit の本体に INT4 の低ランク補正を足す共同学習と、知識が残ったかを判定する門

本記事にはアフィリエイト広告(Amazon アソシエイト)が含まれます。

実測日: Fri Oct 09 2026 09:00:00 GMT+0900 (Japan Standard Time)

Dragon-Bonsai と呼んでいた一連の研究を Terrarium に改称し、方式を 1 つに固定した。 本記事は、その数値契約と学習方式の設計、そして「方式を確立した」と言う前に満たすべき判定条件を記録する。 先に断っておくと、9B と 27B の実模型での学習、板への配備、配備後の知識比較はまだ実行していない。

数値契約

本体は 2 値の重み、補正は INT4 の低ランク因子である。 本体の群の倍率は FP16、補正因子の成分倍率は FP32 とした。

項目 契約
本体の符号 -1 か +1。非零の群に 0 の符号を混ぜない
本体の倍率 入力軸の連続 1024 重みごとに 1 個、正で有限の FP16
低ランク 論理の最大は 128。小さい投影は実際の rank を記録する
A と B A[N,R]、B[R,K]。整数の code は -7 から 7
補正の倍率 A の列ごと、B の行ごとに FP32
回転 既存の符号ベクトルと正規化 Hadamard 1024 を引き継ぐ

参照計算は次の形である。

Xt = Hadamard1024(X * rd)W1[n,k] = sign[n,k] * scale[n,k // 1024]A[n,r] = codeA[n,r] * sA[r]B[r,k] = codeB[r,k] * sB[r]Y = Xt @ W1.T + (Xt @ B.T) @ A.T + bias

1 投影あたりの理想的な容量は、形が [N,K] で rank が R のとき 1 + 16/1024 + 4R(N+K)/(NK) + 64R/(NK) bit/重みになる。 回転の符号、header、物理的な padding、埋め込み、出力 head は別に集計する。

局所の誤差と知識を混同しない

既存の方式には、GPTQ と入力共分散で重み付けた残差の特異値分解がすでにあり、符号と回転と A/B を固定して群の倍率だけを学習する回復学習もあった。 今回の違いは、量子化した順伝播のまま、符号、群の倍率、A/B、成分倍率を共同で更新することである。

ただし、方式を変える前に、既存の結果が教えていることを正面に置く必要があった。 27B の rank 64 の回復学習では、日本語の文学の perplexity が 35.55 まで下がった一方で、知識の試験は次のとおりだった。

試験 教師 候補
JMMLU 50.94% 34.53%
MathQA 58.80% 23.40%
MBPP(選択式) 52.30% 27.05%

perplexity は良くても、知識は半分近く失われていた。 rank を 64 から 128 にしたときの局所誤差の改善(0.0179 から 0.0073)は合成例の値で、実模型の知識保持が 2.45 倍になる証拠ではない。 perplexity だけを基準に学習を延ばしても、知識が戻ったとは推定できない。

もう 1 つ、既存の蒸留損失は教師の上位 64 個の logits だけを再正規化していた。 教師の不確かさと裾の確率質量を 0 として扱うので、知識の保持には裾を保つ損失に変える必要がある。

符号を学習するメモリ

符号を潜在変数として学習すると、対象の重み 1 個あたり 16 byte(潜在符号、勾配、Adam の 1 次と 2 次の状態)が要る。 9B のすべてをこの方法で学習すると、潜在符号 36 GB、勾配 36 GB、optimizer の状態 72 GB、合計約 144 GB になる。 活性や教師の出力は含まない。 最初の試行では、明示した層だけに潜在符号を持たせ、それ以外の符号は固定する。 全層の符号学習と記載しない。

符号の反転は観測する。 学習対象の符号だけを分母にして、初期からの反転と前回の観測からの反転を、全体と投影ごとに記録する。 反転や損失の低下を、知識保持の成功と判定しない。

配備後の知識保持を判定する門

評価の前に、保留集合と条件を契約ファイルへ登録し、結果を見てから許容幅を広げない。 門の要求は次のとおりである。

  • 必須の試験ごとに、異なる保留問題 500 件以上。すべての評価 seed で教師が正答する問題 100 件以上。
  • 評価 seed は 3 個以上。同じ問題の seed 違いを、別の問題として数えない。
  • 教師と候補で、問題 ID、問題の hash、正解、seed、試験集合、模型の revision、tokenizer、template、採点器が一致すること。
  • 試験ごとに、正答率の差(候補 – 教師)の 95% bootstrap 区間の下限が -0.01 以上であること。
  • 試験ごとに、教師が正答した問題を候補が誤答する条件付き割合の 95% 上限が 0.01 以下であること。
  • 完了した学習の manifest、実在する packed export、配備後の評価を結ぶ receipt が照合できること。

正答率の差と、教師の正答の消失は別の合格条件である。 教師の誤答からの改善で、教師の正答の消失を相殺してはいけない。 500 件は最低の件数で、1 ポイントの幅を必ず検出できる件数ではない。 3 seed の場合、消失が 0 件でも各 seed で約 449 件以上の教師正答がなければ、1% 以下を確認できない。

門の established=true は、事前に登録した有限の保留集合に対する非劣性を指す。 全知識の完全な保存や、未測定の速度を証明する値ではない。

今回実行したもの

  • 専用の試験 99 件(数値コア 26、exporter 9、trainer 14、notebook 15、知識の門 35)を通した。
  • 4 方式それぞれで、合成の重みと token を使い 12 回の更新(384 token)を回した。投影は N 512、K 1024、Hadamard 1024、群 1024、rank 128。
  • 学習後に host 側で bundle を読み直し、量子化した順伝播と比べた最大の絶対差は約 1.31e-6 だった。

これらはすべて配線の検証で、知識の精度の改善を示さない。 記録には evidence_kind=synthetic、established=false と区分して残した。 9B の 4 方式(旧損失と倍率、裾を保つ損失と倍率、裾と A/B、裾と A/B と選択した層の符号)を同じ教師、初期値、窓、予算で比べ、採用の根拠を保存するところからが実測になる。

この記事で扱った機材

Crucial DDR5-5600 SO-DIMM 128 GB キット(64 GB × 2、CT2K64G56C46S5)

27B 級の重みを bf16 のまま読み込んだり、1 bit への変換の中間状態を持ったりするには、ミニ PC のメモリをこの容量まで積む必要がある。

KIOXIA NVMe SSD

変換の中間ファイル、context binary、評価の記録の置き場。モデル 1 つの作業で数百 GB を使うので、容量に余裕のあるものを選ぶ。