モデル量子化とは、モデルのパラメータに使われる高精度の数値を低精度の数値に置き換えることです。たとえば32ビット浮動小数点から8ビット整数や8ビット浮動小数点に換えることで、モデルのサイズが小さくなり、VRAMとメモリの使用量が減るため、スマホや普通のノートパソコンでも、本来は入らない大規模モデルを動かせるようになります。モデルの構造は変えず、数値の表現精度だけを変えるもので、多少の精度と引き換えに速度とサイズを得る近似的な手法です。
量子化が実際に圧縮するもの
量子化が主に圧縮するのは重み、つまり学習が終わった後に保存されるパラメータです。学習でよく使われる32ビット浮動小数点は、1パラメータあたり4バイトを使いますが、8ビット整数に換えると1バイトだけになり、サイズは元の4分の1ほどに縮みます。活性化値も量子化できますが、より敏感で、強く圧縮しすぎると推論の中間段階で誤差が増幅しやすくなります。よくある方法は2つあります。学習後量子化は、学習済みモデルをそのまま形式変換するもので手軽ですが、精度の低下を制御しにくい方法です。量子化感知学習は、学習やファインチューニングの段階から低精度にモデルを適応させるため、より安定しますが、もう1周学習するコストがかかります。一部の実装では、特に敏感な層だけ高精度のまま残し、敏感でない部分だけを圧縮することもあります。
圧縮すると賢くなくなるのか、どう判断するか
賢くなくなるかどうかは、タスクと圧縮の度合いによります。8ビット量子化は日常的な会話、要約、分類への影響が通常はごく小さく、使っていて違いに気づかない人も多くいます。4ビット以下まで圧縮すると、数学的な推論、長いコード、多段階の推論が先に問題を起こしやすくなります。判断する際はサイズだけを見てはいけません。同じタスクで量子化版と元の版の実測スコアがどれだけ違うか、そして自分の実際の入力で明らかな劣化があるかどうか、この2つを見る必要があります。同じモデルでも量子化版が複数あることが多いので、選ぶときはまず量子化手法とビット幅を見て、次に評価結果とユーザーの感想を確認し、ファイルが最も小さいものだけを見て選んではいけません。
量子化版をそのまま使ってはいけない場合
VRAMとメモリがもともと十分にあり、結果をできるだけ正確にしたい場合は、まず元の版を使いましょう。正確な数値計算、多段階の推論、リスクの高い内容を扱う場合も、量子化版を最終的な答えとしてそのまま使ってはいけません。量子化版が最も適しているのは、デバイスに制約があり、オフラインで動かす必要があり、遅延とコストを優先し、結果を人が確認できるか、誤りを許容できる場面です。境界を1つ覚えておきましょう。量子化は枝刈りでも蒸留でもありません。パラメータを削除したり、小さなモデルに置き換えたりするのではなく、数値を安く記録するだけのものです。モデルが物事を間違えて覚える癖を、量子化そのものが直すことはできません。