LLM Frontline
開発・エージェント

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

ミナト開発・API担当
・ 約11分で読めます
量子化(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)を使うアフィン量子化として定式化されます。

メモ

重みだけを量子化する「weight-only(重みのみ)量子化」と、活性まで量子化する方式は区別されます。LLMのローカル実行で広く使われるGGUFやGPTQ、AWQ、NF4は主に重みを低ビットで保持する方式で、実際の計算はFP16などより高い精度で行う構成が一般的です。活性まで量子化すると難易度が上がる一方、さらなる高速化を狙えます。

なぜ量子化するのか

量子化の狙いははっきりしています。

  • メモリ/VRAMの削減: 16bitから4bitにすれば、単純計算で重みの記憶容量は約4分の1になります。手元のGPUに載らなかったモデルが載るようになります。
  • 高速化: 転送するデータ量が減り、整数演算を活かせる場面では推論が速くなることがあります。
  • コスト減: 小さいGPUや少ないメモリで動けば、必要なハードウェアの規模を抑えられます。
  • ローカル/エッジ実行: 組み込み機器やノートPCなど、リソースの限られた環境でも動かせるようになります。
量子化の一番の実利は「載る・動く」ことです。フルのFP16では手元のGPUに乗らないモデルでも、4bit量子化すれば動かせるケースは多い。まずは動く構成を作り、その上で品質が業務要件を満たすかを確かめる、という順番が現実的です。
ローカル運用を検討するエンジニア

あわせて読みたい

ローカルLLMを動かすPC・GPUの選び方|VRAMから逆算する構成と予算

代表的な方式と形式

量子化にはいくつかの方式・ファイル形式があり、使う実行環境によって選択肢が変わります。名称と概要を整理します。

形式/方式主な文脈概要
GGUF (Q4_0/Q4_K_M/Q8_0など)llama.cpp系(Ollama/LM Studio)CPU/GPU推論向けのファイル形式。Q4は4bit、Q8は8bitを表し、K系はブロック単位で精度を工夫した方式
GPTQGPU推論学習後にキャリブレーションデータを使い、誤差を最小化しながら重みを低ビット化するPTQ手法
AWQGPU推論活性の統計から重要な重みチャネルを見極め、そこを保護して量子化するPTQ手法
bitsandbytes(INT8/NF4)Transformers/QLoRA8bitや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程度を追加で節約できると説明されています。

ヒント

形式は実行環境とセットで決まります。OllamaやLM StudioならGGUF、GPUで高速推論を狙うならGPTQ/AWQ、微調整を絡めるならbitsandbytes/NF4という具合です。どれが優れているかではなく、使うランタイムが読める形式を選ぶのが出発点です。

あわせて読みたい

ローカルLLMの実行環境を比較|Ollama・LM Studio・llama.cpp・vLLMの選び方

PTQとQATの違い

量子化のタイミングには大きく2種類あります。

  1. 1

    PTQ(学習後量子化)

    学習済みのモデルを、あとから量子化します。追加学習が不要で手軽なため、公開済みのチェックポイントを量子化する場合はこちらが基本です。GPTQ・AWQ・GGUF・bitsandbytesはいずれもこの系統です。少量のキャリブレーションデータで重みの範囲を決める方式もあります。
  2. 2

    QAT(量子化考慮学習)

    学習の段階から量子化による誤差を織り込んで学習します。低ビットでも品質を保ちやすい一方、元の学習パイプラインとデータが必要で、コストが高くなります。品質を最優先し、かつ学習環境を持つ場合の選択肢です。

一般に、同じ低ビットならQATの方が品質を保ちやすいとされますが、公開モデルを手元で軽くしたい多くのケースでは、学習を伴わないPTQで十分な品質が得られることが多い、という整理になります。まずPTQを試し、品質が足りなければ手段を変える、という順序が現実的です。

VRAMの見積りとビット数の目安

「そのモデルが手元に載るか」は、パラメータ数と1パラメータあたりのバイト数からおおまかに見積もれます。目安は次のとおりです。

精度1パラメータあたり7Bモデルの重みの概算
FP16/BF16(16bit)約2バイト約14GB
INT8(8bit)約1バイト約7GB
INT4(4bit)約0.5バイト約3.5GB

注意

この表はあくまで重みだけの概算です。実際にはKVキャッシュ・活性・実行環境のオーバーヘッドが加わるため、余裕を持って見積もってください。コンテキスト長を伸ばすほどKVキャッシュが膨らみます。目安として重みの概算に数割の余裕を足し、手元のVRAM(またはシステムメモリ)と突き合わせるのが安全です。

パラメータ数 × 1パラメータあたりのバイト数、という掛け算がVRAM見積りの起点です。4bitにすればFP16の約4分の1に収まる、という感覚を持っておくと、どのサイズのモデルまで狙えるかの判断が速くなります。

実務での選び方

  1. 1

    まず4bitから試す

    4bitは品質と軽さのバランスが取れた定番の妥協点とされます。多くのケースで、まず4bit(GGUFのQ4_K_MやNF4など)を動かして品質を見るのが出発点です。
  2. 2

    自分のタスクで必ず品質を評価する

    量子化による品質劣化の大きさはタスク依存です。要約・分類・コード生成など、実際に使う課題で出力を比べ、許容できるかを自分で確かめます。ベンチマークの一般値だけで判断しないことが大切です。
  3. 3

    足りなければビット数を上げる

    4bitで品質が不足するなら、5bit・6bit・8bitと上げて再評価します。逆に軽さを優先するなら、劣化を確認した上で低ビットを選びます。
  4. 4

    レイテンシとのバランスを取る

    量子化は必ずしも速くなるとは限りません。環境によっては逆量子化のオーバーヘッドで遅くなる報告もあります。速度も併せて計測し、総合で決めます。

