このページの目次
モデルアーキテクチャ: DenseとMoE
現代のLLMのほぼすべては Transformerデコーダ です。MoEは過去数年で最も重要なアーキテクチャのトレードオフとなりました——モデルの「パラメータ数は大きいものの、トークンごとに使用されるのは一部のみ」とし、容量とトークンあたりの演算コストを分離します。
概要
現代のLLMのほぼすべては Transformerデコーダ です。違いは主に 規模 と、その規模を どのように活用するか にあります。パラメータ数が増えるほど性能は向上しますが、トークンあたりの推論コスト、VRAM使用量、レイテンシも同時に増加します。MoE(Mixture of Experts:専門家の混合) は過去数年で最も重要なアーキテクチャのトレードオフ——「パラメータ数は大きいものの、トークンごとに使用されるのは一部のみ」とし、「容量」と「トークンあたりの演算コスト」を分離します。DenseとMoEのメカニズムを理解することは、以下の3つの実務に直結します:ローカルデプロイメントの選択とVRAM予算の確保(ローカルLLMデプロイメント参照)、推論スループット、そしてQwen-AgentWorldのような最先端モデルカードの解釈です。
まず境界を明確にします:クローズドソースモデル(Claude、GPTなど)はアーキテクチャを公開していません。MoEかどうか、層数、パラメータ数は、公式には明かされていません。本稿では 一般的なメカニズムと、オープンソースモデルで検証可能な事実 を扱います。クローズドソースモデルについては、推測された内部構造ではなく、Models API が報告する能力に依存します。以下、Claudeに関する記述は、能力の照会のみを行い、構造については言及しません。
Transformerデコーダの動作原理
flowchart TD
E["トークン埋め込み + 位置エンコーディング"] --> R["残差流 residual stream"]
R --> L1["Layer 1"]
subgraph L1["各層 (×N)"]
direction TB
A["self-attention<br/>(Q·K → 重み, Vに重み付け)"] --> F["FFN<br/>(次元拡張→活性化→次元圧縮)"]
end
L1 --> LN["... Layer N"]
LN --> O["出力ロジット<br/>(次のトークン分布)"]
ポイント(decoder-only、つまりGPT系統):
- 残差流(residual stream): 各層の出力 = 入力 + その層での増分。情報がこの「メインストリーム」に沿って流れ、各層で読み書きを行います。
- self-attention: 各トークンは Q/K/V の3つのベクトルに射影されます。Q·Kを用いて「どこに注目すべきか」の重みを計算し、Vに重み付けして合計します。multi-head は、異なる関係性を捉えるために複数のQ/K/Vペアを並列で実行します。因果マスク(causal mask) は、1つのトークンがそれ以前のトークンのみを見られるように保証します——これにより自己回帰的生成が可能になります。注意機構は ~O(n²) のコストと KV cache の源です(コンテキストエンジニアリング参照)。
- FFN(順伝播ネットワーク): 各位置に対して独立して「次元拡張→非線形変換→次元圧縮」(典型的に4倍)を行います。モデルパラメータの大部分はFFNにあります——ここがMoEが介入する箇所です。
Dense vs MoE: メカニズム
- Dense(稠密): 各トークンは すべての FFNパラメータを通過します。70BのDenseモデルでは、各トークンが70Bのパラメータを使用します。
- MoE: 各層のFFNを N個のエキスパート(expert)+ 1つのルーター(router/gating) に置き換えます。ルーターは各トークンに対して「どのエキスパートを使用すべきか」の分布を計算し、top-k のエキスパートのみを活性化し、他は計算に参加しません。
ルーターのメカニズム(現代のMoEを例とする): 各トークンに対して、ゲートネットワークがN個のエキスパートに対するスコアを出力し、softmax後 top-k を取得し、ゲート重みで重み付けして選択されたエキスパートの出力を結合します。2つの重要なエンジニアリングポイント:
- load balancing(負荷分散): 制約を加えない場合、ルーターは少数のエキスパートを好む傾向があり(「勝者総取り」)、他のエキスパートは訓練不足になります。訓練時には 負荷分散補助損失 を加え、均等なルーティングを促します。
- shared expert(共有エキスパート): 一部の設計(DeepSeekMoE、Qwen)では、汎用能力を担う 常に活性化される 共有エキスパートを1つ残し、他のルーティングエキスパートは専門的な役割を担当します——これが「8 routed + 1 shared」といった表現の由来です。
命名における 35B-A3B はこの意味です:総パラメータ35B、トークンあたりの活性化は約3B。
なぜMoEなのか: 容量/演算コストの分離(とその代償)
| Dense | MoE | |
|---|---|---|
| トークンあたりの計算 | 全パラメータ | 活性化されたtop-kのエキスパートのみ → 活性化パラメータで決定 |
| 推論速度/スループット | 総パラメータに比例して低下 | 高速(演算コスト ∝ 活性化パラメータ) |
| VRAM | 総パラメータを収める必要がある | 全エキスパートを収める必要がある(いずれも選択される可能性があるため) |
| スケーリング方法 | パラメータ追加 = 演算コスト増加 | エキスパート追加 ≈ 容量増加だが、トークンあたりの演算コストはほぼ増加しない |
| 代償 | 単純 | ルーティングの偏り、訓練の複雑さ、VRAMの逼迫、バッチ内でのエキスパートのヒット分散 |
一言で言えば:MoEは「全エキスパートをVRAMに常驻させる」ことで「トークンごとに一部のみを計算する」を実現する——大規模かつ省演算(スループット向上)だが、VRAMは節約にならない。
VRAM/演算コストの計算(ローカル視点)
ローカルで常驻しているQwen 35B-A3Bを例とする(ローカルLLMデプロイメント):
- VRAM: 35Bの全エキスパートが常驻する必要がある。FP16では約70GB必要で、24GBのカードには収まらない → 量子化必須: Q3_K_XLで重みを約17GBに圧縮、64kのQ8_0 KV cacheで約2.85GB、さらに約1.7GBのランタイム計算バッファを加えると、合計約21.5GBとなり、デスクトップ用に約3GBの余裕を残す。VRAMは「総パラメータ + KV cache」で決まり、MoEでもここは節約にならない。
- 演算コスト: トークンあたりの活性化は約3Bのみなので、スループットは3BのDenseモデルに近い——MTPドラフトヘッダーを併用すると実測で約111 t/s。速度は「活性化パラメータ」で決まり、ここがMoEの恩恵である。
これがローカルでMoEを選ぶ理由です:使えるVRAM内に高容量モデルを収め、かつ高速に動作させる——ただし、量子化によって「総パラメータ」をカードに収めることが前提です。ただし代償として、トークンあたりの推論深度は活性化パラメータによって決まります(次節参照)、エージェント/ツール呼び出しなど多段階の推論チェーンを必要とするタスクでは、この代償を考慮して選択してください。
MoEの隠れた代償: トークンあたりの推論深度
上記ではVRAMとスループットのみを計算しましたが、第3の次元があります:トークンあたりの推論深度は総パラメータではなく、活性化パラメータによって決まるという点です。
Transformerの構造を思い出してください:
attention層は完全です——モデルは入力のどのトークンに注目すべきかを知っています。しかし、FFNは注目された情報を処理・推論する役割を担い、MoEではトークンごとにFFNパラメータのごく一部のみが活性化されます。総パラメータ35B / 活性化3Bのモデルでは、各推論ステップの「思考の深さ」は約3BのDenseモデルに相当します。 言い換えれば:注意は「どこを見るか」を決定し、活性化されたFFNは「何を見たか、次に何をするか」を決定する——MoEの目は見えていますが、各ステップで働く脳細胞は活性化パラメータの数だけしかありません。
これは単一ステップのタスク(分類、要約、簡単な質問応答)では大きな影響はありません——3Bの処理能力で十分です。しかし、多段階の直列推論——典型的にはエージェントのツール呼び出しチェーン——では:
各ステップでFFNの推論予算を消費します。活性化パラメータが3Bの場合、2ステップ目で既に1ステップ目の意図を「忘れ」、その結果、<think> テキストを出力しながら、ツール呼び出しトークンを生成すべきところで注意が散漫になり、テキストとして続けて生成してしまう——考えてはいるが、行動していない状態になります。
経験的な閾値: 安定した単一ステップのツール呼び出しには約7–10Bの活性化パラメータが必要で、安定した多段階のエージェントループには約20B+の活性化パラメータが必要です。これがDeepSeek V3(MoE、総パラメータ671Bだが活性化37B)のツール呼び出しが安定している理由です——活性化パラメータが十分に大きいためです。24GBのVRAM制約下では、エージェントタスクにはDenseモデル(Qwen 2.5 14B/32B、Qwen 3 32Bなど)を優先的に選択すべきです。これらのモデルでは活性化パラメータ = 総パラメータであり、同規模の低活性化MoEよりも多段階推論チェーンがはるかに信頼性が高いです。
実例: ローカルから最先端へ
- ローカル常驻: Qwen 35B-A3B(総35B / 活性化3B)——標準的なMoE、上記の計算を参照。
- 最先端の派生型: Qwen-AgentWorld-35B-A3B も同様に35B-A3Bですが、より積極的な設計です:256個のエキスパート、トークンあたり8 routed + 1 sharedを活性化;さらに ハイブリッドアーキテクチャ——40層のうち多くで Gated DeltaNet(一種の 線形注意 変体で、長文脈の注意の ~O(n²) をほぼ線形に低下させ、長文脈のコストを削減)を使用し、各反復ブロックの最後の層のみでGated Attentionを使用(40層中10層のみ)。これにより 256K の文脈 をサポートします。これは「MoEによる容量の分離」と「線形注意による長文脈」の2つのラインを重ね合わせ、world-modelの目標(エージェント環境のシミュレーションには長文脈 + 強力な容量が必要)に貢献しています(エージェントループとツール使用の最先端セクション参照)。
これらの数字は検証可能なオープンソースのモデルカードから得たものです。Claudeには適用しないでください——公式にはMoEかどうか、パラメータ規模、または注意の変体が公開されていません。
選択基準: 能力を見よ、構造を推測するな
アプリケーション開発者にとって、本当に問うべきは「それがMoEかどうか」ではなく、能力とコストです。クローズドソースモデルではModels APIでリアルタイムに確認し、推測しないでください:
=
# 文脈ウィンドウ
# 最大出力トークン数
# image_input / thinking / effort / structured_outputs ...
# client.models.list() で能力別にフィルタリングも可能
オープンソース/ローカルモデルでは、モデルカードの 総パラメータ / 活性化パラメータ / 層数 / 文脈長 / 注意タイプ を読み、VRAM予算(ローカルLLMデプロイメント の量子化とVRAMのトレードオフ)と組み合わせて選択します。
ベストプラクティス
- クローズドソースモデルは能力を確認し、構造を推測するな。 Models APIで
max_input_tokens/max_tokens/capabilitiesをリアルタイムに取得し、MoEかどうか、パラメータ数がどうかなど推測しない。 - MoEのVRAMは「総パラメータ + KV cache」で見積もれ。 活性化パラメータが小さいからといってVRAMが小さいわけではない——全エキスパートが常驻する必要があり、量子化で総パラメータをカードに収める。
- MoEのスループットは活性化パラメータで見よ、総パラメータではない。 35B-A3Bは3Bのように動作し、これがMoEの恩恵である。
- エージェントへの適応性を活性化パラメータで評価し、総パラメータではない。 安定した単一ステップのツール呼び出しには約7–10Bの活性化、安定した多段階エージェントには約20B+が必要;24GB下でエージェントタスクを行う場合は、Denseまたは高活性化MoEを優先。
- オープンソースの選択ではモデルカードの4点セットを読め。 総パラメータ / 活性化パラメータ / 層数 / 注意タイプ、VRAM予算(ローカルデプロイメント)と組み合わせて決定。
トレードオフと失敗パターン
- 「活性化パラメータが小さい」を「VRAMが小さい」と誤解する: MoEのVRAMは総パラメータで決まり、カードが溢れる → 総パラメータ + KV cacheでVRAMを見積もり、量子化で圧縮。
- Denseの直感でMoEのスループットを見積もる: MoEが速いのは活性化パラメータが小さいからであり、「小さい」からではない → 活性化パラメータを見よ。
- バッチ内でのエキスパートの分散: 並列リクエストが異なるエキスパートにルーティングされ、実際の演算コスト利用率が理論より低くなる可能性がある → サーバーサイドのスケジューリング/エキスパート並列化のエンジニアリング課題。
- MoEでエージェントのツール呼び出しを行い、チェーンが頻繁に断絶する: 活性化パラメータが小さすぎる(例: 3B)、多段階推論中に意図が漂移し、thinkテキストを出力するが実際のtool callトークンを生成しない → エージェントシーンではDenseまたは高活性化MoEを選択し、総パラメータではなく活性化パラメータで評価。
- クローズドソースアーキテクチャを推測する: 根拠なし → Models APIの能力フィールドのみを使用。
参考
- 論文: "Attention Is All You Need"(Vaswani 2017)、「Switch Transformers」(Fedus 2021)、「DeepSeekMoE」(2024、共有エキスパート)、「GShard」(負荷分散)
- モデルカード: Qwen-AgentWorld-35B-A3B
- クローズドソース能力照会: Anthropic Models API(platform.claude.com)
Keywords: Transformer, decoder-only, residual stream, self-attention, QKV, multi-head, causal mask, FFN, KV cache, dense, MoE, Mixture of Experts, router, gating, top-k, shared expert, load balancing, 総パラメータ, 活性化パラメータ, active parameters, 35B-A3B, スループット, Gated DeltaNet, linear attention, Qwen-AgentWorld, Models API, 量子化, クローズドソースアーキテクチャ