量子化Quantization
数字の目盛りを粗くしてモデルを軽くすること
- 量子化はモデルの中の数字を粗い目盛りに丸めて書き込む作業です。数字の個数はそのままにして、一つを書く桁数だけを減らします。
- 桁数が減ると容量が減り、運ぶ時間が減り、計算も速くなります。個人のパソコンやスマートフォンでAIが動く秘訣です。
- 代わりに細かい違いは潰れます。 ぎりぎりで分かれていた判断が揺らぎ、答えが長くなるほどずれが積み重なります。
- どれだけ減らすかは選択です。少し減らせば違いはほとんど感じられず、大きく減らすと答えが目に見えて崩れます。
- 使わない接続を取り除く剪定とは別の方法です。量子化は数字を一つも捨てません。
目次
1たとえで理解する
惣菜屋さんの秤が1グラム単位まで表示されます。ひじき煮312グラム、から揚げ487グラム。容器が百個ほどあるので帳簿に書く数字も百個です。桁が長くて書くのが面倒で、帳簿も分厚くなります。
そこで秤の目盛りを粗く変えます。100グラム単位でだけ量り、目盛りの間に挟まった重さは近いほうへ切り上げたり切り下げたりします。312グラムは300グラムになり、487グラムは500グラムになります。数字が短くなるので帳簿は薄くなり、合計を出す手も速くなります。
もちろん重さが少しずつずれます。それでもどの容器がより重いか、今日の惣菜がどれだけ出たかは、ほぼそのまま分かります。量子化はこうして目盛りを粗く変える作業です。
2くわしく
個数はそのまま、桁数だけ減らします
モデルの中には学習で決まった数字が数十億個入っています。もとはこの数字を小数点以下まで余裕のある桁数で保存します。細かい違いまで盛り込めますが、一つあたりの場所を多く使います。
量子化はこの数字を粗い目盛りに移し替えます。目盛りの間に挟まった値は最も近い目盛りに丸めます。数字が消えることも、接続が切れることもありません。表の升目の数はそのままで、升目に書かれた数字が短くなるだけです。
桁数を半分に減らせば容量もおよそ半分になります。四分の一まで減らすことも珍しくありません。十数ギガバイトのモデルが四、五ギガバイトまで下がれば、そこから個人のパソコンで動かせる代物になります。
目盛りをどこに掛けるかが腕の見せどころです
目盛りを粗くするとき、値をどの区間に広げるかを決める必要があります。ほとんどの数字が0付近に集まっているのに目盛りをとても大きな値まで広く取ってしまうと、肝心の0付近がまるごと一つの目盛りに潰れてしまいます。
そこで層ごと、あるいは行ごとに別々の目盛り間隔を決めます。大きく飛び出す少数の数字だけ元の桁数で残し、残りだけ減らす方法も使います。同じ桁数まで減らしても、この調整をどれだけうまくやったかによって結果の質はかなり分かれます。
小さな例のデータを流しながら、実際にどの値がどこに集まるかを測ってから目盛りを合わせることもあります。学習をやり直すわけではなく目盛りを合わせるだけなので、数分から数時間で終わります。
ノートパソコンやスマートフォンでAIが動く理由
モデルを動かすとき最も時間を食うのは計算そのものではなく、数字をメモリから取り出す作業です。桁数が短くなると、同じ時間でより多くの数字を運べます。だから答えが出る速度が目に見えて速くなります。
グラフィックメモリに全部載るかどうかも分かれ目です。モデルがメモリに入りきらないと、断片を入れ替え続けなければならず速度が大きく落ちます。ブラウザの中で動く対話AI、インターネットなしで使う翻訳機、スマートフォンの写真整理機能は、たいてい目盛りを減らしたモデルです。
何を失うかも知っておくべきです
軽くなった分だけ代償があります。丸め込みのせいで元の値と少しずつずれ、そのずれが層を通るたびに少しずつ積み重なります。答え一行を書くのにも層を何十回も通るので、最初は見えなかった違いが後ろに行くほど表れます。
特にぎりぎりで分かれていた判断が揺らぎます。長い計算やコードのように一文字でも違えば結果がずれるもの、答えがとても長くなるもので違いが目立ちます。逆に軽い会話や要約では違いに気づきにくい傾向があります。
剪定とは別の方法です
モデルを軽くする方法なので剪定とよく一緒に語られますが、していることは違います。量子化は数字を一つも捨てません。全部残したまま書き方だけを粗く変えます。剪定は逆に使われない接続をまるごと無くして個数を減らします。
二つは互いに邪魔をしないので一緒に使うこともあります。まず使われない接続を取り除いて個数を減らし、残った数字の目盛りを粗く変えるという具合です。
3もう少し正確に
量子化は浮動小数点で保存された重みと計算途中の値を、より少ないビット数の整数表現に移す作業です。値の範囲を目盛り間隔と基準点で表し、元の値を最も近い目盛りに対応させます。学習を終えたモデルにあとから適用する方式と、学習の途中から粗い目盛りを前提に訓練する方式があります。
たとえがずれる点もあります。秤の目盛りは最初から最後まで同じ間隔ですが、実際の量子化は層ごとに値が集まる区間を測って間隔を変えます。また惣菜の重さは丸めてもその場で誤差が終わりますが、モデルの数字は次の層の入力になるためずれが後ろへ伝わります。保存するときだけ減らして計算するときは元の桁数に戻す方式もあり、容量だけ減って速度はあまり速くならない場合もあります。どの方式でも減らしたあとは評価をやり直してどれだけ揺らいだか確かめます。
4やってみる
5よくある誤解
量子化するとモデルが馬鹿になると思われがちですが、実際には適度な水準までなら日常的な会話で違いに気づきにくいです。
量子化がモデルの一部を切り落とすことだと考えられがちですが、実際には数字を一つも捨てず、書き込む桁数だけを減らします。
容量が減れば速度も必ず速くなると思われがちですが、実際には計算するときに元の桁数へ戻す方式なら速度の向上はほとんどありません。
7ひとこと要約
つまり量子化はモデルの中の数字の目盛りを粗く変えて容量と速度を得て、細かい正確さを少し差し出す取引です。
誤りや、もっと良いたとえがありますか? 修正を提案する · 最終更新2026-09-02