専門家の混合 (MoE) は、LLM の効率性と精度を向上させるためによく使用される手法です。このアプローチは、複雑なタスクをより小さく管理しやすいサブタスクに分割し、各サブタスクを専門のミニモデルまたは「エキスパート」が処理することによって機能します。 以前、GPT-4 は 8 つのエキスパート モデルで構成される統合システムを使用していることが明らかになりました。最近、Mistral AI は Mixtral 8x7B をリリースしました。これもこのアーキテクチャを採用しており、非常に優れたパフォーマンスを実現しています (ポータル: 磁気リンクが AI サークルを席巻、87GB シードが直接オープンソースの 8x7B MoE モデル)。 OpenAI と Mistral AI からの 2 つの推進の波により、MoE はしばらくの間、オープン人工知能コミュニティで最もホットな話題となりました。 この記事では、MoE の構成要素、トレーニング方法、および推論に MoE を使用する際に考慮すべきトレードオフについて説明します。 ハイブリッド エキスパート アーキテクチャは MoE と呼ばれます。その特徴は次のとおりです。
Mixed of Experts (MoE) とは何ですか?モデルのサイズは、その品質を決定する最も重要な要素の 1 つです。予算が固定されている場合、より少ないステップでより大きなモデルをトレーニングする方が、より多くのステップでより小さなモデルをトレーニングするよりも効果的です。 MoE は、より少ない計算オーバーヘッドでモデルを事前トレーニングできるため、高密度モデルと同じ計算オーバーヘッドでモデルまたはデータセットの規模を大幅に拡大できます。特に、事前トレーニング中、MoE モデルは高密度モデルと同じパフォーマンスに早く到達できます。 では、MoE とは何でしょうか? Transformer モデルの観点から見ると、MoE は次の 2 つの主要要素で構成されます。
スイッチトランスフォーマーの MoE レイヤー (https://arxiv.org/abs/2101.03961) つまり、MoE では、トランスフォーマー内の各 FFN レイヤーが、ゲーティング ネットワークと一定数のエキスパート ネットワークで構成される MoE レイヤーに置き換えられます。 MoE は、高密度モデルと比較して効率的な事前トレーニングや高速な推論などの利点がありますが、いくつかの課題にも直面しています。
MoE の概要を紹介した後、MoE の開発の軌跡を見てみましょう。 文部科学省の簡単な歴史MoE は、1991 年の論文「Adaptive Mixture of Local Experts」(https://www.cs.toronto.edu/~hinton/absps/jjnh91.pdf) から生まれました。この論文のアイデアは、それぞれがトレーニング セットの異なるサブセットを処理する異なるネットワークで構成されたシステムの監視手順を提供するアンサンブル メソッドに似ています。それぞれのネットワークまたはエキスパートは、入力空間の異なる領域に特化しています。専門家の選択方法については、ゲーティング ネットワークが各専門家ネットワークの重みを決定します。トレーニング プロセスでは、エキスパート ネットワークとゲーティング ネットワークの両方がトレーニングされます。 2010年から2015年にかけて、文部科学省のその後の進歩に貢献した2つの研究分野が開発されました。
これらの研究は、研究者が NLP のコンテキストで専門家の混合モデルを研究する動機となりました。具体的には、Google の Shazeer、Geoffrey Hinton、Jeff Dean、Chuck Norris は、スパース ネットワークを導入することでこのアイデアを 137B LSTM に拡張し、大規模でも非常に高速な推論速度を維持しました。この研究は機械翻訳に重点を置いていますが、通信コストが高い、トレーニングが不安定であるなどの欠点もあります。 論文「とんでもなく大きなニューラルネットワーク」の MoE レイヤー MoE は、オープンソースの 1.6T パラメータ Switch Transformer など、数兆個のパラメータを持つモデルをトレーニングできます。コンピュータビジョンの分野でもMoEが検討されていますが、ここではNLPの分野に焦点を当てます。 スパース化とは何ですか?スパース化という用語は、条件付きコンピューティングの概念に由来します。密なモデルではすべてのパラメータが作用しますが、疎なモデルではシステム全体の特定の部分のみを作用させることができます。 前述のように、Shazeer は機械翻訳における MoE を調査しました。条件付き計算 (ネットワークの特定の部分のみがアクティブ) により、計算量を増やすことなくモデルをスケールアップできるため、MoE の各レイヤーには数千のエキスパート ネットワークを含めることができます。 しかし、この設計にはいくつかの課題があります。たとえば、バッチ サイズを増やすとモデルのパフォーマンスが向上するのが通常ですが、MOE では、データがアクティベーション状態の専門家ネットワークを通過するにつれてバッチ サイズが縮小します。たとえば、バッチ サイズが 10 トークンの場合、そのうち 5 つは 1 つのエキスパート ネットワークに配置され、残りの 5 つは 5 つの異なるエキスパート ネットワークに配置される可能性があります。その結果、バッチ サイズが不均一になり、十分に活用されなくなります。 この問題を解決するにはどうすればいいでしょうか? 1 つのアプローチは、学習したゲーティング ネットワーク (G) に入力情報をどのエキスパート ネットワーク (E) に伝えるかを決定させることです。 この場合、専門家のネットワーク全体が、重み付けされた乗算方式ですべての入力を処理します。しかし、G が 0 の場合はどうなるでしょうか?この場合、対応するエキスパート ネットワークの計算を実行する必要がないため、計算のオーバーヘッドが節約されます。では、典型的なゲーティング機能はどのようなものでしょうか?最も伝統的な設定では、ソフトマックス関数を使用した単純なネットワークが使用されます。ネットワークは、入力データをどのエキスパートに渡すかを学習します。 Shazeer 氏の研究では、Top-K ノイズ ゲーティングなどの他のゲーティング メカニズムも調査されました。このゲーティング方法では、いくらかの(調整可能な)ノイズが導入され、上位の K が保持されます。つまり: 1. ノイズを加える 2. 最初のkだけを選択する 3. ソフトマックス活性化を使用します。 このスパース化操作には、いくつか興味深い特性があります。研究者らは、十分に小さい k (たとえば、1 または 2) を使用することで、多くのエキスパート ネットワークがアクティブ化される設定よりもトレーニングと推論の速度が速くなることを発見しました。では、top=1 のときにエキスパート ネットワークをそのまま維持しないのはなぜでしょうか?研究者らは当初、ゲーティング ネットワークが異なる専門家にルーティングする方法を学習するには、複数の専門家にルーティングする必要があるため、少なくとも 2 人の専門家を選択する必要があるという仮説を立てました。この決定については、スイッチトランスフォーマーのセクションで再度検討します。 なぜノイズを追加するのですか?これは負荷分散のためです。 MoEトークンの負荷分散前述したように、すべてのトークンが少数の人気のあるエキスパート ネットワークにのみ送信されると、トレーニングの効率が低下します。通常、MoE トレーニングでは、ゲーティング ネットワークは同じ少数のエキスパート ネットワークを頻繁にアクティブ化することに収束します。トレーニングが進むにつれて、好ましいエキスパート ネットワークがより速くトレーニングされ、選択される可能性が高くなるため、この傾向はより顕著になります。これを緩和するために、すべての専門家に同等の重要性を与えることを奨励する補助損失を追加することができます。この損失により、すべての専門家がほぼ同じ数のトレーニング サンプルを受け取ることが保証されます。この記事の後半では、エキスパートが処理できるトークン数のしきい値であるエキスパート容量の概念について説明します。変圧器では、補助損失は aux_loss パラメータを介して公開されます。 MoEとトランスフォーマーTransformer は、パラメータの数を増やすことでパフォーマンスが向上することを示す非常にわかりやすい例であるため、Google が GShard でこの考え方に従い、Transformer のパラメータの数を 6000 億以上に拡張するのは当然のことです。 GShard は、エンコーダーとデコーダーの両方でトップ 2 ゲーティング技術を使用し、FFN レイヤーを MoE レイヤーに置き換えます。次の図はエンコーダーの一部を示しています。 GShard の MoE Transformer エンコーダー この設定は、大規模なコンピューティングに非常に有益です。複数のデバイスにスケーリングする場合、MoE レイヤーはデバイス間で共有され、他のすべてのレイヤーは複製されます。詳細については、以下の「効率的なトレーニング MoE」でさらに説明します。 バランスの取れた負荷とスケール効率を維持するために、GShard の作成者は、前のセクションで説明したのと同様の補助損失を採用することに加えて、いくつかの改善を導入しました。
GShard の貢献は、MoE の並列計算モードを決定することです。推論中は、一部のエキスパート ネットワークのみがトリガーされることに注意してください。同時に、すべてのトークンに適用されるセルフアテンションメカニズムなど、データの共有を必要とするステップがいくつかあります。そのため、8 人のエキスパートで構成される 47B モデルの場合、GShard は 12B の高密度モデルで計算できます。 top-2 を使用する場合は、14B パラメータが必要です。しかし、アテンション操作が共有されることを考慮すると、実際に使用されるパラメータの数は 12B になります。 スイッチトランスMoE は有望ではあるものの、トレーニングと微調整の不安定性に依然として悩まされています。 Switch Transformer (https://arxiv.org/abs/2101.03961) の出現は大きな意義があります。著者らは、Hugging Face (https://huggingface.co/google/switch-c-2048) で 2048 人の専門家による 1.6 兆のパラメータ モデルも公開しました。 T5-XXLと比較すると、Switch Transformerの事前トレーニング速度が4倍に向上します。 スイッチトランスフォーマー論文のスイッチトランスフォーマー層 著者らが GShard で FFN レイヤーを MoE レイヤーに置き換えたのと同様に、Switch Transformer の論文では、2 つの入力 (2 つの異なるトークン) を受け取り、4 つのエキスパート ネットワークを持つ Switch Transformer レイヤーが提案されました。 少なくとも 2 つのエキスパート ネットワークを使用するという当初のアイデアとは対照的に、Switch Transformers は単純化された単一のエキスパート戦略を採用しています。この方法の効果は次のとおりです。
Switch Transformer では、エキスパート容量の概念も探求します。 上記で推奨されている容量計算方法は、バッチ サイズ内のトークンの数をエキスパートに均等に分配することです。 1 より大きい容量係数を使用すると、トークンのバランスが完全に取れていない場合にバッファが提供されます。容量を増やすとデバイス間の通信コストが増加するため、トレードオフに注意する必要があります。特に低い容量係数 (1 ~ 1.25) では、スイッチトランスフォーマーのパフォーマンスが特に優れています。 Switch Transformer の作成者は、この章で説明した負荷分散損失についても再検討し、簡素化しました。交換されたレイヤーごとに、トレーニング中に補助損失がモデル全体の損失に追加されます。この損失により、モデルは均一なルーティングを優先するようになり、ハイパーパラメータを使用して重み付けできます。 Switch Transformer の作成者は、エキスパートのトレーニングには bfloat16 パラメータ精度を使用し、他の計算には完全な精度を使用するなど、選択的な精度の実験も行いました。精度を低くすると、プロセッサ間の通信コスト、計算コスト、テンソルの保存に使用されるメモリを削減できます。最初の実験では、エキスパート ネットワークとゲーティング ネットワークの両方が bfloat16 を使用してトレーニングされましたが、トレーニング結果は安定していませんでした。これは主に、計算にルーティング ネットワークが関与しているためです。ルーティング ネットワークは指数関数であるため、より高い精度が非常に重要です。不安定性を軽減するために、ルーティングでも完全な精度が使用されます。 選択的精度を使用すると品質が低下しず、モデルのトレーニングが速くなります。 微調整部分では、スイッチトランスフォーマーはエンコーダー/デコーダー設定を使用して、T5 を MoE にマッピングします。 GLaM (https://arxiv.org/abs/2112.06905) は、GPT-3 の品質に匹敵するモデルを 3 分の 1 の計算コストでトレーニングし、モデルの規模を拡大する方法を研究しています。 GLaM の著者らの研究は、微調整ではなく、純粋なデコーダー モデルと、少数ショットおよびゼロ ショットの評価結果に焦点を当てています。彼らはトップ 2 ルーティングとより大きな容量係数を使用しました。さらに、彼らは、使用したいコンピューティングの量に応じてトレーニングと検証中に変更できるメトリックとして、容量係数を調査しました。 Z損失損失関数に基づくルーティングネットワークの安定したトレーニング上で説明したバランスの喪失は不安定性の問題につながる可能性があります。しかし、品質を犠牲にしてスパース モデルを安定化する方法は数多くあります。たとえば、ドロップアウトを導入すると安定性は向上しますが、モデルのパフォーマンス品質が犠牲になります。一方、乗法コンポーネントを追加すると、モデルのパフォーマンス品質は向上しますが、安定性は低下します。 ST-MoE (https://arxiv.org/abs/2202.08906) で導入されたルーター z 損失は、ゲーティング ネットワークに入る大きな対数値にペナルティを課すことで、品質を低下させることなくトレーニングの安定性を大幅に向上させます。この損失により値が小さくなるため、丸め誤差が減少し、ゲーティングの指数関数に大きな影響を与える可能性があります。 専門家ネットワークは何を学ぶことができるのでしょうか?ST-MoE の著者の観察によると、エンコーディング エキスパート ネットワークはグループ トークンまたは浅い概念に重点を置いています。たとえば、句読点の専門家、固有名詞の専門家などです。一方、デコード エキスパート ネットワークはそれほど専門的ではありません。著者らも多言語環境で訓練を受けました。想像に反して、各エキスパート ネットワークは 1 つの言語に精通しています。トークンはルーティングされ、負荷分散されるため、エキスパート ネットワークは 1 つの言語に特化しているわけではありません。 さまざまなトークン グループがどの専門家に送信されたかを示す ST-MoE 論文の表。 専門家数の増加が事前トレーニングに与える影響エキスパートの数が増えるほど、サンプリング効率が高くなり、速度が速くなりますが、リターンも減少し (特に 256 または 512 のオーダー以降)、推論に必要なビデオ メモリも増加します。 Switch Transformers で研究された大規模な特性は、レイヤーごとに 2 人、4 人、または 8 人の専門家がいる場合でも、小規模でも一貫しています。 MoEの微調整Mixtral はトランスフォーマーのバージョン 4.36.0 をサポートしています。 pip install "transformers==4.36.0 --upgrade を使用して更新します 密なモデルと疎なモデルのオーバーフィッティングのダイナミクスは非常に異なります。スパース モデルは過剰適合になりやすいため、エキスパート自体の中でより高い正規化を探索できます (たとえば、密なレイヤーの場合は 1 つのドロップアウト、スパース レイヤーの場合は別のより高いドロップアウト)。 もう一つの決定は、微調整に補助損失を使用するかどうかです。 ST-MoE の作者は補助損失をオフにしてみましたが、最大 11% のトークンが破棄されても品質に大きな影響はないことがわかりました。トークンドロップは、過剰適合を防ぐのに役立つ正規化の一種である可能性があります。 Switch Transformer の著者は、事前トレーニングの難しさが固定されている場合、スパース モデルはダウンストリーム タスク、特に SuperGLUE などの推論を多用するタスクでは、密なモデルよりもパフォーマンスが低下することを観察しました。一方、TriviaQA などの知識集約型コーパスでは、スパース モデルのパフォーマンスは驚くほど優れています。著者らはまた、専門家が微調整にあまり貢献していないことも観察した。一般化の問題に関するもう 1 つの観察結果は、モデルが小規模なタスクではパフォーマンスが低いが、大規模なタスクではパフォーマンスが高いことです。 小さなタスク (左) では、明らかな過剰適合が見られ、スパース モデルは検証セットでパフォーマンスが大幅に低下しています。大規模なタスク (右) では、MoE のパフォーマンスは非常に優れています。 ST-MoE 論文からの画像。 すべての非エキスパート重みを固定しようとすると、パフォーマンスが大幅に低下しましたが、MoE レイヤーがネットワークの大部分を占めるため、これは予想どおりです。逆のアプローチ、つまり MoE レイヤーのパラメータのみを固定してみると、すべてのパラメータを更新した場合とほぼ同じ結果が得られることがわかります。この発見は、微調整を高速化し、メモリ使用量を削減するのに役立ちます。 MoEレイヤーのみをフリーズすることで、品質を維持しながらトレーニングを高速化できます。この図はST-MoEの論文からの抜粋です。 スパース化された MoE を微調整する際に考慮すべき最後の問題は、異なる MoE には異なる微調整ハイパーパラメータがあるということです。たとえば、スパース モデルは、バッチ サイズが小さく、学習率が高いほどメリットが得られる傾向があります。 スパース モデルの微調整品質は、学習率の増加とバッチ サイズの減少によって向上します。この図はST-MoEの論文からの抜粋です。 研究者たちは MoE を微調整する作業を続けてきたが、その過程は紆余曲折に満ちていた。最近の論文「MoEs Meets Instruction Tuning」では、次のような実験が行われました。
論文では、著者らが MoE と T5 を微調整したところ、T5 の同等のシミュレーション出力が向上しました。著者らが Flan T5 と MoE を微調整したところ、MoE のパフォーマンスが大幅に向上しました。さらに、MoE に対する Flan-MoE の改善は、T5 に対する Flan T5 の改善よりも大きく、これは、密なモデルよりも MoE が命令チューニングからより多くの利益を得る可能性があることを示しています。 MoE は、より多くのミッションを持つことでより多くの利益を得るでしょう。補助損失関数をオフにすることを提案する以前の結論とは反対に、損失関数は実際には過剰適合を防ぎます。 密なモデルと比較すると、スパース モデルは命令のチューニングからより多くのメリットを得られます。論文「MoEs Meets Instruction Tuning」からの画像 疎な MoE をいつ使用し、密な MoE をいつ使用するのでしょうか?エキスパート モデルは、複数のマシンを使用する高スループットのシナリオに適しています。事前トレーニングのコンピューティング予算が固定されている場合、スパース モデルがより理想的になります。ビデオ メモリが制限された低スループットのシナリオでは、高密度モデルの方が適しています。 注意: スパース モデルと密なモデルのパラメータの数を直接比較することはできません。それらが表す意味が明らかに異なるためです。 効率的なトレーニング MoE初期の MoE 作業では、MoE レイヤーをブランチとして設定しましたが、GPU がこの目的向けに設計されていなかったためモデルの計算が遅くなり、デバイスが他のデバイスに情報を送信する必要があったためネットワーク帯域幅がボトルネックになりました。このセクションでは、これらのモデルの事前トレーニングと推論をより実用的にするための既存の作業について説明します。 並列コンピューティング 並列コンピューティングの種類:
エキスパート並列モードでは、エキスパートが異なるワークステーションに配置され、各ワークステーションが異なるバッチのトレーニング サンプルを収集します。非 MoE レイヤーの場合、エキスパート並列処理はデータ並列処理と同じように動作します。 MoE レイヤーの場合、シーケンス内のトークンは、必要なエキスパートがいるワークステーションに送信されます。 Switch Transformers の論文からのイラスト。さまざまな並列化手法を使用して、データとモデルがコア間で分割される様子を示しています。 容量係数と通信コスト 容量係数 (CF) を増やすとモデルの品質は向上しますが、通信コストとメモリのオーバーヘッドが増加します。全対全通信が遅い場合は、より小さい容量係数を使用する方がよいでしょう。参考までに、次の構成を示します。容量係数が 1.25 のトップ 2 ルーティング メカニズムを使用し、コアごとに 1 つのエキスパートを予約します。検証プロセス中に、容量係数を変更して計算量を削減できます。 サーバ mistralai/Mixtral-8x7B-Instruct-v0.1 を推論端末にデプロイできます。 MoE の大きな欠点の 1 つは、パラメーターが多いことです。ローカルユースケースでは、より小さなモデルを使用することをお勧めします。オンプレミス展開に役立つテクノロジーをいくつか紹介します。
その他の効果的なトレーニング方法 FasterMoE(2022年3月に提案)は、効率的な分散システムにおけるMoEのパフォーマンスと、さまざまな並列化戦略の理論上の限界を分析します。また、エキスパートの人気度を傾ける手法、レイテンシを削減するためのきめ細かい通信スケジューリング、およびレイテンシが最も低いエキスパートを選択するためのトポロジを考慮したゲーティングも分析し、17倍の高速化を実現します。 Megablocks (https://arxiv.org/abs/2211.15841) は、MoE の動的な問題を処理し、効率的なスパース事前トレーニングを探索できる新しい GPU カーネルをリリースしました。この論文では、トークンを破棄しないことを推奨しており、効率的なトークン マッピング テクノロジを実装することで速度が大幅に向上します。秘訣は、従来の MoE では、すべてのエキスパートが同じ形状で同じ数のトークンを持っていると想定して、バッチ行列乗算を使用することです。対照的に、Megablocks は、不均衡な分布に適応できるブロックスパース操作として MoE レイヤーを表します。 さまざまなサイズのエキスパートとトークンの数に応じたブロック疎行列乗算。 MegaBlocks の論文から引用した画像。 オープンソースのMoEアルゴリズム現在の MoE オープンソース プロジェクト:
公開された MoE:
今後の展望探索する価値のある興味深いエリアをいくつか紹介します。
|
<<: 世界初の電動ロボットが「宙返り」を練習し、ボストン・ダイナミクス・アトラスに挑戦!コーヒーアートも作れます。
アルゴリズム1: クイックソートアルゴリズムクイックソートは、Tony Hall によって開発された...
[[273076]]ファーウェイは8月8日、世界産業展望GIV@2025を発表し、次のように予測した...
上海市経済情報化委員会は4月16日、「上海市工業企業の業務・生産再開に関する防疫対策ガイドライン(第...
人工知能分野の発展に関するニュースを追う際の課題の 1 つは、「AI」という用語が、無関係な 2 つ...
原作者: エベネザー・ドン元のアドレス: https://blog.logrocket.com/in...
北京時間7月23日、テスラのCEOイーロン・マスク氏は水曜日、人工知能(AI)の将来についての懸念を...
機械学習は、車内外のセンサーからのデータを融合して、運転者の状態を評価し、運転シナリオを分類するため...
イーロン・マスク氏の人工知能企業xAIは最近、GroKと呼ばれる人工知能チャットボットをリリースした...
ChatGLM-6Bは3月のリリース以来、AIコミュニティで人気を博し、GitHubで29.8kの...