Transformers documentation

VPTQ

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

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 7B2.026.138.0758.239.92.282
2.265.957.8759.435.72.483.1
LLaMA-2 13B2.025.327.1562.426.94.033.2
2.185.287.0463.118.54.313.6
LLaMA-2 70B2.073.935.7268.69.719.5419
2.113.925.7168.79.720.0119

リソース

VPTQ Online Demo Spaceでデモを確認するか、VPTQ推論のnotebookを実行してみてください。

詳細については、VPTQの論文をお読みください。

Update on GitHub