
LLMの量子化はモデルの数値を少ない桁数にして軽くする手法
LLMの量子化(英語でquantization)は、モデルの中の数値を少ない桁数に置き換えて、モデルを軽くする手法です。LLM(大規模言語モデル)の中には、学習で定まった「パラメータ(重み)」と呼ばれる数値が何十億個も入っています。また、この数値は普通1つあたり16bitで保存されていて、量子化ではこの16bitを8bitや4bitに減らします。
bit(ビット)は、数値を記録するときの桁数のことです。桁数が少ないほど、データは小さくなります。
70億パラメータのモデルの重みの大きさ
| ビット数 | 1パラメータあたり | 重みの大きさ(目安) |
|---|---|---|
| 16bit(量子化前) | 2バイト | 約14GB |
| 8bit | 1バイト | 約7GB |
| 4bit | 0.5バイト | 約3.5GB |
量子化しても桁数が減るだけでパラメータ数は同じ
量子化で減るのは数値1つあたりの桁数で、パラメータ数は変わりません。たとえば80億(8B)パラメータのモデルは、4bitに量子化しても80億個の数値を持ったままです。
配布ページのモデル名に付く「8B」と「Q4」は、別々の情報です。8Bがパラメータ数、Q4がビット数を指しています。量子化は学習をやり直す操作ではなく、学習済みの同じ数値を少ない桁数で記録し直す操作です。
4bitにするとモデルの大きさは16bitの約1/4
16bitを4bitにすると、数値1つに使う桁数が1/4になるので、重みの大きさもおよそ1/4になります。8bitなら重みの大きさは半分です。70億パラメータのモデルなら、16bitで約14GBある重みが、8bitで約7GB、4bitで約3.5GBになります。
「約」と付けたのは、実際の量子化版には数値のほかに丸め方の情報も入るからです。llama.cppの表では、Llama-3.1-8BのQ4_K_Mは1重みあたり4.8944bitで、ファイルの大きさは4.58GiBでした。4bitちょうどより少し大きくなると考えておきましょう。
量子化しないとLLMは普通のPCではメモリに入りきらない
量子化が必要なのは、LLMの重みがそのままでは一般的なPCのメモリに収まらないからです。llama.cppの説明では、Llama 3.1の8Bモデルは元の大きさが32.1GBあり、Q4_K_Mに量子化すると4.9GBになります。70Bモデルなら、280.9GBが43.1GBまで小さくなります。
数十GBのモデルは、家庭用のPCではまず読み込むことができません。量子化は、この差を埋めて大きなモデルを自分のPCで動作させるための手段です。

Quantization reduces the precision of model weights (e.g., from 32-bit floats to 4-bit integers), which shrinks the model's size and can speed up inference.(quantize の冒頭)— GitHub より公式情報を見る →
量子化の仕組みは細かい数値を少ない段階へ丸めること
量子化の仕組みは、細かい小数を定められた少ない段階のどれかへ丸めることです。つまり、テストの点数を「A・B・C」の評価に置き換えるのに近く、細かな差は一部なくなりますが、記録に必要な桁数は少なくなります。丸めた値と元の値のずれは、量子化誤差と呼ばれています。
ビット数と、記録することができる値の段階の数
| ビット数 | 値の段階の数 |
|---|---|
| 8bit | 256段階 |
| 4bit | 16段階 |
| 3bit | 8段階 |
| 2bit | 4段階 |
4bitなら値は16段階に限られる
4bitで記録することができる数値は、2の4乗の16段階だけです。8bitにすると段階は256まで増えます。Hugging Faceも、int8で記録することができる値は256個しかないのに対し、元のfloat32はとても広い範囲の値を持つとしています。
そこで量子化では、元の数値の範囲を16段階や256段階に割り振り、それぞれの数値を一番近い段階に合わせます。割り振りに使うのは、スケール(目盛りの幅)とゼロ点という2つの値です。数値をスケールで割ってから丸め、範囲の外にはみ出した値は端の段階に合わせます。
数値を小さなまとまりに分けて丸めると誤差が減る
数値を小さなまとまりに分けて、まとまりごとに目盛りを定めると、丸めによる誤差が小さくなります。Hugging Faceの説明では、目盛りはテンソル(数値の大きなまとまり)全体で1組持つことも、もっと細かい単位で持つこともできます。ただし、細かく持つほど精度は上がる代わりに、目盛りを記録する分だけメモリも増えるという関係です。
はみ出した数値だけを別に計算するのも、誤差を抑える工夫です。LLM.int8()の論文では、ごく一部の外れ値だけを16bitで計算し、残りの99.9%超の値を8bitで計算する方法で、元の性能を保っています。
学習後に量子化するPTQと量子化を前提に学習するQAT
量子化のやり方は、学習を終えたモデルを後から量子化するPTQと、量子化されることを前提に学習するQATの2つがあります。PTQ(学習後量子化)では、学習済みのモデルに代表的なデータを通して数値の範囲を測り、そのまま変換します。つまり、追加の学習がいらないので手軽です。
QAT(量子化を考慮した学習)では、学習の途中で量子化の誤差を模擬して、モデルをその誤差に慣らしておきます。学習の手間がかかる代わりに、量子化したあとの性能が落ちにくくなります。