あわせて読みたい

ファインチューニングとRAGの使い分け|LLMをカスタマイズする2つの道の選び方

向かない場面・注意する場面

量子化はいつでも正解ではありません。次のような場合は慎重に判断します。

  • 精度を最重視する用途: 誤りが許されない処理では、量子化による劣化が問題になり得ます。高いビット数やフル精度を検討します。
  • 既にクラウドAPIで足りている場合: 品質・運用・コストの総合でクラウドAPIが要件を満たすなら、ローカルで量子化モデルを運用する手間をかける理由は薄くなります。
  • 極端な低ビット: 2bit・3bitのような強い圧縮は、劣化が大きくなりやすく、タスクによっては実用に耐えないことがあります。軽さと引き換えのリスクを理解して選びます。

本文の用語と仕組みはHugging FaceのOptimum量子化ガイド、llama.cppのquantize README、bitsandbytes/QLoRA関連のHugging Face公式ドキュメントに基づきます。具体的な品質・速度は、モデル・タスク・ハードウェアで変動するため、必ず自分の環境での計測を優先してください。

よくある質問

量子化するとどれくらい軽くなりますか
重みの記憶容量の目安は、16bitに対してINT8で約半分、INT4で約4分の1です。ただしKVキャッシュや活性、実行環境のオーバーヘッドが加わるため、実際の必要メモリは重みの概算より大きくなります。余裕を持って見積もってください。
量子化すると品質はどれくらい落ちますか
タスク依存で一概に言えません。多くの場面で4bit程度なら実用的とされますが、劣化の大きさは課題によって変わります。一般的なベンチ値ではなく、自分が使うタスクで出力を比べて許容できるかを確かめるのが確実です。
GGUF・GPTQ・AWQ・NF4はどれを選べばいいですか
使う実行環境で決まります。OllamaやLM StudioならGGUF、GPUで高速推論を狙うならGPTQやAWQ、QLoRAで微調整するならbitsandbytes/NF4が対応します。優劣ではなくランタイムが読める形式を選ぶのが基本です。
量子化は必ず速くなりますか
必ずしも速くなるとは限りません。データ転送量が減る利点はありますが、逆量子化の処理が加わるため、モデルサイズやハードウェアによっては速度が伸びない、あるいは遅くなる報告もあります。速度も計測して判断してください。
PTQとQATのどちらを使うべきですか
公開モデルを手元で軽くするだけなら、学習不要のPTQ(GGUF/GPTQ/AWQ/bitsandbytesなど)が基本です。QATは低ビットでも品質を保ちやすい反面、学習環境とデータが必要でコストが高いため、品質を最優先し学習パイプラインを持つ場合の選択肢です。

まとめ

量子化は、重みや活性の数値精度を下げてLLMを軽く・速く・安く動かすための圧縮技術です。FP16からINT8/INT4へ落とすことで、限られたVRAMでも大きめのモデルを扱えるようになります。一方で低ビットほど品質劣化のリスクがあり、その影響はタスク依存です。まず4bitを試し、自分のタスクで品質と速度を計測して調整する、という実証的な進め方が要になります。

量子化モデル導入のチェックリスト

  • 動かしたいモデルのパラメータ数と、必要ビット数からVRAMを概算した
  • 重みの概算にKVキャッシュや実行環境の余裕を加えて見積もった
  • 使う実行環境が読める量子化形式(GGUF/GPTQ/AWQ/NF4など)を選んだ
  • まず4bitを試し、自分のタスクで品質を評価した
  • 品質が不足すればビット数を上げ、レイテンシも併せて計測した
  • クラウドAPIで足りないか、ローカルで量子化運用する理由を確認した

量子化を理解すると、「どのモデルを、どの精度で、どの環境に載せるか」という選択が具体的な計算に落ちます。まずは手元で4bitモデルを1つ動かし、必要なメモリと出力品質を体感するところから始めるのが近道です。

出典・参考

この記事をシェア

関連する記事

モデル比較・選び方

ローカルLLMを動かすPC・GPUの選び方|VRAMから逆算する構成と予算

ローカルLLMを自分の環境で動かすためのPC・GPU選びを、実務目線で整理します。最重要はコア速度ではなくVRAM容量であること、4bit量子化でメモリを圧縮できること、モデルサイズ別のVRAM目安、Mac(統合メモリ)という選択肢まで、動かしたいモデルから逆算して構成と予算を組む考え方をまとめました。

開発・エージェント

ファインチューニングとRAGの使い分け|LLMをカスタマイズする2つの道の選び方

LLMを自社用途に寄せる方法には、プロンプト、RAG、ファインチューニングの階層があります。RAGとファインチューニングはそれぞれ何を得意とし、どこで選ぶべきか。知識の更新性、出力の安定性、コストとトラフィックの観点から使い分けの原則を整理し、実務で有効なハイブリッド構成と落とし穴まで、公式ドキュメントを確認しながら冷静にまとめます。