ホームページ  >  記事  >  テクノロジー周辺機器  >  リオーダリングRPTQに基づく新しい量子化手法:大規模言語モデルの3ビット量子化を実現

リオーダリングRPTQに基づく新しい量子化手法:大規模言語モデルの3ビット量子化を実現

王林
王林転載
2023-04-10 14:21:031713ブラウズ

大規模言語モデル (LLM) は、さまざまなタスクで良好に機能しますが、モデルのサイズが非常に大きいため、展開に課題が生じます。

この論文では、Humo Intelligence、Tencent AI Lab、華中科技大学、北京大学、イリノイ工科大学の研究者が、大規模な言語モデルを定量化することが主な課題であることを発見しました。これは、単なる外れ値の問題ではなく、チャネル間のアクティベーション範囲の違いに起因します。

著者は、大規模な言語モデルのアクティベーションを定量化する問題を解決する、新しい再ランキングベースの量子化手法 RPTQ を提案します。 RPTQ は、アクティブ化時にチャネルを再配置し、定量化するためにそれらをクラスタリングすることにより、チャネル全体の差異の影響を軽減します。

さらに、著者らは、明示的な並べ替えを避けることで、ストレージと計算のオーバーヘッドを削減しています。この研究は、LLM モデルのアクティベーション量子化を 3 ビットに押し上げる最初の作業です。アクティベーション値の 3 ビット量子化は、重みの 3 ビット量子化と併用することもできるため、大規模な音声モデルのオーバーヘッドが大幅に削減されます。

リオーダリングRPTQに基づく新しい量子化手法:大規模言語モデルの3ビット量子化を実現

紙のアドレス: https://arxiv.org/abs/2304.01089

オープンソース アドレス: https://github.com/hahnyuan/RPTQ4LLM

大規模言語モデル (LLM) はさまざまな分野で広く使用されているこのタスクでは優れたパフォーマンスが実証されていますが、モデルのサイズが巨大であるため、その導入は課題に直面しています。たとえば、66B モデルには 660 億個のパラメータが含まれており、保存するために大量のメモリが必要です。さらに、シーケンス長とバッチサイズが増加するにつれて、Self-attention のキーと値のキャッシュ (Key/Value Cache) など、アクティブ化によって大量のメモリも消費されるため、メモリ消費の問題はさらに深刻になります。ただし、単一の GPU またはサーバーには、このような多数のモデルの重みと中間アクティベーションを保存するのに十分なメモリ容量がありません。したがって、LLM を複数のチャンクに分割し、異なるデバイスに保存する必要があります。重みとアクティベーションは異なるデバイスに保存されるため、計算中にこれらのデバイス間でデータを転送する必要があり、その結果、帯域幅とエネルギーが大幅に消費されます。

LLM のモデル スケーリングの課題を克服するために、モデルの定量化が有望なアプローチとして浮上しています。この手法には、低ビット整数を使用して LLM の重みとアクティベーションを量子化することが含まれており、これにより、これらのモデルの保存と実行のコストが大幅に削減されます。具体的には、量子化により、テンソルを保持するためのメモリ要件が軽減され、行列の乗算や線形層などの計算量の多い演算が高速化されます。重みとアクティベーションを量子化することにより、ストレージと通信のオーバーヘッドが削減され、効率と推論速度が向上します。

リオーダリングRPTQに基づく新しい量子化手法:大規模言語モデルの3ビット量子化を実現

#図 1 さまざまなチャネルの数値分布。各点は、アクティベーション チャネルの (最大、最小) 値を表します。

最近、GPTQ は PTQ を使用して LLM の重みを 4 ビットまたは 3 ビットに量子化することに成功しました。ただし、LLM の活性化を定量化することは依然として困難な作業です。

図 1 から 2 つの観察ができます:

1) 一部のチャネルには、最大値または最小値を持つ重大な外れ値があります。値は数百です。他のチャンネルよりも数倍大きい。以前の研究でもこの問題が発見され、外れ値に対する特別な処理が提案されています。

2) チャネルが異なると、数値範囲に大きな違いがあります。同じ量子化パラメータを使用して異なるチャネルを量子化すると、重大な量子化エラーが発生する可能性があります。 2 つのチャネルの外れ値の絶対値が同じであっても、数値範囲に大きなばらつきがある可能性があります。

同じ量子化パラメータを使用してテンソル全体を量子化するテンソルごとの量子化手法は、効率が低い可能性があります。その理由は、広い範囲の値をカバーするように量子化範囲を設定すると、より小さい値のチャネルで大きな量子化誤差が発生する可能性があり、一方、狭い範囲の値をカバーするように設定すると、外れ値が大幅に切り捨てられ、結果が大きくなる可能性があるためです。重大な量子化エラー。たとえば、あるチャネルの値の範囲は -100 ~ -50 であり、別のチャネルの値の範囲は 80 ~ 100 である場合があります。 -100 から 100 までの範囲を量子化してその範囲をカバーしようとすると、両方のチャネルで重大な量子化エラーが発生します。これは、これまでの研究では効果的に対処されていない課題です。

