LLM最適化・軽量化

INT8 / INT4量子化 いんとえいと / いんとよん りょうしか

INT8INT4量子化整数量子化モデル軽量化llama.cpp
INT8 / INT4量子化について教えて

簡単に言うとこんな感じ!

AIの重みをそれぞれ「8ビット整数」「4ビット整数」で表す量子化のことだよ!元のFP16(16ビット)と比べてINT8は2分の1、INT4は4分の1のメモリで済む。「品質を少し犠牲に、誰でも使えるコスト・サイズへ」という実用上の大きな革命だよ!


INT8 / INT4量子化とは

INT8量子化 とは、LLMの浮動小数点パラメータ(通常FP16:16ビット)を8ビットの整数値に変換することです。値の表現範囲が狭まる代わりにメモリ消費が半減し、整数演算が使えることで推論速度も向上します。品質低下は多くのタスクで軽微です。

INT4量子化 とはさらに踏み込んで4ビットの整数値に変換することです。FP16の4分の1のメモリで済み、70Bモデルが35GB程度に収まるため、ゲーム向けGPU(VRAM 24GB)上でも分割して動かせます。精度低下はINT8より大きいですが、GPTQAWQなどの高品質な量子化手法で実用的なレベルを維持できます。


ビット数ごとの特性比較

形式ビット数表現可能な整数値メモリ比品質低下
FP3232(浮動小数点)なし
FP1616(浮動小数点)微小
INT88-128〜1270.5×
INT440〜150.25×
INT330〜70.19×

歴史と背景

  • 2021年bitsandbytesライブラリがTransformerへのINT8量子化を実用化
  • 2022年:「LLM.int8()」論文でINT8量子化でも大規模モデルの性能維持を実証
  • 2023年:GPTQがINT4量子化を実用レベルに。llama.cppがINT4でMacでも動作可能に
  • 2023年後半:HuggingFace transformers がbitsandbytesでの量子化をネイティブサポート
  • 現在:INT4が実用の標準となり、Q4_K_M(llama.cpp形式)等の派生形式も普及

実践例:70Bモデルのメモリ要件

LLaMA 3 70B の推論メモリ(概算):

FP32(通常の訓練): 280 GB → A100 × 4枚以上が必要
FP16(標準推論):  140 GB → A100 × 2枚が必要
INT8量子化:        70 GB  → A100 × 1枚で動作
INT4量子化:        35 GB  → A100 × 0.5枚、または RTX 4090 × 2枚

→ INT4量子化で個人・中小企業でも70Bクラスが利用可能に

関連用語

  • 量子化 — INT8/INT4量子化が属するモデル圧縮技術の大分類
  • GPTQ — INT4量子化の代表的な手法
  • AWQ — INT4量子化の別の高品質手法
  • Flash Attention — 量子化と組み合わせてメモリ・速度を最適化
  • KVキャッシュ — INT8量子化でメモリ削減できるキャッシュ領域