ホームページ  >  記事  >  テクノロジー周辺機器  >  100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

WBOY
WBOY転載
2023-04-13 09:31:061649ブラウズ

大規模言語モデル (LLM) は優れたパフォーマンスを持っていますが、パラメータの数は簡単に数千億、数千億に達する可能性があり、コンピューティング機器やメモリの需要が非常に大きいため、一般の企業にはそれを賄うことができません。

量子化は一般的な圧縮操作です。モデルの重みの精度を下げることにより (32 ビットから 8 ビットへなど)、推論速度の高速化と引き換えにモデルのパフォーマンスの一部が犠牲になり、メモリの使用量が減ります。要件。

しかし、1,000 億を超えるパラメーターを持つ LLM の場合、既存の圧縮方法ではモデルの精度を維持できず、ハードウェア上で効率的に実行することもできません。

最近、MIT と NVIDIA の研究者は、汎用ポストトレーニング量子化 (GPQ、汎用ポストトレーニング量子化) ソリューション SmoothQuant を共同で提案しました。大規模な言語モデル、8 ビットの重みおよび 8 ビットのアクティベーション (W8A8) 定量化を効率的に実現でき、トレーニングなしでモデルの精度を維持できます。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

紙のリンク: https://arxiv.org/pdf/2211.10438.pdf

##コードリンク: https://github.com/mit-han-lab/smoothquant

アクティベーションは重みよりも定量化するのが難しいため、 SmoothQuant は、定量化が難しいアクティベーションを数学的等価変換を通じて重みに変換し、アクティベーション外れ値のスムーズな処理を実現します。

SmoothQuant は、OPT-175B、BLOOM-176B、GLM-130B を含む、すべての LLM のさまざまなレイヤーの重みとアクティベーションを INT8 に量子化できます。

重みの最適化のみを実行するか、混合精度でアクティベーションを量子化する既存の方法と比較して、

SmoothQuant はハードウェア効率が高く、1.56 倍の高速化を実現します。メモリ要件はわずか半分です。オリジナルの LLM をそのまま使用しているため、精度がほとんど失われません。

SmoothQuant はハードウェア フレンドリーな設計でもあり、研究者らは SmoothQuant を LLM サービス フレームワーク FasterTransformer に統合して、より高速な推論速度を実現しました。 FP16 の場合、必要な GPU の数は半分だけです。 100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

講師の Song Han は、MIT EECS の准教授です。スタンフォード大学で博士号を取得して卒業しました。彼の主な研究方向は効率的な深層学習です。彼はかつて、深層圧縮技術を提案しました。ニューラル ネットワークを次のように変換します。精度を損なうことなく、サイズが 1 桁減少します。

SmoothQuant

量子化 (Quantization) は、高精度の値を低精度の離散値にマッピングすることです。この論文では、研究者は主にハードウェアの効率性の向上に焦点を当てています。整数の一様量子化、特に INT8。

量子化操作は、テンソルごとの量子化が重み行列全体に適用され、トークンごとの量子化が重み行列全体に適用されるなど、さまざまな粒度で実行できます。トークンごとに、チャネルごとの量子化が重みの各出力チャネルに適用されます。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

#活性化の定量的結果を観察することにより、研究者らはいくつかのパターンを結論付けました:

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。


#1. 定量化は重量よりも困難です。

重みの分布は比較的均一で平坦です。以前の研究結果では、大規模な言語モデルの重みを INT8 または INT4 に削減しても、精度にはほとんど影響がないことが証明されています。

#2. 外れ値は、アクティベーションの定量化における主な困難です。

#アクティベーションにおける外れ値は通常、通常の値よりも約 100 倍高く、その結果、外れ値のないチャネルでは量子化ビット/レベルの効率が非常に低くなります。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

3. 特定のチャンネルで異常値が修正されました。

外れ値は少数のチャネルにのみ表示されますが、1 つのチャネルに外れ値がある場合、その外れ値はトークン内のすべてのチャネルに表示される可能性があります。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

