AQLM(加算型量子化)(エーキューエルエム)
LLMの重みを2〜3ビットに極端圧縮しながら品質を維持する加算型量子化手法。複数のコードブックから学習済みコードワードを加算して重みを近似することで、GPTQ・AWQより低ビット数での高品質推論を実現する。
AQLMとは
AQLM(Additive Quantization for Language Model Compression)は、2024年2月にHSE大学(Higher School of Economics, Moscow)・Yandex・MIT CSAIL・Skoltech の共同研究チームが発表した極低ビットLLM量子化手法です。ICLR 2024 Spotlight に採択されています。
従来の量子化手法(GPTQ・AWQ・BitsAndBytes)が4ビット以上を主たる対象としていたのに対し、AQLMは2〜3ビットの極端な圧縮でも実用的な品質を維持することを目標としています。2026年現在、2ビット量子化において最高水準のperplexity性能を示す手法の一つです。
加算型量子化の仕組み
AQLMの核心はベクトル量子化(Vector Quantization)をLLM重みに適用したコードブック方式です。
従来の量子化(スカラー量子化)
各重み値 w → nearest quantization bin (例: Q4_0 なら 16段階) スカラー量子化では各重みを独立に量子化するため、2ビットでは表現精度が極端に落ちます。
AQLMの加算型量子化
重みベクトル w ∈ ℝ^d → Σ codebook_i[index_i] (i = 1 to M)
- コードブック(Codebook): 事前学習された代表ベクトルのテーブル(例: 65536 エントリ × 8次元)
- コードワード(Codeword): コードブック内のインデックス(実際に格納するのは短いインデックス)
- 加算近似: M 個のコードワードを取り出して加算することで重みベクトルを近似
この方式により、2ビット相当の格納コストで従来の3〜4ビット量子化に匹敵する品質を実現します。
主な仕様・パラメータ
| パラメータ | 説明 | 推奨値 |
|---|---|---|
| nbits_per_codebook | コードブック1つ当たりのビット数 | 16(65536エントリ) |
| num_codebooks | 使用するコードブック数(M) | 1〜4 |
| effective_bits | 実効ビット幅 | 2〜8 |
| in_group_size | グループサイズ | 8〜16 |
perplexityベンチマーク(WikiText-2、Llama 2 7B)
| 手法 | 実効ビット幅 | Perplexity(↓低いほど良い) | 相対劣化 |
|---|---|---|---|
| FP16(ベースライン) | 16 bit | 5.47 | 0% |
| GPTQ 4bit | 4 bit | 5.63 | +2.9% |
| AWQ 4bit | 4 bit | 5.60 | +2.4% |
| AQLM 3bit | 3 bit | 5.75 | +5.1% |
| GPTQ 3bit | 3 bit | 6.22 | +13.7% |
| AQLM 2bit | 2 bit | 6.82 | +24.7% |
| GPTQ 2bit | 2 bit | 11.51 | +110% |
Llama 2 70Bの場合はさらに差が縮小し、AQLM 2bitがGPTQ 4bitに匹敵するという驚異的な結果も報告されています。
VRAM使用量の比較(Llama 3.1 70B)
| 形式 | VRAM消費量 | 必要GPU構成 |
|---|---|---|
| FP16(BF16) | 約140 GB | H100×2 または A100×4 |
| GPTQ INT4 | 約35 GB | RTX 4090×2 |
| AWQ INT4 | 約35 GB | RTX 4090×2 |
| AQLM 2bit | 約17.5 GB | RTX 4090 1枚 |
| AQLM 3bit | 約26 GB | RTX 4090×2 |
インストール・使用方法
pip install aqlm[gpu]
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
model = AutoModelForCausalLM.from_pretrained(
"ISTA-DASLab/Meta-Llama-3-70B-Instruct-AQLM-2Bit-1x16",
torch_dtype=torch.float16,
device_map="cuda"
)
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Meta-Llama-3-70B-Instruct")
自作PCでの活用シナリオ
RTX 4090(24GB)単体でLlama 3.1 70Bを動かす: AQLM 2bit量子化モデルはVRAM約17.5GBのため、RTX 4090の24GBで余裕を持って稼働可能。GPT-4o相当の高性能モデルをプライベート環境で運用できます。
RTX 3090(24GB)でのコスト最適化: RTX 4090の半額以下で同等のVRAMを持つRTX 3090でも同様に動作。CUDA 12以降で最大性能を発揮。
macOS(Apple Silicon)での活用: M3 Max(128GB)でLlama 3.1 70B AQLM 2bitが快適に推論可能。
よくある質問(FAQ)
Q1: AQLMとGPTQ/AWQはどちらを選べばよいですか? A: 4bit以上の量子化ならGPTQ/AWQで十分。2〜3bitの極端な圧縮が必要(例: RTX 4090 1枚でLlama 70B稼働)な場合はAQLMが最善の選択肢です。
Q2: AQLM量子化に必要な計算リソースは? A: HuggingFace配布の量子化済みモデルを使えば高スペックは不要。自分でFP16モデルから量子化する場合はA100/H100クラスのGPUが必要です(キャリブレーションに数時間かかる)。
Q3: llama.cppやOllamaとAQLMは互換性がありますか? A: 直接の互換性はありません。llama.cppはGGUFフォーマット独自の2bit(IQ2_XXS等)を使用。AQLMモデルはHuggingFace Transformers + aqlmライブラリを通して推論します。
まとめ
- 2ビット量子化で従来手法の3〜4ビット相当の品質を達成
- RTX 4090 1枚でLlama 70B級モデルの単体推論が可能
- HuggingFace Hub に主要モデルのAQLM量子化版が公開済み
- 量子化コスト(時間・GPU)は高いが推論時は一般環境で動作