記事のソース: New Zhiyuan> 最近、ISTAの研究者は、精度をほとんど損なうことなく、1兆6,000億個のパラメータSwitchTransformerを160GB未満(パラメータあたり0.8ビット)に圧縮できる新しいモデル量子化方法であるQMoEを提案しました。 画像ソース: Unbounded AIによって生成GPT-4のアーキテクチャが有名な業界リーダーによって「オープンソース化」されたことで、ハイブリッドエキスパートアーキテクチャ(MoE)が再び研究の焦点となっています。 GPT-4には、合計1兆8,000億個のパラメータを持つ16のエキスパートモデルがあります。 各トークン生成には、約2,800億個のパラメータと560個のTFLOPが必要ですただし、より高速で正確なモデルのコストは、膨大な数のパラメーターとそれに伴う高コストです。たとえば、1兆 6,000 億個のパラメーター SwitchTransformer c2048 モデルを効果的に実行するには、3.2 TB の GPU メモリが必要です。この問題を解決するために、オーストリア工科大学(ISTA)の研究者は、まったく新しい圧縮および実行フレームワークであるQMoEを提案しました。 住所:特別に設計されたGPUデコードコアを採用することで、QMoEは効率的なエンドツーエンドの圧縮推論を実現し、精度をわずかに低下させるだけで最大20倍の圧縮を実現できます。具体的には、QMoEは1兆6,000億個のパラメータを持つSwitchTransformer-c2048モデルを1日で160GB未満に圧縮できますが、これはパラメータあたりわずか0.8ビットに相当します。これにより、4 基の NVIDIA RTX A6000 または 8 基の NVIDIA RTX 3090 GPU で、非圧縮モデルの推論コストの 5% 未満で実行できます。 ## **MoEモデルの量子化** ハイブリッドモデル(MoE)の核となる考え方は、標準のフィードフォワードアーキテクチャと比較して計算コストをほぼ同じに保ちながら、モデルパラメータの数を増やしてネットワークのモデリング機能を向上させることです。各入力トークンを処理するために呼び出す必要があるのはネットワークのごく一部だけであるため、この設計では、100人または1,000人の「専門家」を活用して、効率的なトレーニングと推論のためのハイパースケールモデルを構築できます。MoEは、推論速度が同等である場合、精度と学習速度を大幅に向上させることができることが証明されています。 ただし、このようなボリュームは、モデルを実行するために大量のビデオ メモリが必要であることを意味します。 MoE の圧縮における大きな課題は、大量のアクティベーションを維持する必要があることです。この点で、計算する必要がある中間データは、モデルの実行を慎重に配置することで、小さな部分で制御できます。 これにより、メインストレージがGPUからより安価で高価なCPUメモリにオフロードされます。具体的には、大きなバッファー B を維持し、Transformer ブロックの密な部分を次のように更新します。1. CPUからGPUまで、何百ものトークンを含む「サンプル」Xを取得します。2.対応する高密度層を介して、結果Yが得られます。3. トークンのエキスパート割り当てを計算してYに保存します。4. Y を CPU に送り返し、B の X を上書きします。 疎セクションの場合:1. CPU から GPU まで、エキスパート E に割り当てられている B のすべてのトークン (X\_E で表される) を取得します。2. それらを使用して、圧縮されたエキスパート E を生成します (例: GPTQ を使用)。3. X\_E から E' までを実行して、Y\_E' を取得します。4. Y\_E' を CPU に送り返し、B の X\_E を上書きします。図 2 に示すように、このプロセスにより、メモリ消費と転送コストが最小限に抑えられ、必要な B のコピーは 1 つだけで、各トークンは各 Transformer ブロックで 2 回だけ読み書きされます。さらに、研究者らは、重みあたり1ビット未満の圧縮を実現し、推論のためのGPU実行オーバーヘッドを最小限に抑えるために、符号化スキームとCUDAコアを設計しました。 ## **圧縮効果** ### **精度**まず、研究者らは、すべてのSwitchTransformerモデルを2ビットおよび三項精度に量子化し、次に検証損失を評価しました。128 人のエキスパートの場合、デフォルトのキャリブレーションサンプルサイズは 10K です。 2048 エキスパートの場合、デフォルトのキャリブレーション サンプル サイズは 160K です。 同時に、研究者は0.5倍と2倍のサンプルサイズもテストしました。結果は、データ依存量子化を使用して、最小の損失(C2048と比較して1.7%)と三元精度での損失のわずかな増加(C2048と比較して6.7%)で2桁モデルを実現できることを示しています。これは、提案する高度な定量化手法の有効性を証明するだけでなく、極めて低いビット幅の圧縮が大規模なMoEに適していることを示しています。 さらに、研究者はRedPajamaのarXiv、GitHub、StackExchange、Wikipediaからのデータを評価しました。キャリブレーションデータの<0.01%のみがこれらのサイトからのものですが、圧縮モデルはコア分布とほぼ同じパフォーマンスを維持しています。キャリブレーションデータの場合、通常、サンプルサイズを大きくするとパフォーマンスがわずかに向上し、三元量子化で最も顕著になります。 しかし、特に2ビットでは、プロセスにノイズもあります。 ### **圧縮**このテストでは、MoEモジュールのみの圧縮と、モデル全体とそのすべてのメタデータに対する圧縮の両方を考慮しました。MoE のみの場合、すべてのスケールで >16 倍の圧縮が達成され、これは各パラメータで 1 ビットのストレージ<スペースに相当します。c2048 では、全体の圧縮率は 19.81 倍で、これはすべての非圧縮の高密度レイヤーを含めてもパラメーターあたり 0.807 ビットに相当し、チェックポイント サイズが 3142 GB から 158.6 GB に減少します。さらに、次の 2 つの理由により、モデルのサイズとともに圧縮率が増加することがわかります。(a)自然なスパース性が増加し、研究者はC2048のコーディング辞書を最適化しました。(b)層が大きいほど、重量分布は独立性に近くなります。 ### **ランタイム**最後に、研究者は、さまざまな量のキャリブレーションデータに対して、単一のA6000 GPUで圧縮モデルを生成するのにかかる時間を評価しました。その結果、小型モデルでも1時間未満で圧縮でき、c2048でも1日未満で完了できることが示され、QMoEの高効率が確認されました。large128 から c2048 までは、実行時間の増加は基本的にサイズの違いに比例しますが、後者は 16 倍多くのサンプルを使用します。 これは、エキスパートごとのサンプルサイズは同じままですが、エキスパートのサイズはわずかにしか増加しないためです。 ### **実行結果**まず、圧縮された行列ベクトル積カーネルと PyTorch 標準の (非圧縮) bfloat16 cuBLAS カーネルを直接 (分離して) 比較します。図5(左)は、MoEが2つの異なるGPUで行列形状を検出するのにかかる時間を比較したものです。研究者は貧弱なストレージ性能を使用しましたが、それでも圧縮カーネルの実行に要する時間は、ほぼ理想的なbfloat16ベースラインよりも短くなりました。 特定のマトリックス形状で最大35%高速化。これらの操作のレイテンシも非常に低く、最小の行列は 0.02 ミリ秒<、最大の行列は 0.05 ミリ秒<かかります。 その後、研究者らは、圧縮されたMoEモデルの実際の重みを使用して、HuggingFaceのカーネルのエンドツーエンドのベンチマークを実施しました。図 5 (右) に示すように、圧縮されたモデルのエンドツーエンドの実行は、標準 (非圧縮) モデルの実行よりも <5% 遅いだけです。各レイヤーのタイミングは速くなりますが、エンコーダーが複数のトークンを同じエキスパートにルーティングすることがあるため、速度はわずかに低下します。現在の実装では、トークンごとに個別の行列ベクトル積を実行しますが、ベースラインはより効率的なジョイント行列乗算を実行します。アプリケーションによっては、これが大きなボトルネックになっています。 これは、カーネルにトークン内ループを導入するか、トークンの数が多い場合は、標準の行列乗算を実行する前に完全な解凍を実行することで実現できます。 ## **議論と制限** 要約すると、QMoEは、MoEの推論プロセスにおける過剰なメモリオーバーヘッドの問題を解決するためのオープンソースのエンドツーエンドの圧縮および推論フレームワークです。研究者は、SwitchTransformer c2048 のような 1 兆個のパラメーター モデルが、約 20 倍の圧縮率で、パラメーターあたり 1 ビット未満に正確に圧縮できることを初めて実証しました。 そして、このようなモデルの効率的なエンドツーエンドの実行が、単一のコンシューマーグレードのGPUサーバー上で初めて達成されました。しかし、大規模で正確なMoEはごく少数しか公開されていないため、研究対象となるモデルは限られています。さらに、その規模が非常に大きいため、ほとんどのMoEはさまざまなカスタムフレームワークでトレーニングおよび展開されており、さらなる研究のために複雑な手動統合が必要です。それでも、研究者は最大かつ最も正確なMoEのいくつか、特にSwitchTransformerをカバーしました。リソース:
8 3090、1日圧縮兆パラメータラージモデル! 3.2TBは160GBに急落し、圧縮率は最大20倍
記事のソース: New Zhiyuan
GPT-4のアーキテクチャが有名な業界リーダーによって「オープンソース化」されたことで、ハイブリッドエキスパートアーキテクチャ(MoE)が再び研究の焦点となっています。
ただし、より高速で正確なモデルのコストは、膨大な数のパラメーターとそれに伴う高コストです。
たとえば、1兆 6,000 億個のパラメーター SwitchTransformer c2048 モデルを効果的に実行するには、3.2 TB の GPU メモリが必要です。
この問題を解決するために、オーストリア工科大学(ISTA)の研究者は、まったく新しい圧縮および実行フレームワークであるQMoEを提案しました。
特別に設計されたGPUデコードコアを採用することで、QMoEは効率的なエンドツーエンドの圧縮推論を実現し、精度をわずかに低下させるだけで最大20倍の圧縮を実現できます。
具体的には、QMoEは1兆6,000億個のパラメータを持つSwitchTransformer-c2048モデルを1日で160GB未満に圧縮できますが、これはパラメータあたりわずか0.8ビットに相当します。
これにより、4 基の NVIDIA RTX A6000 または 8 基の NVIDIA RTX 3090 GPU で、非圧縮モデルの推論コストの 5% 未満で実行できます。
MoEモデルの量子化
ハイブリッドモデル(MoE)の核となる考え方は、標準のフィードフォワードアーキテクチャと比較して計算コストをほぼ同じに保ちながら、モデルパラメータの数を増やしてネットワークのモデリング機能を向上させることです。
各入力トークンを処理するために呼び出す必要があるのはネットワークのごく一部だけであるため、この設計では、100人または1,000人の「専門家」を活用して、効率的なトレーニングと推論のためのハイパースケールモデルを構築できます。
MoEは、推論速度が同等である場合、精度と学習速度を大幅に向上させることができることが証明されています。 ただし、このようなボリュームは、モデルを実行するために大量のビデオ メモリが必要であることを意味します。
この点で、計算する必要がある中間データは、モデルの実行を慎重に配置することで、小さな部分で制御できます。 これにより、メインストレージがGPUからより安価で高価なCPUメモリにオフロードされます。
具体的には、大きなバッファー B を維持し、Transformer ブロックの密な部分を次のように更新します。
2.対応する高密度層を介して、結果Yが得られます。
トークンのエキスパート割り当てを計算してYに保存します。
Y を CPU に送り返し、B の X を上書きします。
CPU から GPU まで、エキスパート E に割り当てられている B のすべてのトークン (X_E で表される) を取得します。
それらを使用して、圧縮されたエキスパート E を生成します (例: GPTQ を使用)。
X_E から E' までを実行して、Y_E' を取得します。
Y_E' を CPU に送り返し、B の X_E を上書きします。
図 2 に示すように、このプロセスにより、メモリ消費と転送コストが最小限に抑えられ、必要な B のコピーは 1 つだけで、各トークンは各 Transformer ブロックで 2 回だけ読み書きされます。
さらに、研究者らは、重みあたり1ビット未満の圧縮を実現し、推論のためのGPU実行オーバーヘッドを最小限に抑えるために、符号化スキームとCUDAコアを設計しました。
圧縮効果
精度
まず、研究者らは、すべてのSwitchTransformerモデルを2ビットおよび三項精度に量子化し、次に検証損失を評価しました。
128 人のエキスパートの場合、デフォルトのキャリブレーションサンプルサイズは 10K です。 2048 エキスパートの場合、デフォルトのキャリブレーション サンプル サイズは 160K です。 同時に、研究者は0.5倍と2倍のサンプルサイズもテストしました。
結果は、データ依存量子化を使用して、最小の損失(C2048と比較して1.7%)と三元精度での損失のわずかな増加(C2048と比較して6.7%)で2桁モデルを実現できることを示しています。
これは、提案する高度な定量化手法の有効性を証明するだけでなく、極めて低いビット幅の圧縮が大規模なMoEに適していることを示しています。
キャリブレーションデータの<0.01%のみがこれらのサイトからのものですが、圧縮モデルはコア分布とほぼ同じパフォーマンスを維持しています。
キャリブレーションデータの場合、通常、サンプルサイズを大きくするとパフォーマンスがわずかに向上し、三元量子化で最も顕著になります。 しかし、特に2ビットでは、プロセスにノイズもあります。
このテストでは、MoEモジュールのみの圧縮と、モデル全体とそのすべてのメタデータに対する圧縮の両方を考慮しました。
MoE のみの場合、すべてのスケールで >16 倍の圧縮が達成され、これは各パラメータで 1 ビットのストレージ<スペースに相当します。
c2048 では、全体の圧縮率は 19.81 倍で、これはすべての非圧縮の高密度レイヤーを含めてもパラメーターあたり 0.807 ビットに相当し、チェックポイント サイズが 3142 GB から 158.6 GB に減少します。
さらに、次の 2 つの理由により、モデルのサイズとともに圧縮率が増加することがわかります。
(a)自然なスパース性が増加し、研究者はC2048のコーディング辞書を最適化しました。
(b)層が大きいほど、重量分布は独立性に近くなります。
最後に、研究者は、さまざまな量のキャリブレーションデータに対して、単一のA6000 GPUで圧縮モデルを生成するのにかかる時間を評価しました。
その結果、小型モデルでも1時間未満で圧縮でき、c2048でも1日未満で完了できることが示され、QMoEの高効率が確認されました。
large128 から c2048 までは、実行時間の増加は基本的にサイズの違いに比例しますが、後者は 16 倍多くのサンプルを使用します。 これは、エキスパートごとのサンプルサイズは同じままですが、エキスパートのサイズはわずかにしか増加しないためです。
まず、圧縮された行列ベクトル積カーネルと PyTorch 標準の (非圧縮) bfloat16 cuBLAS カーネルを直接 (分離して) 比較します。
図5(左)は、MoEが2つの異なるGPUで行列形状を検出するのにかかる時間を比較したものです。
研究者は貧弱なストレージ性能を使用しましたが、それでも圧縮カーネルの実行に要する時間は、ほぼ理想的なbfloat16ベースラインよりも短くなりました。 特定のマトリックス形状で最大35%高速化。
これらの操作のレイテンシも非常に低く、最小の行列は 0.02 ミリ秒<、最大の行列は 0.05 ミリ秒<かかります。
図 5 (右) に示すように、圧縮されたモデルのエンドツーエンドの実行は、標準 (非圧縮) モデルの実行よりも <5% 遅いだけです。
各レイヤーのタイミングは速くなりますが、エンコーダーが複数のトークンを同じエキスパートにルーティングすることがあるため、速度はわずかに低下します。
現在の実装では、トークンごとに個別の行列ベクトル積を実行しますが、ベースラインはより効率的なジョイント行列乗算を実行します。
アプリケーションによっては、これが大きなボトルネックになっています。 これは、カーネルにトークン内ループを導入するか、トークンの数が多い場合は、標準の行列乗算を実行する前に完全な解凍を実行することで実現できます。
議論と制限
要約すると、QMoEは、MoEの推論プロセスにおける過剰なメモリオーバーヘッドの問題を解決するためのオープンソースのエンドツーエンドの圧縮および推論フレームワークです。
研究者は、SwitchTransformer c2048 のような 1 兆個のパラメーター モデルが、約 20 倍の圧縮率で、パラメーターあたり 1 ビット未満に正確に圧縮できることを初めて実証しました。 そして、このようなモデルの効率的なエンドツーエンドの実行が、単一のコンシューマーグレードのGPUサーバー上で初めて達成されました。
しかし、大規模で正確なMoEはごく少数しか公開されていないため、研究対象となるモデルは限られています。
さらに、その規模が非常に大きいため、ほとんどのMoEはさまざまなカスタムフレームワークでトレーニングおよび展開されており、さらなる研究のために複雑な手動統合が必要です。
それでも、研究者は最大かつ最も正確なMoEのいくつか、特にSwitchTransformerをカバーしました。
リソース: