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より大きいですが、GPTQ・AWQなどの高品質な量子化手法で実用的なレベルを維持できます。
ビット数ごとの特性比較
| 形式 | ビット数 | 表現可能な整数値 | メモリ比 | 品質低下 |
|---|---|---|---|---|
| FP32 | 32 | (浮動小数点) | 2× | なし |
| FP16 | 16 | (浮動小数点) | 1× | 微小 |
| INT8 | 8 | -128〜127 | 0.5× | 小 |
| INT4 | 4 | 0〜15 | 0.25× | 中 |
| INT3 | 3 | 0〜7 | 0.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量子化でメモリ削減できるキャッシュ領域