AI・機械学習
上級
アクティベーション対応量子化(アクティベーションタイオウリョウシカ)
量子化時にアクティベーション(中間出力)の統計分布を考慮して重みスケーリングを調整し、精度劣化を抑制するLLM量子化技術。AWQの中核概念。
0 回閲覧
0 いいね
2026/6/8 更新
関連タグ
AWQ
量子化
INT4
アクティベーション
LLM圧縮
アクティベーション対応量子化(AWQ)
アクティベーション対応量子化(Activation-Aware Weight Quantization)は、LLMの重みをINT4やINT3に量子化する際に、各チャンネルのアクティベーション統計量を参照してスケーリング係数を調整する技術です。MIT・NVIDIA共同のLin et al.(2023)が提案し、llama.cppやvLLMで広くサポートされるデファクトスタンダードとなっています。
なぜアクティベーションを考慮するのか
LLMの重み行列には少数のチャンネルに**外れ値(Outlier)**が集中するという特性があります。これはLLM.int8(2022年、Dettmers et al.)で発見された問題で、単純な均一量子化では外れ値チャンネルの量子化誤差が大きくなり全体精度が大幅に劣化します。
AWQのコアアイデア
重要なチャンネル(アクティベーションが大きいチャンネル)の量子化精度を優先的に保護する。
- キャリブレーション: 少量のデータを流してチャンネルごとのアクティベーション大きさ sₓ を測定
- スケーリング: 重み行列Wを
W' = W × diag(s)に変換(重要チャンネルを拡大) - 量子化: 変換済みW'をINT4量子化
- 逆変換: 推論時は
diag(1/s)を掛けて元の値域に戻す
この操作で数学的な出力は変わらず、量子化誤差だけが重要チャンネルに集中しなくなります。
GPTQとの比較
- GPTQ: キャリブレーション遅い(逆ヘッセ計算)、データ依存性高い
- AWQ: キャリブレーション速い(グリッドサーチ)、データ依存性低い、精度はGPTQ同等〜高い
両者ともllama.cpp・vLLMで対応済み。vLLMでは2024年よりAWQが推奨バックエンド。
AutoAWQによる実装
pip install autoawq
from awq import AutoAWQForCausalLM
from transformers import AutoTokenizer
model_path = "meta-llama/Llama-3.1-8B-Instruct"
quant_path = "llama-3.1-8b-instruct-awq"
quant_config = {"zero_point": True, "q_group_size": 128, "w_bit": 4, "version": "GEMM"}
model = AutoAWQForCausalLM.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)
model.quantize(tokenizer, quant_config=quant_config)
model.save_quantized(quant_path)
実用的な圧縮効果
- Llama-3.1-70B(FP16: 140GB VRAM) → AWQ-INT4: 35GB(75%削減)
- Llama-3.1-8B(FP16: 16GB)→ AWQ-INT4: 4GB(A10G 1枚で動作)
- Qwen2.5-72B AWQ: 2×RTX 4090(48GB)でローカル推論可能
まとめ
- LLM外れ値問題への解決策としてAWQが提唱された
- アクティベーション統計でチャンネル重要度を判定しスケーリング係数を設定
- GPTQより高速なキャリブレーションで同等精度を実現
- AutoAWQライブラリで簡単に適用可能
- 2025年現在はvLLMの推奨量子化形式の1つ