メインコンテンツへスキップ
あるMixture of Experts (MoE) モデルは巨大なモデルのように見えますが、各トークン生成時には重みの小さな割合しか使用しません。この分離 — 巨大な総容量、トークンあたりの小さな計算量 — が、最新世代のフロンティアオープンウェイトモデルが MoE に移行した理由です。だからこそ、DeepSeek-V3 のような 671B の総パラメータを持つモデルでも、トークンあたり 37B しかアクティブにならないにもかかわらず、671B 全体を保持するのに十分なメモリが必要になります。このページでは、ルーティングの仕組み、サービングにおけるエキスパート並列の意味、そして MoE モデルのハードウェアサイジング方法を説明します。
Last verified: 2026-10-14

What is Mixture of Experts

標準的なデンストランスフォーマーでは、すべてのトークンがすべてのレイヤーを通過し、各フォワードパスですべてのパラメータをアクティブにします。70B のデンスモデルは、すべてのトークンに対して 70B のパラメータをすべて使用します。 MoE モデルは、選択されたトランスフォーマーブロックのフィードフォワードサブレイヤーを、複数の並列エキスパートサブネットワークと、各トークンをどのエキスパートが処理するかを決定するルーター(ゲーティングネットワークとも呼ばれる)で置き換えます。ほとんどのエキスパートは、任意のトークンに対してアイドル状態です。256 人のエキスパートを持つモデルでも、トークンあたり 8 人のみアクティブにする場合があります — ステップあたりの総容量の約 3% です。 その結果:
  • 総パラメータはモデルに必要なメモリ量を決定します(すべてのエキスパートをロードし続ける必要があります)。
  • アクティブパラメータは各トークンの計算コストを決定します(選択されたエキスパートのみが実行されます)。
これが核心的なトレードです。MoE は、はるかに小さいモデルのトークンあたりの計算コストで、非常に大きなモデルの知識容量を購入します — ただし、エキスパートが機能するかどうかに関わらず、すべてのエキスパートのメモリコストは支払う必要があります。

How does MoE routing work

各 MoE レイヤーには、各トークンを処理するエキスパートを選択するルーターが含まれています。本番モデルで最も一般的なアプローチはトップ k ゲーティングです:
  1. ルーターは、トークンの隠れ状態を学習済みの重み行列に乗算し、次にソフトマックスを適用してすべてのエキスパートの確率分布を生成することで、各エキスパートのスコアを計算します。
  2. 最も高いスコアを持つトップ k のエキスパートが選択されます。その出力は、ソフトマックスで正規化された重みを係数として結合されます。
  3. 他のすべてのエキスパートはそのトークンに対して出力を生成しません — 完全にスキップされます。
k の値はモデルによって異なります。DeepSeek-V3 と Qwen3 は k=8 を使用します。gpt-oss は k=4 を使用します。Kimi K3 は 16 人のルーティングエキスパートと 2 人の共有エキスパートをトークンごとに使用します。

Shared experts

一部のアーキテクチャは、ルーティングスコアに関係なくすべてのトークンでアクティブになる共有エキスパートのサブセットを予約します。共有エキスパートは一般的なパターン(言語モデルの基本、フォーマット)を処理するため、ルーティングされたエキスパートは専門化できます。Qwen3-Next は 1 人の共有エキスパートと 10 人のルーティングエキスパートを使用します。Kimi K3 は 2 人の共有エキスパートと 16 人のルーティングエキスパートを使用します。DeepSeek-V3 と元の Qwen3 MoE は共有エキスパートを使用しません — すべてのアクティブなエキスパートはルーターによって選択されます。

Load balancing

常に同じ少数のエキスパートにトークンを送信するルーターでは、MoE の目的が失われます。それらのエキスパートがボトルネックになり、残りはアイドル状態になります。本番モデルは、エキスパートの使用をバランスさせるためにいくつかの戦略を使用します:
  • 補助損失 — ルーターを均一なエキスパート使用に向かわせるトレーニング時のペナルティ。初期の MoE モデルのほとんど(Switch Transformer、ST-MoE)はこのアプローチを使用します。コストは専門化のわずかな低下です。ルーターは品質と並行してバランスを最適化します。
  • 補助損失なしのロードバランシング — DeepSeek-V3 は、推論時にエキスパートごとのルーティングバイアスを調整するバイアスベースのアプローチを導入しました。エキスパートがターゲットシェアより多くのトークンを受け取っている場合、バイアスが減少し、選択される可能性が低くなります。これにより、補助損失の品質トレードオフが完全に排除されます。
  • Stable LatentMoE — Kimi K3 は、トークン間でより安定したエキスパート割り当てを生成する学習済み潜在ルーティングメカニズムを使用し、標準的なトップ k ゲーティングでロード不均衡を引き起こす分散を削減します。