Only 256 values can be represented in int8, while float32 can represent a very wide range of values.(Quantization to int8)— Hugging Face より公式情報を見る →
量子化モデルの名前に付くGGUF・GPTQ・AWQの意味
量子化版の名前に付くGGUF・GPTQ・AWQのうち、GGUFはファイル形式、GPTQとAWQは量子化の方式を指しています。ただし、どれも「量子化版」の印に見えますが指しているものが異なります。
量子化版の名前に付く記号の意味
| 名前 | 何を指すか | 発表 |
|---|---|---|
| GGUF | モデルを保存するファイル形式。llama.cppやOllamaで読み込む | — |
| Q4_K_Mなど | GGUFの中の量子化の種類。Q4は4bit系 | 2023年6月(k-quants) |
| GPTQ | 重みを3〜4bitに減らす量子化の方式 | 2022年10月 |
| AWQ | 重要な重みを守りながら量子化する方式 | 2023年6月 |
GGUFはllama.cppやOllamaで使うファイル形式
GGUFは量子化の方式ではなく、モデルを保存するファイル形式です。GGUFの仕様書によると、GGUFはGGMLやGGMLをもとにした実行環境で推論するためにモデルを保存する形式とのこと。旧形式のGGML・GGMF・GGJTの後継にあたり、1つのファイルだけで配布することができます。
llama.cppでは、元のモデルをいったんGGUFに変換し、そのGGUFを量子化する2段階で量子化版を作ります。そのため同じGGUFでも、16bitのまま(F16)のファイルもあれば、4bitのファイルもあります。Googleも、Gemma 3の4bit版をOllamaやllama.cpp向けに公開しました。
Q4_K_Mなどファイル名の記号の読み方
GGUFのファイル名の「Q4」「Q8」はビット数、「K_M」「K_S」はllama.cppのk-quantsという量子化の種類を指しています。GGUFの仕様書は、ファイル名にモデル名・パラメータ数(8Bなど)・バージョン・重みの記録方式(Q4_K_M・Q4_0・F16など)を並べる命名規則を定めています。
k-quantsは、2023年6月3日にllama.cppへ追加された2〜6bitの量子化方式です。Q4_K_Sはすべての重みを4bit系で量子化し、Q4_K_Mは一部の重みを6bit系で残します。そのぶんMのほうがファイルは少し大きく、性能の低下は小さくなります。
GPTQとAWQはGPUで動作させる前提の量子化方式
GPTQとAWQは、重みを4bit前後まで減らしてGPUで速く動作させるために作られた量子化の方式です。GPTQは2022年10月に発表されました。
また、GPTQの論文では1,750億パラメータのGPTモデルを約4GPU時間で1重みあたり3〜4bitまで減らしても、精度の低下は無視できるほどだったと報告されています。この大きさのモデルを、初めて1枚のGPUで動作させることもできたとのこと。
AWQは2023年6月に発表された方式で、すべての重みが同じように重要なわけではないという考えに基づいています。重要な重みは全体の1%ほどで、その1%を守るだけで量子化の誤差を大きく減らすことができます。
どの重みが重要かは、重みそのものではなくモデルに入ってくる値(活性化)の分布から見分けます。AWQに合わせた推論の仕組みは、デスクトップとモバイルのGPUで、Hugging Faceの16bitの実装より3倍超速く動作しました。



