刈った模型を 1 bit に戻す。素の丸めは 6,874 倍、学習済みの重みを貼れば 8.2 倍、出力を目標に 6 分学習して 1.6 倍

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

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

層を落として 44 層にした模型は、bf16 のままでは NPU に載らない。 1 bit に戻す必要がある。 本記事は、刈った模型を 1 bit にする 4 つの方法を同じ物差しで比べ、何が効いて何が効かないかを確かめた記録である。

貼る先の対応を取る

まず、公開されている 1 bit モデルの重みを、刈った模型のどの Linear に対応させるかを決めた。 head の並べ替えを探索すると、attention の V と z の投影も候補の並べ替えで 80% を超える一致になり、貼る側に入った。 覆った範囲は 77% から 93.7% に広がった(線形 attention の層で 91.7%、通常の attention の層で 100%)。 bf16 のまま残るのは出力投影だけである。 量子化する 401 本は、以下のどの方法でも同じ集合にした。

素の丸めと、貼り付けの比較

構成 64 層 lit_ja 44 層 lit_ja 64 層 bf16 比 44 層 bf16 比
bf16 33.20 52.81 1.000 1.000
A: 元の重みを自前で符号に丸める 249,686 277,033 12,886 6,874
B: 公開 1 bit モデルの重みを貼る 318.21 572.11 6.089 8.198

B は A より、64 層で 2,116 倍、44 層で 839 倍良い。 学習済みの 1 bit 重み(QAT の成果)の値打ちは桁で大きい。 また、64 層での B が 6.089 倍なのに対し 44 層では 8.198 倍で、刈り込みが上乗せする悪化は 1.35 倍に過ぎない。 壊しているのは量子化のほうである。

倍率を付け直すと 200 倍悪くなる

符号は B のまま固定し、群ごとの倍率だけを 3 通りにして測った。

倍率 64 層 bf16 比 44 層 bf16 比
S0: 公開モデルが持っている値 6.089 8.198
S1: 最小二乗 mean(W × s) 2,788.8 1,695.9
S2: `mean( W )`

付け直すと 175 倍から 207 倍悪化する。 予想は逆だった。 符号を固定したときに重みとの距離を最小にする倍率は S1 で、算術としては正しい。 正しいが、効かない。 重み空間で最良の倍率は、機能の空間では 200 倍悪い。 公開モデルの倍率は元の重みの平均絶対値ではなく、学習が収束した先の値である。 その散らばりこそが学習の中身で、44 層を通ると桁で効く。 閉じた式で安く取れる分は無い、と判った。

目標を模型の出力に変える

次に、符号を凍結し、群ごとの倍率に掛ける倍数(1 億 3,100 万個と 1,000 万個)だけを学習した。 最初は 1 本の Linear の出力を目標にしたが、局所の誤差は模型の質を予言しなかった。 そこで目標を模型の次 token の損失に変え、300 step、6 分で回した。

目標 44 層 bf16 比
重みとの距離(素の丸め) 6,874
1 本の Linear の出力 379.3
貼っただけ(公開モデルの学習結果) 8.198
模型の出力(倍数だけ 300 step) 1.605

8.198 倍が 1.605 倍まで、5.11 倍縮んだ。 模型に近い目標ほど良くなる、という並びが桁を追って最後まで通った。 出発点の値は貼り付けの実測と小数 3 桁まで一致しており、貼り方が正しいことも同時に確かめられた。

この数字の割り引き方

  • 文章への適応が混ざっている。学習と評価で同じ 2 種類の文章を使った(窓は別)。selfgen は 3.249 で bf16 の 4.022 より良くなっているが、これは量子化の回復ではなく適応である。
  • 正直な数字は lit_ja の 2.40 倍である。64 層の bf16 から見ると、刈り込みの 1.479 倍を掛けて 3.55 倍になる。
  • これは下限である。符号は凍結、出力投影は bf16 のまま、学習は 300 step しかしていない。

それでも設計は決まった。 符号も倍率も学習済みの値から始め、最小二乗から始めてはいけない。 残りは学習でしか動かず、目標は模型の出力にする。 本番の学習は、この設計で組む。

この記事で扱った機材

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

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

KIOXIA NVMe SSD

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