Ultralytics YOLO27: ウェイトリストに登録する
YOLOのライセンス
Ultralytics用語集に戻る

Mixture of Experts (MoE)

エキスパート混合(MoE)は、各トークンを少数のエキスパートサブネットワークに振り分けるため、モデル全体のパラメーター数を、トークンあたりの計算量よりもはるかに速く増やせます。

Mixture of Experts(MoE)は、モデルの一部をエキスパートと呼ばれる多数の並列サブネットワークに分割し、学習可能な小さなルーターで各入力を少数のエキスパートだけに振り分けるニューラルネットワークアーキテクチャです。各トークンや画像パッチが通過するのはエキスパートの一部だけなので、入力ごとの計算量に比べて総パラメーター数をはるかに大きくできます。Mixtral 8x7Bのパラメーター数は470億ですが、各トークンで使用するのは130億です。DeepSeek-V3は6,710億のうち370億を活性化します。現在の大規模言語モデル(LLM)で使われるルーター制御の疎なMoE層は、Googleが2017年に発表した疎なゲート付きMoE層を基盤としており、この層は積層されたLSTM層の間で1,370億パラメーターに到達しました。

MoE層の仕組み#

Transformerでは、MoE層は通常、各セルフアテンションブロックの後に続くフィードフォワードネットワーク(FFN)を置き換えます。この層は、同じ形状のN個のエキスパートFFNとルーターで構成されます。ルーターは、各トークンについてすべてのエキスパートをスコア付けする単一の線形層です。トークンはスコア上位k個のエキスパートに送られ、それらの出力はルーターの正規化スコアで重み付けして合算されます。残りのエキスパートは、そのトークンに対する処理を行いません。Mixtralは各層で8個中2個のエキスパートを選択し、DeepSeek-V3はルーティング対象となる256個の小型エキスパートから8個を選び、さらにすべてのトークンを共有エキスパート1個にも通します。ルーティングは各層で独立して行われるため、トークンは深さごとに異なるエキスパートを使えます。また、同じ文中の2つのトークンが同じ層で異なる経路を通ることもあります。

Mixtralのエキスパートはトピックごとに特化していません。論文の著者らは、生物学や哲学などの主題にエキスパートが明確に割り当てられていないことを確認しました。ルーティングはむしろ構文に従っており、Pythonコードのselfのようなトークンやインデントのトークンは、同じエキスパートに振り分けられる傾向がありました。

負荷分散とエキスパートの容量#

初期化直後のルーターは少数のエキスパートを優先しがちです。そのエキスパートはより速く学習してさらに多くのトークンを集め、残りのエキスパートは使われないままになります。次の6トークンの例では、8個のエキスパートを持つtop-2層を通してルーティングし、各エキスパートに届くトークン数を数えます。

import torch

torch.manual_seed(0)
dim, num_experts, top_k = 32, 8, 2
experts = torch.nn.ModuleList(
    torch.nn.Sequential(torch.nn.Linear(dim, 4 * dim), torch.nn.GELU(), torch.nn.Linear(4 * dim, dim))
    for _ in range(num_experts)
)
router = torch.nn.Linear(dim, num_experts, bias=False)
tokens = torch.randn(6, dim)

# ルーターは各トークンについて上位2つのエキスパートのスコアを保持し、softmaxを適用して混合重みに変換します
scores, chosen = router(tokens).topk(top_k, dim=-1)
weights = scores.softmax(dim=-1)
out = torch.zeros_like(tokens)
for e, expert in enumerate(experts):
    token_idx, slot = (chosen == e).nonzero(as_tuple=True)  # エキスパートeを選んだトークン
    out[token_idx] += weights[token_idx, slot, None] * expert(tokens[token_idx])

print("Experts per token:", chosen.tolist())
print("Tokens per expert:", torch.bincount(chosen.flatten(), minlength=num_experts).tolist())

エキスパートの組[[3, 6], [7, 6], [0, 7], [3, 1], [6, 1], [2, 3]]と、エキスパートごとのカウント[1, 2, 1, 3, 0, 0, 3, 2]が出力されます。エキスパート3と6はそれぞれ3つのトークンを処理する一方、エキスパート4と5にはトークンが届きません。また、各トークンが通るのは8個のエキスパートネットワークのうち2個だけです。Switch Transformerは各トークンを単一のエキスパートに振り分け、1.6兆パラメーターに拡張されました。また、トークンとルーターの確率がエキスパート間で均等に分布すると最小になる補助的な損失項を追加しており、後続の多くのMoEモデルも同様の項を使用しています。DeepSeek-V3は補助損失を使わず、トレーニング中にルーティングスコアのエキスパートごとのバイアスを上下に調整します。トレーニングシステムでは、1バッチあたりにエキスパートが受け入れるトークン数(容量)にも上限を設けます。上限を超えたトークンはその層のエキスパートをスキップし、残差接続を通って先に進みます。

  • モデルアンサンブル: 複数の独立したモデルがそれぞれすべての入力を処理し、予測を平均または投票で統合するため、モデルを追加するたびに計算量が増えます。MoEはエンドツーエンドで学習する単一のネットワークであり、ルーターがトークンごとに異なる経路を選択します。
  • モデルルーティング: リクエストごとに1つのモデル全体をルーターが選択します。たとえば、簡単な質問には小型モデル、難しい質問には大型モデルを使います。MoEのルーティングは、単一モデル内の各MoE層でトークン単位に行われます。
  • Mixture of Depths(MoD): ルーターが一部のトークンにブロック全体をスキップさせるため、トークンごとに計算量が変わります。MoEと組み合わせて使われることもよくあります。
  • Mixture of Agents(MoA): 複数の独立したLLMがプロンプトに回答し、その後のLLMの層が回答を統合して改善します。重みを共有しないプロンプト処理パイプラインです。