GGUF is a file format for storing models for inference with GGML and executors based on GGML.(GGUF の冒頭)— GitHub より公式情報を見る →
reducing the bitwidth down to 3 or 4 bits per weight, with negligible accuracy degradation relative to the uncompressed baseline.(Abstract)— arXiv より公式情報を見る →
Protecting only 1% salient weights can greatly reduce quantization error.(Abstract)— arXiv より公式情報を見る →
量子化でLLMの精度はどれくらい落ちるか
量子化による精度の低下は8bitならほとんど無く、4bitで少しあり、3bit以下になると大きくなります。精度の目安としてよく使われるのが、パープレキシティという指標です。モデルが文章の次の語をどれだけ予測できたかから計算する値で、低いほど予測が合っています。
LLaMA 7Bを量子化したときのファイルの大きさとパープレキシティ
| 量子化の種類 | ファイルの大きさ | パープレキシティ(低いほど良い) |
|---|---|---|
| F16(量子化前) | 13.0GB | 5.9066 |
| Q6_K | 5.15GB | 5.9110 |
| Q4_K_M | 3.80GB | 5.9601 |
| Q3_K_M | 3.06GB | 6.1503 |
| Q2_K | 2.67GB | 6.7764 |
出典: llama.cpp PR #1684(k-quants)の表。
8bitなら性能は元のモデルとほぼ同じ
8bitに量子化したモデルの性能は、元の16bitのモデルとほとんど変わりません。2022年8月のLLM.int8()の論文は、1,750億パラメータのモデルを8bitに変換して、性能を落とさずにそのまま使うことができたと報告しました。推論に必要なメモリは半分になっています。
llama.cppの表でも、6bitのQ6_Kのパープレキシティは5.9110で、16bitの5.9066と比較した差は0.1%以内でした。6bitまで減らしても、元のモデルとの差はこの程度に収まります。
性能の低下は4bitで小さく、3bit以下で大きい
4bitでの性能の低下は小さく、3bit、2bitと減らすほど低下が大きくなります。LLaMA 7BのQ4_K_Mのパープレキシティは5.9601で、16bitとの差はわずかです。ところが、Q3_K_Mでは6.1503まで、Q2_Kでは6.7764まで上がります。
ファイルの大きさは、Q4_K_Mの3.80GBからQ2_Kの2.67GBまでしか減りません。3bit以下では、ファイルが小さくなる幅の割に性能が大きく落ちます。1bitまで減らした量子化版の限界は、詳しく解説しています。
量子化を前提に学習したQAT版は4bitでも性能が落ちにくい
量子化を前提に学習したQAT版は、4bitに量子化しても性能の低下を小さく抑えることができます。Googleは2025年4月18日に、Gemma 3のQAT版を公開しました。また、量子化がしばしば性能の低下を招くと認めたうえで、GoogleはQATを約5,000ステップ行い、Q4_0に量子化したときのパープレキシティの悪化を54%減らしたとしています。
量子化の誤差を学習で取り戻した4bit版は、他のモデルでも公開が続いています。Liquid AIの例も、取り上げています。



