VPTQ
Vector Post-Training Quantization (VPTQ)は、ベクトル量子化を活用してLLMを極めて低いビット幅(<2ビット)で量子化するPost-Training Quantization (PTQ)手法です。VPTQは、再学習なしで70Bモデル、さらには405Bモデルを1〜2ビットに圧縮しつつ、高い精度を維持できます。軽量な量子化アルゴリズムであり、405Bモデルの量子化に約17時間かかります。VPTQは、デコード時のオーバーヘッドが低く、スループットとTime To First Token (TTFT)が高い、俊敏な量子化推論を特徴としています。
以下のコマンドを実行して、NVIDIAおよびAMD GPUでの推論に効率的なカーネルを提供するVPTQをインストールします。
pip install vptq
VPTQ-community は、VPTQ 量子化モデルのコレクションを提供しています。モデル名には、そのビット幅に関する情報が含まれています(cookbook、パラメータ、パディングのオーバーヘッドを除く)。例として、[Meta-Llama-3.1-70B-Instruct-v8-k65536-256-woft] モデルを挙げます。
- モデル名は Meta-Llama-3.1-70B-Instruct です。
- セントロイドの数は65536 (2^16) で与えられます。
- 残差セントロイドの数は256(2^8)で与えられます。
等価ビット幅の計算は、次のとおりです。
- index: log2(65536) = 16 / 8 = 2ビット
- residual index: log2(256) = 8 / 8 = 1-bit
- 総ビット幅: 2 + 1 = 3ビット
ここから、モデルサイズを推定します。70B * 3-bits / 8-bits/byte を計算すると、合計 26.25GB となります。
from_pretrained() で VPTQ 量子化モデルを読み込みます。
from transformers import AutoTokenizer, AutoModelForCausalLM
quantized_model = AutoModelForCausalLM.from_pretrained(
"VPTQ-community/Meta-Llama-3.1-70B-Instruct-v16-k65536-65536-woft",
dtype="auto",
device_map="auto"
)独自のモデルを量子化するには、VPTQ 量子化アルゴリズムのチュートリアルを参照してください。
ベンチマーク
VPTQは、異なるサイズのモデル全体で、より低い量子化オーバーヘッドにより、より高い精度とスループットを実現します。以下の実験結果は参考情報です。VPTQは、適切なパラメータ設定により、特にモデルの精度と推論速度の面で、より良い結果を得ることができます。
| モデル | ビット幅 | W2↓ | C4↓ | AvgQA↑ | tok/s↑ | mem(GB) | コスト/h↓ |
|---|---|---|---|---|---|---|---|
| LLaMA-2 7B | 2.02 | 6.13 | 8.07 | 58.2 | 39.9 | 2.28 | 2 |
| 2.26 | 5.95 | 7.87 | 59.4 | 35.7 | 2.48 | 3.1 | |
| LLaMA-2 13B | 2.02 | 5.32 | 7.15 | 62.4 | 26.9 | 4.03 | 3.2 |
| 2.18 | 5.28 | 7.04 | 63.1 | 18.5 | 4.31 | 3.6 | |
| LLaMA-2 70B | 2.07 | 3.93 | 5.72 | 68.6 | 9.7 | 19.54 | 19 |
| 2.11 | 3.92 | 5.71 | 68.7 | 9.7 | 20.01 | 19 |
リソース
VPTQ Online Demo Spaceでデモを確認するか、VPTQ推論のnotebookを実行してみてください。
詳細については、VPTQの論文をお読みください。
Update on GitHub