大規模言語モデルおよび拡散モデル用のモデル圧縮ツールボックス
[2024/11] ?最新のW4A4普及モデル量子化作品SVDQuantアルゴリズムとヌンチャクシステムを公開しました!私たちの論文をチェックしてください!
[2024/05] ?当社の最新のW4A8KV4 LLM 量子化作品QoQアルゴリズムとQServeシステムが公開されました。 QoQ は、ラテン語で 4-8-4 を表すquattuor-octō-quattuorの略です。私たちの論文をチェックしてください!
DeepCompressorは、PyTorch に基づく大規模言語モデルおよび拡散モデル用のオープンソース モデル圧縮ツールボックスです。 DeepCompressor は現在、INT8、INT4、FP4_E2M1 など、8 ビット以内の任意の整数および浮動小数点データ型による疑似量子化をサポートしています。ここでは、次のアルゴリズムを実装する例を示します。
大規模言語モデルのトレーニング後の量子化:
前四半期 (W4A8KV4)
スムーズクアント (W8A8)
AWQ (W4A16)
GPTQ (W4A16)
ウェイトのみの量子化
ウェイトアクティベーション量子化
ウェイト アクティベーションと KV キャッシュ量子化
拡散モデルのトレーニング後の量子化:
SVDQuant (W4A4)
ウェイトアクティベーション量子化
DeepCompressor には、他の推論ライブラリと統合するサンプルも含まれています。
TinyChat を使用して重みのみの量子化 LLM をデプロイする
QServe を使用して量子化 LLM を展開する
ヌンチャクを使用して量子化された拡散モデルを展開する
このリポジトリのクローンを作成し、deepcompressor フォルダーに移動します
git clone https://github.com/mit-han-lab/deepcompressor cd deepcompressor
パッケージのインストール
conda env create -f environment.yml poetry install
[Webサイト][論文][ヌンチャク推論システム]
拡散モデルは、高品質の画像を生成するのに非常に効果的であることが証明されています。ただし、これらのモデルが大きくなるにつれて、必要なメモリが大幅に増加し、遅延が増加するため、展開に大きな課題が生じます。この研究では、拡散モデルの重みと活性化を 4 ビットに量子化することで、拡散モデルを加速することを目指しています。このような積極的なレベルでは、重みとアクティベーションの両方が非常に敏感になるため、スムージングなどの大規模な言語モデルに対する従来のトレーニング後の量子化手法では不十分になります。この制限を克服するために、新しい 4 ビット量子化パラダイムであるSVDQuant を提案します。重みとアクティベーションの間で外れ値を再配分する平滑化とは異なり、私たちのアプローチは低ランクの分岐を使用してこれらの外れ値を吸収します。まず、外れ値をアクティベーションから重みにシフトして統合し、次に高精度の低ランク分岐を使用して特異値分解 (SVD) で重みの外れ値を取り込みます。このプロセスにより、両側の量子化が容易になります。ただし、低ランクのブランチを個別に単純に実行すると、アクティベーションの余分なデータ移動により大幅なオーバーヘッドが発生し、量子化の高速化が無効になります。これに対処するために、私たちは、低ランクのブランチのカーネルを下位ビットのブランチのカーネルに融合して冗長なメモリ アクセスを遮断する推論エンジンヌンチャクを共同設計しました。また、再量子化を必要とせずに、既製の低ランク アダプター (LoRA) をシームレスにサポートすることもできます。 SDXL、PixArt-∑、および FLUX.1 に関する広範な実験により、画質の維持における SVDQuant の有効性が検証されています。 12B FLUX.1 モデルのメモリ使用量を 3.5 倍削減し、16 GB ラップトップ 4090 GPU 上の 4 ビット重みのみの量子化ベースラインと比較して 3.0 倍の高速化を達成し、PC 上でよりインタラクティブなアプリケーションへの道を開きます。
以下は、MJHQ-30K データセットからの 5000 サンプルを使用して評価された品質と類似性です。 IRとはイメージリワードのことです。当社の 4 ビットの結果は他の 4 ビットのベースラインよりも優れており、16 ビット モデルの視覚的な品質を効果的に維持しています。
モデル | 精度 | 方法 | FID ( | IR( | LPIPS ( | PSNR( |
---|---|---|---|---|---|---|
FLUX.1-dev (50 ステップ) | BF16 | -- | 20.3 | 0.953 | -- | -- |
INT W8A8 | 私たちのもの | 20.4 | 0.948 | 0.089 | 27.0 | |
W4A16 | NF4 | 20.6 | 0.910 | 0.272 | 19.5 | |
INT W4A4 | 私たちのもの | 19.86 | 0.932 | 0.254 | 20.1 | |
FP W4A4 | 私たちのもの | 21.0 | 0.933 | 0.247 | 20.2 | |
FLUX.1-シュネル (4 ステップ) | BF16 | -- | 19.2 | 0.938 | -- | -- |
INT W8A8 | 私たちのもの | 19.2 | 0.966 | 0.120 | 22.9 | |
W4A16 | NF4 | 18.9 | 0.943 | 0.257 | 18.2 | |
INT W4A4 | 私たちのもの | 18.4 | 0.969 | 0.292 | 17.5 | |
FP W4A4 | 私たちのもの | 19.9 | 0.956 | 0.279 | 17.5 | |
FP16 | -- | 16.6 | 0.944 | -- | -- | |
PixArt-シグマ (20 ステップ) | INT W8A8 | ViDiT-Q | 15.7 | 0.944 | 0.137 | 22.5 |
INT W8A8 | 私たちのもの | 16.3 | 0.955 | 0.109 | 23.7 | |
INT W4A8 | ViDiT-Q | 37.3 | 0.573 | 0.611 | 12.0 | |
INT W4A4 | 私たちのもの | 20.1 | 0.898 | 0.394 | 16.2 | |
FP W4A4 | 私たちのもの | 18.3 | 0.946 | 0.326 | 17.4 |
[Webサイト][論文][QoQアルゴリズムコード][QServe GPUシステム]
量子化により、大規模言語モデル (LLM) 推論を高速化できます。研究コミュニティは、INT8 量子化を超えて、INT4 などのさらに低い精度を積極的に研究しています。それにもかかわらず、最先端の INT4 量子化技術は、低バッチのエッジ LLM 推論を高速化するだけであり、大規模なバッチのクラウドベースの LLM サービスではパフォーマンスの向上を実現できません。私たちは重大な問題を発見しました。既存の INT4 量子化メソッドは、GPU で重みまたは部分和を逆量子化するときに、重大なランタイム オーバーヘッド (20 ~ 90%) に悩まされます。この課題に対処するために、4 ビットの重み、8 ビットのアクティベーション、および 4 ビットの KV キャッシュを備えた W4A8KV4 量子化アルゴリズムであるQoQを導入します。 QoQ はquattuor-octo-quattuorの略で、ラテン語で 4-8-4 を表します。 QoQ は、測定された速度向上を実現するQServe推論ライブラリによって実装されます。 QServe を推進する重要な洞察は、GPU 上で提供される LLM の効率が、低スループットの CUDA コアでの操作によって重大な影響を受けるということです。この洞察に基づいて、QoQ アルゴリズムでは、W4A8 GEMM で逆量子化オーバーヘッドを低く抑えることができるプログレッシブ量子化を導入します。さらに、4 ビット KV 量子化によって生じる精度の低下を効果的に軽減する SmoothAttend を開発しました。 QServe システムでは、コンピューティングを意識した重みの並べ替えを実行し、レジスタレベルの並列処理を利用して逆量子化のレイテンシを短縮します。また、KV4 量子化によってもたらされるパフォーマンスの向上を利用して、融合された注意をメモリに制限します。その結果、QServe は Llama-3-8B の最大達成可能なサービング スループットを A100 で1.2 倍、L40S で1.4 倍向上させます。 TensorRT-LLM と比較して、Qwen1.5-72B は A100 で2.4 倍、L40S で3.5 倍です。
以下は、2048 シーケンス長で評価された WikiText2 のパープレキシティです。低いほど良いです。
メソッド | 精度 | ラマ-3.1 70B | ラマ-3.1 8B | ラマ-3 70B | ラマ-3 8B | ラマ-2 7B | ラマ-2 13B | ラマ-2 70B | ラマ 7B | ラマ 13B | ラマ 30B | ミストラル 7B | イー34B |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
FP16 | 2.81 | 6.24 | 2.85 | 6.14 | 5.47 | 4.88 | 3.32 | 5.68 | 5.09 | 4.10 | 5.25 | 4.60 | |
スムーズクアント | W8A8 | 3.23 | 6.38 | 3.14 | 6.28 | 5.54 | 4.95 | 3.36 | 5.73 | 5.13 | 4.23 | 5.29 | 4.69 |
GPTQ-R | W4A16 g128 | 3.46 | 6.64 | 3.42 | 6.56 | 5.63 | 4.99 | 3.43 | 5.83 | 5.20 | 4.22 | 5.39 | 4.68 |
AWQ | W4A16 g128 | 3.22 | 6.60 | 3.20 | 6.54 | 5.60 | 4.97 | 3.41 | 5.78 | 5.19 | 4.21 | 5.37 | 4.67 |
クアロット | W4A4 | 5.97 | 8.32 | 6.75 | 8.33 | 6.19 | 5.45 | 3.83 | 6.34 | 5.58 | 4.64 | 5.77 | NaN |
原子 | W4A4 g128 | - | - | 4.33 | 7.78 | 6.12 | 5.31 | 3.73 | 6.25 | 5.52 | 4.61 | 5.76 | 4.97 |
前四半期比 | W4A8KV4 | 3.69 | 6.91 | 3.65 | 6.84 | 5.75 | 5.11 | 3.51 | 5.92 | 5.27 | 4.32 | 5.45 | 4.73 |
前四半期比 | W4A8KV4 g128 | 3.54 | 6.80 | 3.51 | 6.73 | 5.68 | 5.05 | 3.46 | 5.88 | 5.23 | 4.27 | 5.41 | 4.73 |
* SmoothQuant は、テンソルごとの静的 KV キャッシュ量子化で評価されます。
L40S および A100 GPU で大規模言語モデル Llama-3-8B および Qwen1.5-72B を提供する場合、QServe は優れたパフォーマンスを示し、Llama 向けの業界をリードするソリューション TensorRT-LLM と比較して1.2 倍から 1.4 倍高いスループットを達成します。 Qwen1.5-72B では 3 ~ 8B、 2.4 ~ 3.5 倍のスループットを実現します。
QServe GPU 推論システムのベンチマーク設定の詳細を参照してください。
L40S(48G) | ラマ-3-8B | ラマ-2-7B | ミストラル-7B | ラマ-2-13B | ラマ-30B | Yi-34B | ラマ-2-70B | クウェン-1.5-72B |
---|---|---|---|---|---|---|---|---|
TRT-LLM-FP16 | 1326 | 444 | 1566年 | 92 | OOM | OOM | OOM | OOM |
TRT-LLM-W4A16 | 1431 | 681 | 1457 | 368 | 148 | 313 | 119 | 17 |
TRT-LLM-W8A8 | 2634 | 1271 | 2569 | 440 | 123 | 364 | OOM | OOM |
アトム-W4A4 | -- | 2120 | -- | -- | -- | -- | -- | -- |
クアロット-W4A4 | -- | 805 | -- | 413 | 133 | -- | -- | 15 |
QServe-W4A8KV4 | 3656 | 2394 | 3774 | 1327 | 504 | 869 | 286 | 59 |
スループットの向上* | 1.39倍 | 1.13倍 | 1.47倍 | 3.02倍 | 3.41倍 | 2.39倍 | 2.40倍 | 3.47倍 |
A100(80G) | ラマ-3-8B | ラマ-2-7B | ミストラル-7B | ラマ-2-13B | ラマ-30B | Yi-34B | ラマ-2-70B | クウェン-1.5-72B |
---|---|---|---|---|---|---|---|---|
TRT-LLM-FP16 | 2503 | 1549年 | 2371 | 488 | 80 | 145 | OOM | OOM |
TRT-LLM-W4A16 | 2370 | 1549年 | 2403 | 871 | 352 | 569 | 358 | 143 |
TRT-LLM-W8A8 | 2396 | 2334 | 2427 | 1277 | 361 | 649 | 235 | 53 |
アトム-W4A4 | -- | 1160 | -- | -- | -- | -- | -- | -- |
クアロット-W4A4 | -- | 1370 | -- | 289 | 267 | -- | -- | 68 |
QServe-W4A8KV4 | 3005 | 2908 | 2970 | 1741年 | 749 | 803 | 419 | 340 |
スループットの向上* | 1.20倍 | 1.25倍 | 1.22倍 | 1.36倍 | 2.07倍 | 1.23倍 | 1.17倍 | 2.38倍 |
QServe およびベースライン システムの絶対トークン生成スループット (単位: トークン/秒。 --
サポートされていないことを意味します)。すべての実験は、同じデバイスのメモリ バジェットの下で実施されました。 QServe のスループットの増加は、各列の最適なベースラインに関して計算されます。
deepcompressor
あなたの研究に役立つ、または関連していると思われる場合は、私たちの論文を引用してください。
@article{lin2024qserve, title={QServe: 効率的な LLM サービングのための W4A8KV4 量子化とシステムの共同設計}、author={Lin*、Yujun と Tang*、Haotian と Yang*、Shang と Zhang、Zhekai と Xiao、Guangxuan と Gan 、Chuang と Han、Song}、journal={arXiv プレプリントarXiv:2405.04532}、年={2024}}@article{ li2024svdquant、title={SVDQuant: 4 ビット拡散モデルの低ランク コンポーネントによる外れ値の吸収}、author={Li*、Muyang と Lin*、Yujun と Zhang*、Zhekai と Cai、Tianle と Li、Xiuyu と Guo、 Junxian と Xie、Enze と Meng、Chenlin と Zhu、Jun-Yan と Han、Song}、ジャーナル={arXiv プレプリント arXiv:2411.05007}、年={2024}}
次のプロジェクトは QServe と密接に関連しています。私たちのグループは、効率的な大規模モデル向けのフルスタックのアプリケーション、アルゴリズム、システム、ハードウェアのサポートを開発し、 9,000 個以上の GitHub スターを獲得し、 100 万を超える Huggingface コミュニティからのダウンロードを獲得しました。
効率的な生成 AIに関する他のエキサイティングなプロジェクトについては、MIT HAN Lab もぜひチェックしてください。
[システム] QServe: 効率的な LLM サービングのための W4A8KV4 量子化
[システム] TinyChat: AWQ を使用した効率的で軽量なチャットボット
[アプリケーション] VILA: 視覚言語モデルの事前学習について
[アルゴリズム] AWQ: LLM 圧縮および加速のためのアクティベーションを意識した重み量子化
[アルゴリズム] SmoothQuant: 大規模な言語モデルの正確かつ効率的なポストトレーニング量子化
[アルゴリズム] DistriFusion: 高解像度拡散モデルの分散並列推論
[ハードウェア] SpAtten: カスケード トークンとヘッド プルーニングを備えた効率的なスパース アテンション アーキテクチャ
DeepCompressor は、GPTQ、QuaRot、Atom を含む (ただしこれらに限定されない) 多くのオープンソース ライブラリからインスピレーションを受けています。