特定のトークン内のすべてのチャネルの分散は大きくなります (一部のチャネルは非常に大きくなりますが、ほとんどのチャネルは小さくなります)。すべてのトークン次数にわたるチャネルの分散は小さくなります (外れ値チャネルは大きくなります)。

外れ値は各チャネル内で連続的に発生し、分散が小さいという特性があるため、アクティベーションに対してチャネルごとの量子化が実行される場合、量子化誤差はテンソルごとの量子化よりもはるかに小さくなります。

簡単な実験を通じて、結果は研究者のアイデアを再度検証しました。INT8 に量子化すると、チャネルごとの精度はテンソルごとやトークンごとよりもはるかに高くなります。 、精度は FP16 ベースラインとほぼ同じです。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

研究者らは、チャネルごとの平滑化係数 s を使用して入力のアクティブ化を平滑化しました。線形層の数学的等価性を維持するには、重みを逆スケールする必要もあります。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

入力 X は通常、前の線形演算 (線形層、層ノルムなど) によって生成されるため、簡単に平滑化係数はオフラインで前のレイヤーのパラメーターにブレンドされ、追加のスケーリングによるカーネル呼び出しのオーバーヘッドは発生しません。入力が残差加算からのものである場合など、他のケースでは、追加のスケーリングを残差ブランチに追加できます。

量子化の難易度をアクティベーションから重みに移す

Smooth の目標は、逆演算が行われるようにチャネルごとの平滑化係数を選択することです。数値化しやすいです。

量子化誤差を減らすには、すべてのチャネルの実効量子化ビットを増やす必要があります。すべてのチャネルの最大の大きさが同じである場合、有効な量子化ビットの総数は最大になります。

したがって、最も直接的な平滑化係数の選択の 1 つは、入力内の各チャネルの最大値です。これにより、除算後にすべてのアクティベーション チャネルが同じ最大値を持つことが保証され、定量化が容易になります。

ただし、アクティベーション範囲は動的であり、入力サンプルごとに異なることに注意してください。そこで研究者らは、事前トレーニング データセットからのキャリブレーション サンプルを使用して、活性化チャネルのサイズを推定しました。

この式はすべての定量化の困難さを重みに移すため、この場合、重みの量子化誤差が非常に大きくなり、精度が大幅に低下することがわかります。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

一方、 sj = 1/ max(|Wj |) を選択することで、重み付けからアクティベーションまですべての量子化の困難をプッシュすることも可能です。同様に、過剰なアクティベーション量子化エラーにより、モデルのパフォーマンスも低下します。したがって、ウェイトとアクティベーションの両方を簡単に定量化できるように、定量化の難易度を分割する必要があります。

研究者らは、アクティベーションからウェイトへの転送の難しさを制御するために、ハイパーパラメータ転送強度 α を導入しました。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

OPT モデルや BLOOM モデルなどのほとんどのモデルでは、α=0.5 が適切なバランス ポイントであり、特に同じ量子化器を使用する場合、量子化の難易度を均等に分散できることがわかります。重み付けとアクティブ化を実行します。

この式により、対応するチャネルの重みとアクティベーションが同様の最大値を持つことが保証され、したがって同じ量子化難易度が共有されます。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

30% の外れ値を持つ GLM-130B など、アクティベーションの外れ値が比較的大きい他のモデルの場合は、アクティベーションの定量化がより困難なので、より大きな A ラージを選択できます。 α (0.75 など) を指定すると、定量化の難易度が重みに反映されます。

SmoothQuant は Transformer ブロックに適用されます

線形層は、LLM モデルのパラメーターと計算の大部分を占めます。デフォルトでは、SmoothQuant は、Transformer 内のすべての線形レイヤーの入力アクティベーションをスケーリングし、W8A8 で線形レイヤーを量子化します。これにより、アテンション計算における BMM オペレーターの量子化が可能になります。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

