Bonsai 2 の符号は「回転して丸めた」ものだった。1 bit 化に重みの移植は要らない

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

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

1 bit の重みを自前で作る方法を探しているとき、公開モデルの中身を読んで決定的なことが判った。 Bonsai 2 の符号は、元の重みを回転してから丸めたものと 99.97% 一致する。 本記事は、その確認の手順と、手法の違いが意味することを記録する。

metadata に仕様は全部あった

Bonsai 2 の重みの metadata には、回転の仕様が揃っていた。 対角の符号ベクトル、正規化した Hadamard 行列、その適用順序である。 仕様どおりに回転を再現し、Hadamard 行列を 2 回掛けると単位行列に戻ることを誤差 0 で確かめた。

重みの詰め方についても読み取った。 群の下位 1/3 を 0 にし、残りを符号と群の倍率で表す。 非零が 67.2%、零が 32.8% である。

元の重みを回して突き合わせる

元モデル Qwen3.8 の重みを、3 通りの方法で回してから符号を取り、Bonsai 2 の非零の符号と比べた。

回転の取り方 非零での符号一致
対角を先に掛け、Hadamard を後に掛ける 99.97%
Hadamard だけ(対角なし) 48.56%
回転なし 50.08%

対角と Hadamard の両方を正しい順で掛けたときだけ、ほぼ完全に一致する。 回転なしの 50.08% は偶然と同じ水準で、符号は元のままでは何も説明できない。

Bonsai 1 と Bonsai 2 は手法が違う

同じ系列の 1 bit モデルでも、符号が元の浮動小数の重みと違う割合は大きく異なる。

モデル 符号が元と違う割合
Bonsai 1(1 bit、回転なし) 10.93%(小さい重みに集中)
Bonsai 2(3 値、回転あり) 0.03%(非零において)

Bonsai 1 は、学習で符号を動かして質を得ている。 Bonsai 2 は、符号をほとんど動かさず、回転で分布を均し、下位 1/3 を 0 にして質を得ている。 前回の実験で「符号も倍率も学習済みの値から始める」と決めたが、その前提は Bonsai 1 の世代の話だった。

だから符号の移植は要らない

非零 67.2%  ->  sign((W · d) @ H) と 99.97% 同じ  ->  移植しても情報が無い零   32.8%  ->  符号を持たない                   ->  移植するものが無い

必要なのは回転の実装だけで、仕様は metadata に完全にある。 元モデルが Qwen3.6 でも Qwen3.8 でも、回転してから丸めるだけで Bonsai 2 相当の表現を自前で作れる。 残るのは、どこを 0 にするか(群の下位 1/3 という規則)と、倍率の決め方である。

Hadamard 回転を実装する価値は、重みを移植するためではない。 回転そのものが質を作っている。 この読み替えが、次の方式(Terrarium)の出発点になった。

この記事で扱った機材

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

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

KIOXIA NVMe SSD

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