QuIP#(非整合性処理量子化)(クイップシャープ)
Cornell大学発の2ビットLLM量子化手法。ランダムアダマール変換で重みの相関(コヒーレンス)を除去してからスカラー量子化することで、2bitでFP16に近い品質を実現する。AQLM・GPTQ比で2bit量子化の最高精度クラス。
QuIP#とは
QuIP#(Quantization with Incoherence Processing)は2024年4月にCornell大学が発表した先進的なLLM量子化手法です。論文「QuIP#: Even Better LLM Quantization with Hadamard Incoherence and Lattice Codebooks」はICML 2024に採択されています。
2ビット量子化という極端な圧縮において、前世代のQuIP・GPTQ・AWQを大幅に上回る品質を達成し、AQLMと並んで2026年現在の最高精度2bit量子化手法として位置づけられています。
非整合性処理(Incoherence Processing)の仕組み
Activation外れ値問題
LLMの重みは特定方向に相関(コヒーレンス)を持ちます。少数の要素だけが非常に大きく、残りは小さいという外れ値分布が生じ、スカラー量子化で丸め誤差が集中します。
Randomized Hadamard Transform(RHT)
W_incoherent = R_right × W × R_left
- アダマール行列: ウォルシュ・アダマール変換でエネルギーを全次元に均等分散
- ランダム符号(±1): 行列の符号をランダム化して特定の非ゼロパターンを壊す
- 変換後の重みはほぼガウス分布(正規分布)に近づき、外れ値が消失
E8格子コードブック(Lattice Codebook)
変換後の重みを量子化するコードブックとして、数学的に最適なE8格子(8次元の稠密パッキング格子)を採用しています。
| コードブック | 次元 | エントリ数 | 2bit時の有効精度 |
|---|---|---|---|
| Round(単純丸め) | 1 | 4 | 低 |
| AQLM | 8 | 65536 | 高 |
| E8格子(QuIP#) | 8 | 256 | 高 |
| E8P格子(拡張版) | 8 | 65536 | 最高 |
perplexityベンチマーク(WikiText-2)
Llama 2 70B
| 手法 | ビット幅 | Perplexity | FP16比劣化 |
|---|---|---|---|
| FP16 | 16 | 5.52 | 0% |
| QuIP# E8P | 2 | 7.21 | +31% |
| AQLM 2bit | 2 | 6.90 | +25% |
| GPTQ RTN 2bit | 2 | 11.68 | +112% |
| QuIP(前世代) | 2 | 8.48 | +54% |
Llama 2 7B
| 手法 | ビット幅 | Perplexity |
|---|---|---|
| FP16 | 16 | 5.47 |
| QuIP# E8P 2bit | 2 | 8.07 |
| AQLM 2bit | 2 | 6.82 |
| GPTQ 4bit | 4 | 5.63 |
7Bモデルではやや異なる傾向がありますが、70B以上の大型モデルではQuIP#が競争力を持ちます。
VRAM使用量(Llama 2 70B)
| 形式 | VRAM | 必要GPU |
|---|---|---|
| FP16 | 140 GB | H100×2 |
| QuIP# 2bit | 17.5 GB | RTX 4090×1 |
| GPTQ 4bit | 35 GB | RTX 4090×2 |
インストール・使用方法
git clone https://github.com/Cornell-RelaxML/quip-sharp
cd quip-sharp && pip install -e .
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained(
"relaxml/Llama-2-70b-E8P-2Bit",
device_map="auto",
torch_dtype="auto"
)
AQLMとの比較
| 観点 | AQLM | QuIP# |
|---|---|---|
| 主な手法 | 加算型コードブック量子化 | アダマール変換 + E8格子 |
| 強み | 7B〜70Bで全般的に優秀 | 70B以上の大型モデルで競争力 |
| 推論速度 | 中程度 | やや遅い(変換コストあり) |
| エコシステム | HuggingFace公式統合 | Cornell独自実装(移植中) |
よくある質問(FAQ)
Q1: QuIP#とAQLMは同じ用途ですか? A: 目的は同じ(極低ビット量子化)ですが技術が異なります。小〜中型モデル(7〜30B)ではAQLMが優位な傾向、大型モデル(70B+)ではQuIP#と互角かそれ以上の場合があります。
Q2: 推論速度はFP16と比べてどうですか? A: デコードスピードはほぼ同等かやや遅め。VRAM節約によりバッチサイズを上げられるため、総合スループットはむしろ改善するケースもあります。
Q3: Windows・llama.cppとの互換性は? A: QuIP#はPyTorch+CUDA依存の実装のため、llama.cppネイティブでは使えません。WSL2上でPyTorchを使う必要があります。
まとめ
- ランダムアダマール変換で重みの外れ値問題を根本解決
- E8格子という数学的最適コードブックで2bit量子化の精度を最大化
- Llama 2 70Bを2bitでRTX 4090 1枚に収めながら実用的な品質を維持
- AQLMと並び2026年現在の最高精度2bit量子化手法の一つ