Transformers documentation

VPTQ

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
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