With our method, a 175B parameter 16/32-bit checkpoint can be loaded, converted to Int8, and used immediately without performance degradation.(Abstract)— arXiv より公式情報を見る →
Perhaps worth noting is that the 6-bit quantized perplexity is within公式情報を見る →0.1%or better from the originalfp16model.(PR の説明)— GitHub より
We reduce the perplexity drop by 54% (using llama.cpp perplexity evaluation) when quantizing down to Q4_0.(Understanding performance, precision, and quantization)— Google より公式情報を見る →
自分のPCに合う量子化版の選び方
自分のPCに合う量子化版は、モデルの重みの大きさを計算してから、その大きさがGPUのメモリ(VRAM)に収まるかどうかで選びます。VRAMは、AIの計算を処理するGPUが備える専用のメモリです。また、GoogleがGemma 3で公開した値を見ると、4bitにすれば同じモデルがずっと小さなVRAMに収まります。
Gemma 3の重みを読み込むのに必要なVRAM
| モデル | 16bit(BF16) | 4bit(int4) |
|---|---|---|
| Gemma 3 27B | 54GB | 14.1GB |
| Gemma 3 12B | 24GB | 6.6GB |
| Gemma 3 4B | 8GB | 2.6GB |
| Gemma 3 1B | 2GB | 0.5GB |
重みを読み込む分だけの値で、実行にはKVキャッシュの分のVRAMも必要。出典: Google Developers Blog。
モデルの大きさはパラメータ数×ビット数÷8で見積もろう
重みの大きさは「パラメータ数×ビット数÷8」で見積もることができます。この計算で出る数字の単位はバイトです。また、70億パラメータのモデルを4bitで動作させるなら、70億×4÷8で35億バイト、つまり約3.5GBになります。
ただし、この計算でわかるのは重みを読み込む分だけです。Googleも、公開したVRAMの値は重みを読み込むためだけのもので、実際に動作させるには会話の情報を保持するKVキャッシュのVRAMも必要だとしています。KVキャッシュの量は読み込む文章の長さで変わります。計算した値ちょうどのVRAMでは足りないので、余裕を持たせておきましょう。
メモリに余裕があれば8bit、なければ4bitを選ぼう
VRAMに余裕があれば8bit、収まらなければ4bitの量子化版を選ぶのが基本です。8bitなら性能はほぼ元のままで、4bitでも低下は小さいです。ただし、3bit以下はそれでも収まらないときの最後の手段と考えておくとよいでしょう。
同じVRAMなら、小さなモデルを16bitで動作させるより、大きなモデルを4bitで動作させるほうが良い結果になることがあります。llama.cppの表では、13BのQ4_K_Mは7.32GBでパープレキシティが5.3002となり、ほぼ倍の13.0GBある7Bの16bit版の5.9066より低い値でした。
Googleは、Gemma 3 27BのQAT版ならVRAM 24GBのRTX 3090で、12BならVRAM 8GBのRTX 4060 Laptop GPUで動作するとしています。27Bを16bitのまま読み込むには54GBのVRAMが必要なので、4bitの量子化版にすることで家庭用のGPUでも動作させることができるようになっています。
Note: This figure only represents the VRAM required to load the model weights. Running the model also requires additional VRAM for the KV cache, which stores information about the ongoing conversation and depends on the context length(See the Difference: Massive VRAM Savings)— Google より公式情報を見る →
まとめ:LLMの量子化で減るメモリと落ちる精度
LLMの量子化は、モデルの中の数値を16bitから8bitや4bitに置き換えて、必要なメモリを減らす手法です。4bitにすると重みの大きさは約1/4になり、パラメータ数は変わりません。仕組みは細かい数値を少ない段階へ丸めることで、GGUFはその量子化版を入れるファイル形式、GPTQとAWQは量子化の方式です。
精度は8bitならほぼ元のままで、4bitで少し落ち、3bit以下で大きく落ちます。量子化版を選ぶときは、パラメータ数×ビット数÷8で重みの大きさを見積もり、KVキャッシュの分の余裕を足したうえで、VRAMに収まる中で一番ビット数の多いものを選びましょう。
FAQ
- 量子化は量子コンピューターや物理の量子化と関係があるのか?
- 関係はありません。LLMの量子化は、細かい数値を少ない段階のどれかに置き換えるという意味で「量子化」と呼んでいるだけで、量子コンピューターの技術は使いません。Hugging Faceも量子化について、数値を精度の低いデータ型で持ち、計算とメモリのコストを下げる手法としています。
- 量子化と知識蒸留の違いは?
- 量子化は今あるモデルの数値を少ない桁数に置き換えるだけで、モデルを学習し直しません。知識蒸留は、大きなモデルの回答を手本にして小さなモデルを新しく学習させます。LLM.int8()の論文でも、学習済みのモデルを読み込んで8bitに変換し、そのまま使うことができたと報告されています。
- 量子化するとパラメータ数は減るのか?
- 減りません。量子化で減るのは数値1つあたりのビット数で、80億パラメータのモデルは量子化しても80億個の数値を持ったままです。4bitにすると数値1つのデータ量が16bitの1/4になるので、モデル全体が軽くなります。