実際的なポイント:ロードバランシングはサービング時ではなくトレーニング時に解決されます。ローカルで MoE モデルを実行するユーザーとして、ルーティングは設定しません — メモリと並列性を設定します。

Why MoE memory scales with total parameters, not active

これは MoE モデルをローカルで実行する前に理解すべき最も重要なことです。 すべてのエキスパートは常にメモリに常駐している必要があります。 ルーターは動的に — トークンごと、レイヤーごとに — どのエキスパートをアクティブにするかを決定します。特定のプロンプトにどのエキスパートが必要になるかを事前に知る方法はないため、すべてのエキスパートをロードして準備しておく必要があります。ディスクからオンデマンドでエキスパートをスワップすることは、インタラクティブな推論にははるかに遅すぎます。 つまり、Memory and offloading のメモリ式が総パラメータに適用され、アクティブパラメータには適用されません:
アクティブパラメータはトークンあたりの計算量(したがって生成速度)にのみ影響し、メモリには影響しません。

Worked examples

1.2x の係数は、控えめなコンテキスト長での KV キャッシュ、アクティベーション、フレームワークオーバーヘッドを考慮しています — デンスモデルと同じ式です。完全なサイジングの導出については Memory and offloading を参照してください。

What this means in practice

Qwen3-30B-A3B は 30.5B の総パラメータがありますが、アクティブなのは 3.3B だけです。3.3B のデンスモデルとほぼ同じ速度でトークンを生成しますが、30.5B 全体のメモリが必要です。4 ビットでは約 18 GB で、24 GB の GPU に収まります。30B のデンスモデルでも 4 ビットでほぼ同じメモリが必要ですが、30B のパラメータを 3.3B ではなくトークンごとにすべて処理するため、より遅くなります。 逆に、Kimi K3 は 2.8T の総パラメータと 104B のアクティブパラメータがあります。104B のデンスモデルとほぼ同じ速度でトークンを生成しますが、重みだけで約 1.4 TB のメモリを 4 ビットで必要とします。コンシューマーやプロシューマーのハードウェアでは保持できません。

MoE vs dense models

重要な洞察:MoE は知識容量をトークンあたりの計算量から切り離します。671B パラメータの MoE(37B アクティブ)は、品質で 70B のデンスモデルに匹敵するかそれを上回り、ほぼ 70B の速度でトークンを生成できます — ただし 671B 分のメモリが必要です。

Expert parallelism: serving MoE across multiple GPUs

MoE モデルが単一の GPU に収まらない場合、分散する必要があります。エキスパート並列は、そのための MoE 固有の戦略です:
  • 各 GPU は総エキスパートのサブセットを保持します。256 エキスパートのモデルを 8 GPU に分散すると、各 GPU は 32 人のエキスパートを保持します。
  • フォワードパス中に、ルーターの決定により、どのトークンをどの GPU に送信する必要があるかが決まります。GPU 3 のエキスパートにルーティングされたトークンは処理のために GPU 3 に通信され、その後結果が戻ります。
  • 非エキスパートレイヤー(アテンション、埋め込み)は通常、標準的なテンソル並列を使用して分割され、各 GPU が各レイヤーの重み行列のスライスを保持します。
vLLM や TensorRT-LLM などの本番サービングランタイムは、アテンションレイヤーのテンソル並列と MoE レイヤーのエキスパート並列を組み合わせています。その結果は混合並列と呼ばれます。vLLM のドキュメントに設定の詳細が記載されています。重要な設定は、エキスパート並列がテンソル並列とは別の並列軸であることです。 実際的な意味:MoE モデルは GPU 間の高帯域幅インターコネクト(NVLink、InfiniBand)の恩恵を受けます。トークンはルーティングステップ中に GPU 間を移動する必要があるためです。PCIe のみで接続されたクラスターでは、GPU 間通信による大幅な速度低下が発生します。

Which open-weight models use MoE

現在の世代のフロンティアオープンウェイトモデルは MoE に大きく移行しています。2026 年十月時点の状況です:

Sub-50B total (runnable on 1-2 consumer GPUs at 4-bit)

50B-250B total (multi-GPU or high-memory unified systems)

250B+ total (server-class hardware required)

Sources: model cards on HuggingFace and the official technical reports linked below.

Practical takeaway for local inference