このプロセスでは、最初に INT8 を使用して、線形層とアテンション層の BMM などの計算量の多い演算子の入力と重みを定量化します。一方、大きさに関する他の軽い演算は、 Softmax や LayerNorm などの要素は FP16 としてアクティブ化されたままになり、この設計は精度と推論効率のバランスをとるのに役立ちます。

実験部分

研究者らは、SmoothQuant を評価するために OPT、BLOOM、GLM-130B を含む 3 つの大規模言語モデルを選択し、LAMBADA、HellaSwag、PIQA を含む 7 つのゼロショット タスクを使用しました。 、WinoGrande、OpenBookQA、RTE、COPA など。

実験結果は、SmoothQuant が非常に大きな LLM の量子化問題を処理できること、そしてその活性化を定量化することがより難しいことを示しています。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

SmoothQuant はすべての評価データセットで FP16 の精度と一致しますが、W8A8、ZeroQuant、および外れ値抑制ベースラインはほぼランダムな結果を生成します。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

そして、SmoothQuant は、100B を超えるパラメーターを持つすべてのオープン LLM をロスレスで量子化できます。

SmoothQuant の O1 および O2 レベルは、浮動小数点精度を維持することに成功していますが、レベル O3 ( -tensor static) は平均精度を 0.8% 低下させます。これは、おそらく静的に収集された統計と実際の評価サンプルの活性化統計との違いが原因です。

それにもかかわらず、SmoothQuant-O1 は FP16 の精度に匹敵することができますが、SmoothQuant-O3 は精度を 1% 低下させるだけであり、ベースラインよりも大幅に優れています。

SmoothQuant は、100B を超えるパラメータを持つ非常に大規模な LLM に効果的であるだけでなく、より小さな LLM に対しても安定した結果をもたらします。SmoothQuant は、OPT モデルのすべてのスケールで動作し、INT8 量子化の FP16 精度と一致します。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

PyTorch と FasterTransformer に統合された SmoothQuant-O3 の速度向上とメモリ節約を実証するために、一度に 4 文のバッチを生成するすべての隠れ状態を測定しました。エンドまでの遅延、つまりコンテキスト ステージでの遅延を測定し、このプロセス中のピーク GPU メモリ使用量を記録します。

Huggingface ではモデルの並列処理がサポートされていないため、研究者は単一 GPU 上で SmoothQuant の PyTorch 実装のパフォーマンスのみを測定したため、OPT-6.7B、OPT-13B、および OPT-30B が評価用に選択されました。

FasterTransformer ライブラリでは、SmoothQuant を Tensor Parallelism アルゴリズムにシームレスに接続できるため、研究者は SmoothQuant のシングル GPU およびマルチ GPU ベンチマークを OPT-13B、OPT-30B、OPT-66B、および OPT- でテストしました。 175B. .

NVIDIA A100 80GB GPU サーバーで実施された実験結果は、OPT-30B でシーケンス長が 256 の場合、PyTorch 実装に基づく推論レイテンシとピーク メモリ使用量の点で、SmoothQuant が常に FP16 ベースラインより高速であることを示しています。 1.51倍の高速化を実現しました。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

また、モデルが大きくなるほど明らかに高速化する傾向が見られますが、LLM.int8() はほとんどの場合、FP16 ベースラインよりも遅くなります。混合精度への変換 表現をアクティブにする際の膨大なオーバーヘッドが原因で発生します。

メモリに関しては、SmoothQuant と LLM.int8() はどちらも FP16 モデルのメモリ使用量をほぼ半分にできますが、SmoothQuant は完全に INT8 GEMM を使用するため、メモリの節約がわずかに多くなります。

100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。

FasterTransformer の OPT FP16 実装と比較すると、SmoothQuant-O3 は、単一 GPU 使用時の OPT-13B および OPT-30B の実行レイテンシーをさらに最大 1.56 削減できます。回。


以上が100億個のパラメータを持つ言語モデルは実行できないのでしょうか? MIT の中国人医師が SmoothQuant 定量化を提案しました。これにより、メモリ要件が半分に減り、速度が 1.56 倍向上しました。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事は51cto.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。