Yolo 深圳
深セン
今すぐ参加
用語集

Mixture of Experts (MoE)

Mixture of Experts(MoE)をご覧ください。NLP、ビジョン、ロボティクスなどのスケーラブルで効率的なモデルを可能にする画期的なAIアーキテクチャです。

専門家混合モデル(MoE)は、計算コストを比例的に増加させることなくモデルを大規模に拡張可能にする、深層学習における特殊なアーキテクチャ設計である。標準的な密結合ニューラルネットワーク(NN)では全てのパラメータが全入力に対して活性化するのに対し、MoEモデルは条件付き計算と呼ばれる手法を採用する。 この手法では、入力データの特性に基づいてネットワーク構成要素の小さな部分集合(「エキスパート」と呼ばれる)のみを動的に活性化します。これによりMoEアーキテクチャは、数兆ものパラメータを保持しながらも、はるかに小規模なシステムの推論遅延と処理速度を維持できる強力な基盤モデルの構築を可能にします。

MoEの核心的メカニズム

エキスパート混合モデル(MoE)の効率性は、標準的な密結合層を疎なMoE層で置き換えることに由来する。この層は通常、情報を効率的に処理するために連携して動作する二つの主要要素で構成される:

  • エキスパート:これらは独立したサブネットワークであり、多くの場合単純なフィードフォワードニューラルネットワーク(FFN)である。 各エキスパートはデータの異なる側面を処理することに特化している。自然言語処理(NLP)の文脈では、あるエキスパートは文法の処理に熟達し、別のエキスパートは事実の検索やコード構文に焦点を当てる。
  • ゲートネットワーク(ルーター):ルーターはデータのトラフィックコントローラーとして機能する。 入力(画像パッチやテキストトークンなど)がレイヤーに入ると、ルーターはソフトマックス関数を用いて確率スコアを計算します。その後、その入力をスコアが最も高い「上位K専門家」(通常は1~2名)のみに振り分けます。これにより、モデルは最も関連性の高いパラメータにのみエネルギーを費やすことが保証されます。

モデルアンサンブルとの区別

両概念とも複数のサブモデルを使用するが、エキスパート混合モデルとモデルアンサンブルを区別することが重要である。従来のアンサンブルでは、グループ内の各モデルが同一入力を処理し、精度を最大化するために結果を平均化または投票する。この手法では、モデル数に比例して計算コストが直線的に増加する。

逆に、MoEは単一の統合モデルであり、異なる入力が異なる経路を通過する。疎なMoEは、特定の推論ステップにおいて総パラメータのごく一部のみを実行することで、スケーラビリティと効率性を追求する。これにより、高密度アンサンブルに伴う膨大なコストを伴わずに、膨大な量の学習データを用いたトレーニングが可能となる。

実際のアプリケーション

MoEアーキテクチャは、特にマルチタスク能力と広範な知識保持を必要とするシナリオにおいて、現代の高性能AIの基盤技術となっている。

  1. 多言語言語モデル: Mistral AIのMixtral 8x7Bのような主要モデルは、MoEを活用して多様な言語タスクに優れています。 トークンを専門のエキスパートにルーティングすることで、これらのシステムは単一のモデル構造内で翻訳、要約、コーディングタスクを処理でき、 同様の有効パラメータ数を持つ高密度モデルを上回る性能を発揮します。
  2. スケーラブルなコンピュータビジョン: コンピュータビジョン(CV)の分野では、研究者がMoEを適用して大規模なビジョンバックボーンを構築している。Vision MoE(V-MoE)アーキテクチャは、専門家が異なる視覚的特徴の認識に特化することで、 ImageNetなどのベンチマークにおける性能を効果的に拡張できることを実証している。 ImageNetのようなベンチマークで効果的にスケーリングできることを示している。一方、YOLO26のような高度に最適化された高密度モデルは、予測可能なメモリ使用量のためリアルタイムエッジ検出の標準であり続けているが、MoE研究はサーバーサイドの視覚理解の限界を押し広げ続けている。

ルーティング・ロジックの例

ゲートネットワークが専門家をどのように選択するかを理解するには、この簡略化された PyTorch 例を考えてみましょう。これは、与えられた入力に対して最も関連性の高いエキスパートを選択するルーティングメカニズムを示しています。

import torch
import torch.nn as nn

# A simple router deciding between 4 experts for input dimension of 10
num_experts = 4
input_dim = 10
router = nn.Linear(input_dim, num_experts)

# Batch of 2 inputs
input_data = torch.randn(2, input_dim)

# Calculate scores and select the top-1 expert for each input
logits = router(input_data)
probs = torch.softmax(logits, dim=-1)
weights, indices = torch.topk(probs, k=1, dim=-1)

print(f"Selected Expert Indices: {indices.flatten().tolist()}")

訓練と展開における課題

MoEモデルは利点がある一方で、トレーニングプロセスに特有の課題を提示する。主要な問題は負荷分散であり、ルーターが少数の「人気のある」エキスパートを優先し他のエキスパートを無視することで、余剰容量が発生する可能性がある。これを緩和するため、研究者は補助損失関数を用いて全エキスパートの均等な使用を促進する。

さらに、これらの大規模モデルを展開するには高度なハードウェア構成が必要です。総パラメータ数が多いため(アクティブなパラメータが少ない場合でも)、モデルは多くの場合膨大なVRAMを必要とし、複数のGPUにまたがる分散トレーニングが不可欠となります。Microsoft フレームワークは、 これらのシステムを効率的に訓練するために必要な並列処理を管理するのに役立ちます。 このような複雑なアーキテクチャ向けのデータセットと訓練ワークフローを管理するには、 Ultralytics ツールが、 ロギング、可視化、デプロイのための不可欠なインフラストラクチャを提供します。

Ultralytics コミュニティに参加する

AIの未来を共に切り開きましょう。グローバルなイノベーターと繋がり、協力し、成長を。

今すぐ参加