MoE はモデルカードの数字の意味を変えます:
  • アクティブパラメータはモデルのトークン生成速度を示します。671B の MoE(37B アクティブ)は、ほぼ 37B の速度で生成します。
  • 総パラメータはモデルに必要なメモリ量を示します。同じ 671B の MoE でも 671B 分の VRAM が必要で、37B ではありません。
  • エキスパート数とルーティングは品質とトレーニング効率に影響するアーキテクチャの詳細ですが、ローカル推論ユーザーとしては設定しません — メモリと並列性を設定します。
MoE モデルが「2.4T パラメータ、95B アクティブ」と宣伝されているのを見たら、「95B の速度で生成、2.4T のメモリが必要」と読んでください。ハードウェアは総量でサイズし、アクティブ数の速度を楽しみます。 特定の MoE モデルと量子化がハードウェアに収まるかどうかをダウンロード前に確認するには、GPU model-fit guide を使用してください。

Go deeper

Memory and offloading

バイト/パラメータ(精度別)とオフロードメカニズムを含む完全なサイジング式。

Quantization

バイト/パラメータを縮小して、MoE とデンスモデルの両方のメモリ方程式を変更します。

How inference works

デコードがメモリ帯域幅制約である理由と、アクティブパラメータが生成速度に影響する仕組み。

Model serving and scaling

並列戦略、マルチ GPU サービング、ランタイムがモデルを分散する方法。

Models using MoE

Kimi K3

2.8T total, 104B active, 896 experts with Stable LatentMoE routing.

DeepSeek

V3/R1 at 671B/37B, V4.1-Flash at 552B with asymmetric 8B/16B activation.

Qwen3

30B-A3B and 235B-A22B MoE tiers, 128 experts with top-8 routing.

Qwen3.8

2.4T flagship with 95B active, 512 experts, 10 routed + 1 shared.

GLM-5.3

753B total, ~40B active, MoE with 1M context.

gpt-oss

20b (32 experts) and 120b (128 experts), top-4 routing, Apache 2.0.

Once it fits and runs

MoE モデルをハードウェアにロードさせるのが最初のステップです。localhost でリクエストに答え始めたら、次のステップは他の場所からもアクセスできるようにすることです。

Give it a stable endpoint

Tokios はモデルの選択、ホスト、ファインチューニングは行いません — ローカルで実行されれば、Tokios はそれをどこからでも呼び出せる安定した認証済みエンドポイントに変換します。

Frequently asked questions

ルーターは各トークンごとに異なるエキスパートを選択するため、すべてのエキスパートがアクセス可能である必要があります。任意の瞬間には k 人のエキスパートのみが機能しますが、次のトークンでは完全に異なるセットが必要になる場合があります。つまり、すべてのエキスパートの重みが常にメモリ(VRAM または RAM)に常駐している必要があり — アクティブパラメータではなく総パラメータでサイズを設定します。
計算します:総パラメータに重みあたりのバイト数を掛けます。4 ビット(ほとんどの MoE モデルのネイティブ量子化フロア)では、total_params × 0.5 GB です。KV キャッシュとオーバーヘッドに 20% を加えます。その数値が合計 VRAM + RAM に収まれば、モデルはロードされます。収まらない場合、どの程度の最適化でも変更できません — より多くのメモリまたはより小さいモデルが必要です。
共有エキスパートはすべてのトークンでアクティブです — 言語モデリングなどの一般的なタスクを処理します。ルーティングエキスパートはゲーティングネットワークによってトークンごとに選択されます。DeepSeek-V3 は 256 ルーティングエキスパート(8 アクティブ)を使用し、共有エキスパートはありません。Kimi K3 は 896 エキスパート(16 ルーティング + 2 共有)を使用します。Qwen3.8 は 512 エキスパート(10 ルーティング + 1 共有)を使用します。
小さいものだけです。Qwen3-30B-A3B(総 30.5B、約 18 GB at 4 ビット)は 24 GB の GPU に収まります。gpt-oss-20b(総 21B、約 13 GB at 4 ビット)も収まります。約 50B を超える総パラメータの場合、マルチ GPU サービング(エキスパート並列を備えた vLLM、SGLang)または CPU オフロードを備えた高統一メモリシステム(Mac Studio、DGX Spark)が必要です。
エキスパート並列はエキスパートレイヤーを複数の GPU に分割します — GPU 0 はエキスパート 0-63 を保持、GPU 1 はエキスパート 64-127 を保持、など。各 GPU はエキスパートの出力を計算し、オールツーオール通信で結合されます。総エキスパートの重みが単一の GPU に収まらない場合に必要です。vLLM と SGLang の両方がサポートしています。設定については vLLM optimization guide を参照してください。

Sources