AI・機械学習
上級

GPTQ(量子化アルゴリズム)(ジーピーティーキュー)

学習済みLLMを2/3/4ビットに圧縮するポストトレーニング量子化手法。レイヤーごとにヘッシアン近似で誤差最小化し、GPU VRAMを1/4〜1/8に削減する。

0 回閲覧
0 いいね
2026/6/8 更新
関連タグ
quantization
ptq
llm
gpu
compression

GPTQ(量子化アルゴリズム)とは

GPTQ(Generative Pre-trained Transformer Quantization)は2022年にElias Frankle・Mark Kurtz・Dan Alistarh らが発表したポストトレーニング量子化(PTQ)手法。学習済みLLMの重みをINT4(4ビット)やINT2/INT3に圧縮しながら、レイヤーごとにヘッシアン行列を近似して量子化誤差を最小化する。GPU VRAMを16bit比で最大1/4に削減しつつ、perplexity劣化を1%未満に抑えられることが特徴。

技術詳細

基本アプローチ

GPTQはOBSQ(Optimal Brain Surgeon Quantization)をTransformerのLayerに効率化した手法:

  1. 各Transformerレイヤーの重み行列を左→右の順に列単位で量子化
  2. 量子化後の誤差をヘッシアン逆行列で残りの重みに分散して補正
  3. Cholesky分解でヘッシアン逆行列を安定的に計算
  4. キャリブレーション用のランダムサンプル(128〜512テキスト)のみで完結

量子化ビット数と精度トレードオフ

ビット数VRAM削減perplexity増加用途
INT81/2~0%高精度重視
INT41/4~0.5-1%バランス型(主流)
INT31/5~2-5%極端なVRAM制限
INT21/8~10%+実験的

INT4(4ビット)がVRAM削減と精度のバランスで最も実用的。

AutoGPTQ による実装

# AutoGPTQ で Llama 3 8B を INT4 量子化
from auto_gptq import AutoGPTQForCausalLM, BaseQuantizeConfig
from transformers import AutoTokenizer

model_name = "meta-llama/Meta-Llama-3-8B"
tokenizer = AutoTokenizer.from_pretrained(model_name)

quantize_config = BaseQuantizeConfig(
    bits=4,
    group_size=128,
    desc_act=True,
)

model = AutoGPTQForCausalLM.from_pretrained(
    model_name,
    quantize_config=quantize_config
)

examples = tokenizer(
    ["以下の文章を要約してください。" * 64],
    return_tensors="pt"
)
model.quantize(examples)
model.save_quantized("./llama3-8b-gptq-int4")

VRAM 要件比較

モデルFP16INT8INT4 (GPTQ)
Llama 3 8B16GB8GB4.5GB
Llama 3 70B140GB70GB37GB
Mixtral 8x7B93GB47GB26GB
Qwen2.5 72B144GB72GB39GB

RTX 4090(24GB)でLlama 3 70B INT4が動作可能になる。

GPTQ 亜種・改良手法

手法特徴備考
GPTQ最も普及。安定した INT4基準
EXL2 (ExLlamaV2)混合ビット幅・GPU最適化カーネル速度向上
MarlinGPTQ INT4×FP16 GEMM カーネル推論速度2倍向上
AQLM積量子化2bit 精度向上
QuIP#Hadamard 回転で INT2 高精度化超低bit向き

よくある質問(FAQ)

Q1: AWQ と GPTQ はどちらが良い? A: 精度面では同程度だが、AWQ は GPTQ より量子化速度が速く実装がシンプル。GPTQ は desc_act=True で精度をわずかに上げられる。ExLlamaV2 エンジン使用なら GPTQ が高速。vLLM との相性は AWQ の方が良い場合が多い。

Q2: キャリブレーションデータは何を使うべき? A: 推論タスクに近いテキストを128〜512サンプル使うのが推奨。WikiText-2 や C4 の一部が一般的。タスク特化の場合はそのドメインのテキストでキャリブレーションすると精度が上がる。

Q3: CPU でも GPTQ は使える? A: GPTQ は GPU カーネル(CUDA)前提の最適化が多く、CPU での推論速度は GGUF/llama.cpp に大幅に劣る。CPUメイン環境では GGUF 形式を選ぶべき。

この記事について
カテゴリーAI・機械学習
難易度上級
作成日2026/6/8