MoE
TL;DR
同じ数のパラメータを持つモデルと比較して推論が高速になります
すべてのエキスパートがメモリにロードされるため、高 VRAM が必要
微調整では多くの課題に直面しているが、MoE の命令調整に関する最近の研究は有望である
https://gyazo.com/c40da68268e06fabd5040fa03d46a2f8
DeepSeek-R1によって再び注目を集めた技術…だがそもそもGPT-4(初代)はMoEである可能性が指摘されていたりと、案外LLM分野でもそれなりに頻出している。 1. 基本的な実装例
2. 学習しやすい実装例
3. 主要なコンポーネント
1. エキスパートモデル
- 個々の専門家として機能する単純なニューラルネットワーク
- 同じ入出力インターフェースを持つ
2. ゲーティングネットワーク
- 入力に基づいてエキスパートの重みを決定
- 通常は単層のニューラルネットワーク
3. 統合メカニズム
- エキスパートの出力を重み付けして結合
- 最終的な予測を生成
1. 負荷分散
- エキスパート間で入力が均等に分散されるように設計
2. トレーニング安定性
- 適切な損失関数の選択
- バッチサイズの調整
3.メモリ効率
- 必要に応じたTop-k選択の実装
- 効率的なバッチ処理
これらの実装例を参考に、まずは基本的な構造を理解し、その後必要に応じて機能を追加していくアプローチが推奨されます。
どうやら(非常にシンプルな実装の場合)タスクに応じた比率で専門家モデル同士を選択・マージし、その結果を出力することで精度を得る考え方のようだmorisoba65536.icon
マージ、も厳密には違うようで重みつけして出力足し合わせる、が正解のようだ……(MoE何もわからない)morisoba65536.icon
ふつうに勘違いしてたが、ゲーティングネットワークの所(ルーティングとか色々な呼ばれ方をする)は、「MoEで同じアーキテクチャに縛られるモデル(llm)ではない」
極論すれば「特定の単語(トークン)が来たらこっちのモデル」見たいなシンプルな仕組みでも良い、基本的にはシンプルなTransFormerアーキテクチャの分類器を使うことが多いようだ 構造的に「学習済みモデル」をベースにしつつ「共用部」を学習対象外にしたLoraでチューニング→独立したLora適用専門家モデルを作る→ゲーティングネットワークを学習、とすればかなり省資源に学習できると思われる…(私の理解が間違ってなければ)
ゲーティングネットワークについては長くなってきたので別記事に分離