目次

大規模言語モデル(LLM)の推論コストは、モデルの規模に比例して増大する。70億パラメータのモデルでさえ、単純に動かすだけで数十ギガバイトのメモリを必要とする。こうした問題に対処する代表的な技術が「量子化(Quantization)」だ。量子化はモデルを軽くする強力な手段だが、何かを得るためには何かを失う——それが本稿の核心的なテーマである。

浮動小数点数とは何か

コンピュータはすべての数値をビット列で表現する。ニューラルネットワークのパラメータは通常、32ビット浮動小数点数(FP32)として保存される。FP32では符号ビット1つ、指数部8ビット、仮数部23ビットを使って、非常に広い範囲の数値を高精度で表現できる。

しかし、この高い表現能力には代償がある。FP32では1つの数値に4バイトを使う。70億パラメータのモデルなら、パラメータだけで約28GBのメモリが必要になる計算だ。推論時には活性化値やKVキャッシュも必要なため、実際の要求はさらに大きくなる。

量子化の基本原理

量子化とは、高精度の数値表現を低精度に変換する処理だ。FP32のパラメータをFP16(16ビット半精度)、INT8(8ビット整数)、INT4(4ビット整数)へと変換することで、メモリ使用量を劇的に削減できる。

FP32 → FP16

最も保守的な量子化がFP16への変換だ。精度の劣化が比較的少なく、現代のGPUはFP16演算をFP32より高速に処理できる。多くのモデルはFP16でもほぼ同等の性能を発揮するため、事実上の標準的な運用形態となっている。

メモリ削減効果は約50%。28GBのモデルが14GB程度になる。

FP32 → INT8

より踏み込んだ量子化がINT8だ。-128から127の整数範囲に数値をマッピングする。FP32の連続的な実数空間を256段階の離散値で近似するため、情報の損失が生じる。

典型的な変換式は以下の通りだ:

量子化値 = round(実数値 / スケール因子)
実数値 ≈ 量子化値 × スケール因子

スケール因子はパラメータの最大絶対値などから計算され、元の値域を[-128, 127]の整数に写像する。メモリはFP32比で約75%削減される。

FP32 → INT4

さらに積極的なのがINT4だ。わずか4ビット、つまり16通りの値でパラメータを表現する。メモリ削減は約87.5%に達する。しかし表現能力は著しく制限され、精度の劣化も大きくなる。

量子化の方式:PTQ と QAT

量子化を適用するタイミングと方法によって、大きく2種類に分類できる。

Post-Training Quantization(PTQ)

学習済みモデルに対して事後的に量子化を適用する方式だ。追加の学習は不要で、実装が比較的簡単である。GGUFやGPTQ形式のモデルはこの方式を使っている。

PTQの限界は、量子化による精度劣化を補正する機会がないことだ。特にINT4以下では、タスクによって性能の低下が顕著になる場合がある。

Quantization-Aware Training(QAT)

学習プロセスに量子化を組み込む方式だ。フォワードパスでは量子化された値を使いながら、バックプロパゲーションで量子化誤差を考慮した学習を行う。精度の劣化をモデルが学習中に補償できるため、PTQより高品質な量子化モデルが得られる。ただし、追加の学習コストが発生する。

精度劣化のメカニズム

量子化による精度劣化は、なぜ起きるのか。根本的な原因は「情報の損失」だ。

FP32で0.123456789という値を表現していたものが、INT8では例えば16という整数値になる。逆変換すると0.125のような近似値にしか戻せない。この丸め誤差が積み重なることで、モデルの出力に変化が生じる。

特に問題になるのが「外れ値」だ。ニューラルネットワークのパラメータや活性化値には、大多数の値は小さな範囲に収まるが、少数の値が極端に大きいという分布をとることが多い。この外れ値に合わせてスケール因子を設定すると、大多数の小さな値の解像度が落ちる。逆に小さな値に合わせると、外れ値がクリップされる。

この問題を解決するため、SmoothQuantやAWQなどの手法では、外れ値の影響を軽減するための前処理を組み合わせる。

QLoRA:量子化とファインチューニングの融合

量子化技術の応用として注目を集めているのがQLoRA(Quantized Low-Rank Adaptation)だ。

通常のLoRAはベースモデルをFP16で維持しながら、低ランクの追加パラメータのみを学習する。QLoRAはこれを発展させ、ベースモデルをINT4に量子化した状態でLoRAアダプタを学習する。

具体的には、NF4(Normal Float 4-bit)と呼ばれる特殊な4ビット浮動小数点形式を使用する。NF4は正規分布に従う数値に最適化された分布を持ち、通常のINT4よりも情報損失が少ない。加えて、LoRAの計算はBFloat16で行われ、最終的な精度を担保する。

この組み合わせにより、70Bクラスのモデルを単一のコンシューマー向けGPU(例:NVIDIA RTX 3090 24GB)でファインチューニングすることが可能になった。QLoRAの登場は、大規模モデルの民主化に大きく貢献した。

実用的な量子化の判断基準

どのビット幅を選ぶべきかは、用途と要求品質によって変わる。

FP16/BF16が適切な場合: 精度が最重要で、メモリに多少の余裕がある場合。APIサービスや高精度が要求される業務利用。

INT8が適切な場合: 精度と速度のバランスが求められる場合。多くのタスクでFP16比で5-10%程度の性能低下に留まり、速度は1.5〜2倍改善する。

INT4/3ビットが適切な場合: メモリ制約が厳しく、精度の劣化がある程度許容される場合。ローカル環境での試用やプロトタイピング。チャット用途など、多少の出力品質低下が許容されるシナリオ。

2ビット以下: 現時点では精度の劣化が大きく、実用的な用途は限られる。研究領域。

量子化の限界と今後

量子化は万能ではない。特定のタスクでは性能低下が顕著になる。数学的な推論、コード生成、医療・法律など高精度が求められる専門分野では、量子化による劣化がクリティカルな問題になりうる。

また、量子化の効果はモデルの設計にも依存する。一般に大きなモデルほど量子化に対してロバストだ。1000億パラメータのモデルをINT8に量子化しても性能低下が少ない一方、7億パラメータのモデルでは同じ量子化で目立った劣化が生じることがある。

研究領域では1ビット(バイナリ)や混合精度量子化など、さらなる効率化に向けた取り組みが続いている。モデルの全パラメータを均一に量子化するのではなく、重要なレイヤーは高精度を維持し、それ以外を低精度にする混合精度アプローチも実用化されつつある。


まとめ

量子化はLLMの実用化において不可欠な技術だ。FP32からINT8への変換でメモリを75%削減しながら、多くのタスクで実用的な精度を維持できる。QLoRAのような応用により、大規模モデルのファインチューニングすら一般的なハードウェアで可能になった。

しかし「何かを得るために何かを失う」という原則は変わらない。量子化の段階を下げるほど、精度の劣化リスクは高まる。適切なビット幅の選択は、用途の要求精度、利用可能なハードウェア、コストの三者バランスを慎重に評価した上で行う必要がある。量子化を「魔法の軽量化」として無批判に使うのではなく、そのトレードオフを理解した上で活用することが、AI実践者に求められるリテラシーである。

免責事項 — 掲載情報は執筆時点のものです。料金・機能は変更される場合があります。最新情報は各公式サイトをご確認ください。