量子化(quantization)とは|LLMを軽く・速く・安く動かすモデル圧縮の仕組み

ローカルでLLMを動かそうとすると、必ず「量子化(quantization)」という言葉に出会います。モデル名の末尾に付くQ4_K_MやINT4、4bitといった表記がそれです。量子化はモデルを軽く・速く・安く動かすための圧縮技術で、限られたVRAMでも大きめのモデルを載せられるようにする鍵になります。この記事では、量子化とは何か、どんな方式があるか、どう選ぶかを、特定モデルの数値を断定せずに実務目線で整理します。
量子化とは何か
量子化とは、モデルの重み(weight)や活性(activation)を、より少ないビット数の数値表現に置き換えることです。Hugging FaceのOptimumドキュメントでは、通常32bit浮動小数点(float32)で表される重みや活性を、8bit整数(int8)のような低精度のデータ型で表現し、推論の計算コストとメモリコストを下げる技術と説明されています。
実際のLLMでは、学習・配布時点でFP16やBF16(16bit)が使われることが多く、そこからINT8(8bit)やINT4(4bit)へ落とすのが一般的な流れです。ビット数が減れば1パラメータあたりの記憶容量が減り、整数演算による高速化も期待できます。float32からint8への変換は、値の範囲[a, b]を整数空間に写像するスケール(S)とゼロ点(Z)を使うアフィン量子化として定式化されます。
メモ
なぜ量子化するのか
量子化の狙いははっきりしています。
- メモリ/VRAMの削減: 16bitから4bitにすれば、単純計算で重みの記憶容量は約4分の1になります。手元のGPUに載らなかったモデルが載るようになります。
- 高速化: 転送するデータ量が減り、整数演算を活かせる場面では推論が速くなることがあります。
- コスト減: 小さいGPUや少ないメモリで動けば、必要なハードウェアの規模を抑えられます。
- ローカル/エッジ実行: 組み込み機器やノートPCなど、リソースの限られた環境でも動かせるようになります。
あわせて読みたい
ローカルLLMを動かすPC・GPUの選び方|VRAMから逆算する構成と予算
代表的な方式と形式
量子化にはいくつかの方式・ファイル形式があり、使う実行環境によって選択肢が変わります。名称と概要を整理します。
| 形式/方式 | 主な文脈 | 概要 |
|---|---|---|
| GGUF (Q4_0/Q4_K_M/Q8_0など) | llama.cpp系(Ollama/LM Studio) | CPU/GPU推論向けのファイル形式。Q4は4bit、Q8は8bitを表し、K系はブロック単位で精度を工夫した方式 |
| GPTQ | GPU推論 | 学習後にキャリブレーションデータを使い、誤差を最小化しながら重みを低ビット化するPTQ手法 |
| AWQ | GPU推論 | 活性の統計から重要な重みチャネルを見極め、そこを保護して量子化するPTQ手法 |
| bitsandbytes(INT8/NF4) | Transformers/QLoRA | 8bitや4bit(NF4)で読み込む方式。QLoRAの微調整で使われる |
GGUFはQに続く数字がビット幅の目安を表し、Q4はおよそ4bit、Q8はおよそ8bitに対応します。llama.cppのドキュメントには、量子化タイプごとのビット/重み(bits per weight)やモデルサイズを比較した表が示されており、同じモデルでも形式によって容量が変わることが確認できます。表記の「Q4」「Q8」がビット数、「K」やサフィックスがブロック単位の精度の工夫を表す、と読むと理解しやすいです。
NF4(normalized float 4)はQLoRA論文由来の4bitデータ型で、Hugging Faceのドキュメントでは正規分布に従う重みに適した情報理論的に効率的な表現とされています。bitsandbytesでは4bitで重みを保持しつつ計算はfloat16などで行い、さらに二重量子化(double quantization)でパラメータあたり平均0.4bit程度を追加で節約できると説明されています。
ヒント
あわせて読みたい
ローカルLLMの実行環境を比較|Ollama・LM Studio・llama.cpp・vLLMの選び方
PTQとQATの違い
量子化のタイミングには大きく2種類あります。
- 1
PTQ(学習後量子化)
学習済みのモデルを、あとから量子化します。追加学習が不要で手軽なため、公開済みのチェックポイントを量子化する場合はこちらが基本です。GPTQ・AWQ・GGUF・bitsandbytesはいずれもこの系統です。少量のキャリブレーションデータで重みの範囲を決める方式もあります。 - 2
QAT(量子化考慮学習)
学習の段階から量子化による誤差を織り込んで学習します。低ビットでも品質を保ちやすい一方、元の学習パイプラインとデータが必要で、コストが高くなります。品質を最優先し、かつ学習環境を持つ場合の選択肢です。
一般に、同じ低ビットならQATの方が品質を保ちやすいとされますが、公開モデルを手元で軽くしたい多くのケースでは、学習を伴わないPTQで十分な品質が得られることが多い、という整理になります。まずPTQを試し、品質が足りなければ手段を変える、という順序が現実的です。
VRAMの見積りとビット数の目安
「そのモデルが手元に載るか」は、パラメータ数と1パラメータあたりのバイト数からおおまかに見積もれます。目安は次のとおりです。
| 精度 | 1パラメータあたり | 7Bモデルの重みの概算 |
|---|---|---|
| FP16/BF16(16bit) | 約2バイト | 約14GB |
| INT8(8bit) | 約1バイト | 約7GB |
| INT4(4bit) | 約0.5バイト | 約3.5GB |
注意
パラメータ数 × 1パラメータあたりのバイト数、という掛け算がVRAM見積りの起点です。4bitにすればFP16の約4分の1に収まる、という感覚を持っておくと、どのサイズのモデルまで狙えるかの判断が速くなります。
実務での選び方
- 1
まず4bitから試す
4bitは品質と軽さのバランスが取れた定番の妥協点とされます。多くのケースで、まず4bit(GGUFのQ4_K_MやNF4など)を動かして品質を見るのが出発点です。 - 2
自分のタスクで必ず品質を評価する
量子化による品質劣化の大きさはタスク依存です。要約・分類・コード生成など、実際に使う課題で出力を比べ、許容できるかを自分で確かめます。ベンチマークの一般値だけで判断しないことが大切です。 - 3
足りなければビット数を上げる
4bitで品質が不足するなら、5bit・6bit・8bitと上げて再評価します。逆に軽さを優先するなら、劣化を確認した上で低ビットを選びます。 - 4
レイテンシとのバランスを取る
量子化は必ずしも速くなるとは限りません。環境によっては逆量子化のオーバーヘッドで遅くなる報告もあります。速度も併せて計測し、総合で決めます。
あわせて読みたい
ファインチューニングとRAGの使い分け|LLMをカスタマイズする2つの道の選び方
向かない場面・注意する場面
量子化はいつでも正解ではありません。次のような場合は慎重に判断します。
- 精度を最重視する用途: 誤りが許されない処理では、量子化による劣化が問題になり得ます。高いビット数やフル精度を検討します。
- 既にクラウドAPIで足りている場合: 品質・運用・コストの総合でクラウドAPIが要件を満たすなら、ローカルで量子化モデルを運用する手間をかける理由は薄くなります。
- 極端な低ビット: 2bit・3bitのような強い圧縮は、劣化が大きくなりやすく、タスクによっては実用に耐えないことがあります。軽さと引き換えのリスクを理解して選びます。
本文の用語と仕組みはHugging FaceのOptimum量子化ガイド、llama.cppのquantize README、bitsandbytes/QLoRA関連のHugging Face公式ドキュメントに基づきます。具体的な品質・速度は、モデル・タスク・ハードウェアで変動するため、必ず自分の環境での計測を優先してください。
よくある質問
量子化するとどれくらい軽くなりますか
量子化すると品質はどれくらい落ちますか
GGUF・GPTQ・AWQ・NF4はどれを選べばいいですか
量子化は必ず速くなりますか
PTQとQATのどちらを使うべきですか
まとめ
量子化は、重みや活性の数値精度を下げてLLMを軽く・速く・安く動かすための圧縮技術です。FP16からINT8/INT4へ落とすことで、限られたVRAMでも大きめのモデルを扱えるようになります。一方で低ビットほど品質劣化のリスクがあり、その影響はタスク依存です。まず4bitを試し、自分のタスクで品質と速度を計測して調整する、という実証的な進め方が要になります。
量子化モデル導入のチェックリスト
- 動かしたいモデルのパラメータ数と、必要ビット数からVRAMを概算した
- 重みの概算にKVキャッシュや実行環境の余裕を加えて見積もった
- 使う実行環境が読める量子化形式(GGUF/GPTQ/AWQ/NF4など)を選んだ
- まず4bitを試し、自分のタスクで品質を評価した
- 品質が不足すればビット数を上げ、レイテンシも併せて計測した
- クラウドAPIで足りないか、ローカルで量子化運用する理由を確認した
量子化を理解すると、「どのモデルを、どの精度で、どの環境に載せるか」という選択が具体的な計算に落ちます。まずは手元で4bitモデルを1つ動かし、必要なメモリと出力品質を体感するところから始めるのが近道です。
出典・参考
関連する記事
ローカルLLMの実行環境を比較|Ollama・LM Studio・llama.cpp・vLLMの選び方
ローカルLLMを動かすための実行環境(ランタイム)を、業務目線で比較します。Ollama・LM Studio・llama.cpp・vLLMそれぞれの役割と向き不向き、UIツールとの組み合わせ、用途別の選び方、ハードウェアの前提までを、優劣を断定せず整理します。
ローカルLLMを動かすPC・GPUの選び方|VRAMから逆算する構成と予算
ローカルLLMを自分の環境で動かすためのPC・GPU選びを、実務目線で整理します。最重要はコア速度ではなくVRAM容量であること、4bit量子化でメモリを圧縮できること、モデルサイズ別のVRAM目安、Mac(統合メモリ)という選択肢まで、動かしたいモデルから逆算して構成と予算を組む考え方をまとめました。
ファインチューニングとRAGの使い分け|LLMをカスタマイズする2つの道の選び方
LLMを自社用途に寄せる方法には、プロンプト、RAG、ファインチューニングの階層があります。RAGとファインチューニングはそれぞれ何を得意とし、どこで選ぶべきか。知識の更新性、出力の安定性、コストとトラフィックの観点から使い分けの原則を整理し、実務で有効なハイブリッド構成と落とし穴まで、公式ドキュメントを確認しながら冷静にまとめます。