リオーダリングRPTQに基づく新しい量子化手法:大規模言語モデルの3ビット量子化を実現

# 図 2 活性化量子化問題を解決するためのさまざまな方法の比較。

活性化におけるチャネルの違いの問題を解決するために、著者らは並べ替えベースの新しいポストトレーニング量子化手法 RPTQ を提案します。

図 2 に示すように、この方法では、同様の数値範囲を持つチャネルをクラスター化し、同じ量子化パラメーターを使用して各クラスターの値を量子化します。再ランキングベースの定量化手法を実装するために、著者らはまず、推論入力として校正データセットを使用し、そこから各活性化チャネルの最大値と最小値を導き出しました。

次に、KMeans アルゴリズムを使用して、各チャネルの最大値と最小値によって形成される点に基づいて、さまざまなチャネルを g 個のクラスターに分割しました。クラスタが確立されると、チャネルの並べ替えが実行され、同じクラスタのチャネルが近接して配置されます。このようにして、同様の最大値と最小値を持つチャネルがグループ化され、量子化パラメータの共通セットを共有します。並べ替えプロセスの後、著者らは各クラスター内の活性化を定量化しました。この方法では、量子化パラメータ (スケーリング係数 s およびゼロ点 z) がクラスタごとに個別に計算され、これらのパラメータが対応するチャネルに固有であることが保証されます。

最終的に、この方法により、各クラスターの量子化が最適化され、量子化エラーが減少します。

リオーダリングRPTQに基づく新しい量子化手法:大規模言語モデルの3ビット量子化を実現

図 3: 重みとアクティベーションが再配置された量子化された Transformer 層の推論プロセスの失敗図。並べ替えインデックスは記号 R1 ~ R5 で表されます。

明示的な再配置は、アクティブなチャネルを再配置する実行時操作であり、異なるチャネルのデータをあるメモリ位置から別のメモリ位置に物理的に移動する必要があるため、大規模なモデルの場合は、チャンネルの数が多いと、再配置プロセスに非常に時間がかかる場合があります。さらに、ソースとターゲットのアクティベーション テンソルを保存すると、メモリのオーバーヘッドが増加します。したがって、著者らは、明示的な並べ替えを回避し、それによって計算オーバーヘッドを削減し、推論効率を向上させる戦略を提案しています。

図 3 に示すように、作成者は線形層の重みを並べ替えて、ソートされた順序で直接アクティベーションを生成します。さらに、著者らは、並べ替えられたアクティベーションを直接生成するように LayerNorm のメソッドを変更し、推論中の明示的なチャネル調整の必要性を排除しました。

リオーダリングRPTQに基づく新しい量子化手法:大規模言語モデルの3ビット量子化を実現

#著者らは、3 つの異なるビット幅構成 (W4A16、W4A8、および W4A4) の下で OPT のパフォーマンスを評価しました。さらに、著者は、メイン メモリの消費量 (キー キャッシュと値キャッシュ (キー/値キャッシュ)) のみを定量化する、新しい定量化スキーム W4A4KV、W4A3KV、および W3A3KV も開発しました。このテーブルに基づいて、次のことがわかります。 一般に、アクティベーション量子化ビット幅が減少すると、モデルのパフォーマンスが低下します。ただし、ほとんどの場合、この劣化は重大ではありません。一部のタスクでは、パフォーマンスの低下が 1% 未満、または改善された場合もあります。

リオーダリングRPTQに基づく新しい量子化手法:大規模言語モデルの3ビット量子化を実現

LLM のメモリ オーバーヘッドは 3 つの側面から生じます。 まず、量子化によってデバイス メモリ内の重みの保存を大幅に削減できます。第 2 に、ネットワークの実行中に生成される一時的なアクティベーションには、デバイス メモリの割り当てが必要です。これらの一時的なアクティベーションは使用後に解放できるため、全体的なメモリ使用量に大きな影響を与えることはありません。最後に、後続の単語を予測するにはキー/値キャッシュが必要です。バッチ サイズとシーケンスの長さが大きい場合、キーと値のキャッシュがメモリの大部分を占有します。

この表は、さまざまな設定でのメモリ使用量を示しています。特にバッチ サイズとシーケンス長が大きい場合、より低いビットをアクティブにするとメモリ使用量が大幅に削減できることがわかります。具体的には、バッチ サイズが 64、シーケンス長が 8192 の場合、OPT-66b に基づく W4A4 構成は、W4A16 構成と比較して 900GB 以上のメモリを節約します。したがって、RPTQ を使用してアクティベーションを定量化すると、長いテキスト タスクや大量のシナリオでのメモリ負荷を大幅に軽減できます。

以上がリオーダリングRPTQに基づく新しい量子化手法:大規模言語モデルの3ビット量子化を実現の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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