GPTQとは
少量のキャリブレーションデータのみで、LLMの重みを4bit程度まで高速かつ高精度に量子化するPTQ手法
ひとことで言うと
少しのデータだけで、AIモデルを短時間で4bit程度まで軽量化できる量子化手法。
概要
GPTQとは、大規模言語モデルの重みを4bit程度まで、少量のキャリブレーションデータと比較的短い処理時間で量子化できる、PTQ(学習後量子化)の代表的な手法。 量子化対象の重み行列を層ごとに、少数のサンプルデータを使った二次近似(ヘッセ行列に基づく重み更新)により量子化誤差を最小化しながら、少数の列ずつ順に量子化していく。 数百億パラメータ規模のモデルでも数時間程度で量子化を完了でき、量子化後もFP16に近い性能を維持しやすいことから、LLMをコンシューマー向けGPUや限られたメモリ環境で動作させる用途に広く採用されている。
背景
大規模言語モデルをそのまま実行するには大量のGPUメモリを要するため、モデルサイズを圧縮する量子化が重要になる一方、モデル全体を再学習するQATは計算コストが高く、数百億パラメータ規模のモデルには適用しづらかった。GPTQは、少量のデータのみで高精度な量子化を短時間に完了できる手法として考案された。
歴史
2022年10月: Frantar・Ashkboos・Hoefler・Alistarhらが論文「GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers」を発表。
コード例
Transformersを用いたGPTQ量子化(概念例)
from transformers import AutoModelForCausalLM, AutoTokenizer, GPTQConfig
model_name = "facebook/opt-125m"
tokenizer = AutoTokenizer.from_pretrained(model_name)
quantization_config = GPTQConfig(bits=4, dataset="c4", tokenizer=tokenizer)
model = AutoModelForCausalLM.from_pretrained(
model_name,
quantization_config=quantization_config,
)
model.save_pretrained("opt-125m-gptq-4bit")利点
- 少量のキャリブレーションデータのみで、数百億パラメータ規模のモデルも数時間程度で量子化できる
- 4bit程度まで圧縮しても、FP16に近い性能を維持しやすい
- Hugging Face TransformersやvLLM等、主要な推論ライブラリで広くサポートされている
欠点
比較
関連用語
よくある質問
GPTQで量子化したモデルはどのように推論できる?
Hugging Face TransformersのGPTQConfigやAutoGPTQ、vLLM等の推論ライブラリが、GPTQ形式で量子化されたモデルの読み込みと推論に対応している。
GPTQはどのくらいの時間で量子化を完了できる?
モデルサイズやハードウェアによって異なるが、少量のキャリブレーションデータを用いることで、数百億パラメータ規模のモデルでも数時間程度で量子化を完了できる場合が多い。