言語モデルとビジョンモデルにおけるMoE#

DeepSeek-V3、Llama 4、Qwen3のMoE版、OpenAIのgpt-ossなど、最大規模のオープンウェイトLLMの多くはMoE層を使用しています。コンピュータービジョンでは、Vision MoE(V-MoE)がVision Transformer(ViT)の一部のFFN層をエキスパートに置き換え、画像パッチごとにルーティングしました。その結果、推論時の計算量を半分に抑えながら最先端の精度を達成し、150億パラメーター版はImageNetで90.35%のtop-1精度に到達しました。

メモリとサービング#

MoEが削減するのは計算量であり、メモリではありません。各トークンが使うエキスパートは少数でも、すべてのエキスパートをロードする必要があります。そのため、Mixtralには470億パラメーターのモデルに相当するメモリが必要ですが、各トークンの処理量は130億パラメーターのモデル相当です。したがって、大規模なMoEモデルはエキスパート並列化を用いてGPU間に分散し、各GPUにエキスパートの一部を配置します。all-to-all通信で各トークンを選択されたエキスパートのあるデバイスに送り、処理後に戻します。DeepSpeed-MoEなどのフレームワークは、トレーニング向けにエキスパート並列化をデータ並列化やテンソル並列化と組み合わせます。エッジビジョンモデルは密な構成を採用します。YOLO26はすべての画像に対してすべての層を実行するため、メモリ使用量と画像ごとの計算量は入力によらず一定です。

ソリューションを見る

スポーツにおけるコンピュータービジョン

スポーツにおけるコンピュータービジョン

Ultralytics YOLOが、選手やボールの追跡、パフォーマンス分析、コーチングへの知見、アスリートのリハビリを通じて、スポーツビジョンをどのように支えるかをご紹介します。
詳しく見る
航空画像向けコンピュータービジョン

航空画像向けコンピュータービジョン

Ultralytics YOLOを使用して、ドローンや航空画像をリアルタイムの知見に変換し、農業、水産養殖、自然保護、地理空間分析に活用できます。
詳しく見る
航空宇宙分野のコンピュータービジョン

航空宇宙分野のコンピュータービジョン

Ultralytics YOLOを活用して航空宇宙分野でコンピュータビジョンを導入し、航空機検査、滑走路上のFOD検出、空港の地上業務、複合材の欠陥検出に活用できます。
詳しく見る
セキュリティ分野のコンピュータービジョン

セキュリティ分野のコンピュータービジョン

Ultralytics YOLOモデルであらゆる施設を保護しましょう。ビジョンAIは、周辺監視、脅威検知、ナンバープレート認識、職場の安全管理を支援します。
詳しく見る
ロボティクス分野のコンピュータービジョン

ロボティクス分野のコンピュータービジョン

Ultralytics YOLOモデルで、よりスマートなマシンを実現しましょう。ロボティクスにおけるビジョンAIは、自律ナビゲーション、認識、物体追跡、リアルタイム制御を支援します。
詳しく見る
物流におけるコンピュータービジョン

物流におけるコンピュータービジョン

Ultralytics YOLOモデルで物流を効率化しましょう。ビジョンAIにより、荷物検査、仕分け、車両追跡、倉庫のリアルタイム安全監視を実現します。
詳しく見る
小売業におけるコンピュータービジョン

小売業におけるコンピュータービジョン

Ultralytics YOLOモデルで小売のあり方を変革しましょう。ビジョンAIにより、在庫追跡、棚の監視、行列管理、より高度な顧客インサイトを実現します。
詳しく見る
医療分野におけるコンピュータービジョン

医療分野におけるコンピュータービジョン

Ultralytics YOLOモデルで医療ソリューションを構築しましょう。医療分野のビジョンAIは、医用画像処理の高速化、より高度な診断、患者モニタリングを実現します。
詳しく見る
製造業におけるコンピュータービジョン

製造業におけるコンピュータービジョン

Ultralytics YOLOモデルで製造を最適化しましょう。ビジョンAIは、品質管理、欠陥検出、PPE準拠、組立ラインの自動化を推進します。
詳しく見る
自動車分野におけるコンピュータービジョン

自動車分野におけるコンピュータービジョン

Ultralytics YOLOモデルで自動車分野にコンピュータービジョンを導入しましょう。ビジョンAIは、道路の安全性、運転支援、車両の自動化を向上させ、よりスマートな道路を実現します。
詳しく見る
農業におけるコンピュータービジョン

農業におけるコンピュータービジョン

Ultralytics YOLOモデルでスマート農業にビジョンAIを導入しましょう。作物のモニタリング、家畜の追跡、精密農業を支援し、より高く効率的な収量を実現します。
詳しく見る

AIの未来を一緒に築きましょう!

機械学習の未来に向けた歩みを始めましょう