Hugging Face AutoGPTQ と Transformers の統合
Hugging Face は AutoGPTQ ライブラリを Transformers ライブラリに統合し、ユーザーが大規模言語モデル (LLM) を 8、4、3、または 2 ビット精度で量子化して実行できるようにしました。この統合により、LLM のデプロイに必要なハードウェア要件が大幅に削減され、4 ビット量子化ではほとんど精度の劣化がなく、小規模バッチサイズにおいて float16 (fp16) ベースラインと同等の推論速度が実現されます。
GPTQ 量子化の技術的概要
GPTQ は、キャリブレーションデータセットと数時間の計算を使用して事前学習済みモデルを圧縮するポストトレーニング量子化 (PTQ) 手法です。トレーニング中に行われる量子化認識トレーニング (QAT) とは異なり、GPTQ は高コストなフルモデル再トレーニングを必要とせずに巨大なモデルを圧縮することができます。
混合精度スキーム
GPTQ は混合 int4/fp16 量子化スキームを使用します。このアーキテクチャでは、重みは int4 として量子化され、活性化は float16 のままです。推論中、重みは GPU グローバルメモリではなく、演算ユニットに近いフューズドカーネル内でオン・ザ・フライでディークォンタイズされます。これにより、以下の 2 つの主な利点が得られます:
- メモリ節約:int4 量子化により、ほぼ 4 倍のメモリ節約が可能です。
- 推論速度:ビット幅が低い重みによるデータ通信時間の削減により、速度向上の可能性があります。
量子化アルゴリズム
GPTQ は Optimal Brain Quantization (OBQ) フレームワークに基づいて構築されています。各層の圧縮を、元の重み行列と量子化版の間の平均二乗誤差 (MSE) を最小化する問題として扱います。チャネルごとの量子化を採用することで、GPTQ は重みを 1 つずつ量子化し、ヘシアン行列を使用して残りの未量子化重みを更新し、誤差を補正します。
GPTQ はこのプロセスを最適化し、OBQ よりもはるかに高速に行うことができます。たとえば、Bloom モデル (176B) は 4 GPU 時間未満で量子化できますが、BERT モデル (336M) は OBQ を使用すると 2 GPU 時間かかります。
AutoGPTQ と Transformers の統合
AutoGPTQ は、さまざまなトランスフォーマーアーキテクチャに広範囲にわたって対応するライブラリであり、アーキテクチャ固有の実装よりも汎用性の高い選択肢となります。Hugging Face は Optimum ライブラリを介して AutoGPTQ のミニマリスト版 API を統合し、LLM の量子化のためのネイティブ Transformers API を提供しています。
ネイティブサポートと使用方法
ユーザーは AutoGPTQ と optimum をインストールすることで、AutoModelForCausalLM を通じて直接 GPTQ モデルを実行できるようになりました。この統合は、Nvidia GPU と RoCm を搭載した AMD GPU の両方をサポートしています。
この統合の主な利点は次のとおりです:
- シリアライズ可能:量子化モデルは Hugging Face Hub で保存および共有できます。
- パフォーマンス:小規模バッチサイズにおいて、推論遅延は FP16 推論と同等です。
- ハードウェア互換性:RoCm を介した AMD GPU のネイティブサポート。
- カーネルサポート:幅広いアーキテクチャにわたる Exllama カーネルのサポート。
パフォーマンスベンチマーク
単一の NVIDIA A100-SXM4-80GB GPU (プロンプト長 512、生成トークン 512、バッチサイズ 1) で実施されたベンチマークでは、以下の結果が得られました:
| gptq | act_order | bits | group_size | kernel | Load time (s) | Per-token latency (ms) | Throughput (tokens/s) | Peak memory (MB) |
|---|---|---|---|---|---|---|---|---|
| False | None | None | None | None | 26.0 | 36.958 | 27.058 | 29152.98 |
| True | False | 4 | 128 | exllama | 36.2 | 33.711 | 29.663 | 10484.34 |
| True | False | 4 | 128 | autogptq-cuda-old | 36.2 | 46.44 | 21.53 | 10344.62 |
デプロイとファインチューニング
テキスト生成推論 (TGI)
GPTQ のサポートは、本番環境でのサービス向け Text-Generation-Inference (TGI) ライブラリに追加されました。これにより、限られたハードウェアでも非常に大きなモデルをデプロイできるようになります。たとえば、70B モデルは単一の A100-80GB GPU で提供できるようになり、fp16 チェックポイントでは不可能でした。
PEFT を使用したファインチューニング
量子化モデルは標準的な方法ではトレーニングできませんが、ユーザーは PEFT (Parameter-Efficient Fine-Tuning) ライブラリを活用して、凍結された量子化モデルの上にアダプターをトレーニングすることができます。
現在の制限と今後の方向性
サポート対象アーキテクチャ
現在、この統合はデコーダー専用またはエンコーダー専用の大規模言語モデル (Llama、OPT、GPT-Neo、GPT-NeoX など) をサポートしています。ビジョン、オーディオ、マルチモーダルモデルはまだサポートされていません。
改善すべき領域
- カーネル最適化:Exllama カーネルは使用されていますが、Triton ベースのカーネルや MIT Han Lab、Kim et al. のその他の実装によるさらなる改善の余地があります。
- 重みと活性化の量子化:GPTQ は重みのみを量子化します。今後の方向性として、Nvidia Tensor Cores を介した整数演算を活用できる W4A8 量子化カーネルの探索が含まれます。
- バッチサイズスケーリング:より大きなバッチサイズに対して効率的にスケールする W4A16 カーネルの設計は、依然としてオープンな課題です。