Mixture of Experts、略して MoE 構成のモデルを見積もる際、「1 トークンあたり全 Expert の 25% しか使わないので、必要なメモリー容量も 4 分の 1 で済む」という理解で計算を進めると、実際の配置段階でメモリー不足に直面します。Expert 数 8、Top-2 ルーティングという構成を例に、活性化率という数値が指しているものと、VRAM 見積もりに実際に使うべき数値を切り分けます1。
この記事で扱う範囲
対象は、Sparse MoE 構成(Expert 数複数、Top-k ルーティング)を採用したモデルを推論基盤へ配置する際の容量見積もりです。ルーターの学習方法、負荷分散損失、Expert を複数 GPU へ分散する際の通信方式は扱いません。読み終えた時点で、公開されているモデル仕様から重み容量と活性化率を別々に計算できる状態を目指します。
活性化率が指すもの
Top-k ルーティングの選択単位
活性化率は、トークン単位・Transformer 層単位で決まります。Expert が 8 個あり、各トークンについて上位 2 個だけが計算される Top-2 ルーティングの場合、選択率は次の式になります。
選択率 = 2 / 8 = 0.25
この 0.25 が、しばしば「25% 活性化」と呼ばれる数値です。モデルの設定ファイル(config.json など)を確認する場合は、num_experts(Expert の総数)と num_experts_per_tok(1 トークンあたりに選ばれる Expert 数)に相当するフィールドを探し、この比率を自分で計算します。フィールド名はモデルによって異なるため、値が見つかった時点で上記の式へ当てはめて検算します。
「25%」が指すのは演算量であり保存量ではない
Top-2 で選ばれなかった残り 6 個の Expert は、次のトークンや次の層では選ばれる可能性があります。そのため、どの Expert が今どのトークンで使われているかにかかわらず、8 個すべての重みを常時メモリー上に保持しておく必要があります。
活性化率が示しているのは、1 トークンを処理する際に実行される FFN の演算量です。これに対して、モデルを GPU 上へ配置するために必要なメモリー容量は、選ばれなかった Expert を含めた全パラメータ数で決まります。この 2 つの数値を同じものとして扱うと、見積もりの前提が崩れます。
保存容量の計算手順
総パラメータ数から重み容量を概算する
重み容量は、総パラメータ数と 1 パラメータあたりのビット数から算出します。
重み容量(バイト) = 総パラメータ数 × (量子化ビット数 / 8)
たとえば総パラメータ数 314×10⁹、16 bit(2 バイト)で保持する場合は次のようになります。
314 × 10^9 × 2 = 628 × 10^9 バイト(約 628 GB)
8 bit(1 バイト)へ量子化した場合は次のとおりです。
314 × 10^9 × 1 = 314 × 10^9 バイト(約 314 GB)
この計算は、xAI が公開した Grok-1 の仕様(総パラメータ数 314 億、Expert 数 8、Top-2 ルーティング)を根拠にしています23。
Expert 数を掛けない
「Top-2 しか使わないのだから、容量も 8 分の 2、つまり 4 分の 1 でよい」という計算は誤りです。上記の重み容量の式に、活性化率や選択される Expert 数は含まれません。全 Expert ぶんの重みを合計してから、量子化ビット数を掛けます。
モデル提供元が公表する数値には、多くの場合「総パラメータ数」と「活性化パラメータ数」の 2 種類が並びます。VRAM 見積もりに使うべきは前者です。後者は、次章で扱う演算量の見積もりに使う数値であり、容量計算には使いません。
見積もり時の判断基準
VRAM 要件の算出
VRAM 要件は、次の手順で算出します。
- 総パラメータ数と量子化ビット数から重み容量を算出します(前章の式を使います)。
- KV キャッシュ分、アクティベーション分のメモリーを別途加算します。
- 算出した合計値を、実際に確保できる GPU メモリー容量と照合します。
活性化率は、この手順のうち 1 には登場しません。活性化率が関係するのは、配置後の推論速度やスループットを見積もる段階です。容量計算と演算量計算という 2 つの工程を混同しないことが、見積もり作業の前提になります。
GQA と MoE は別軸の技術である
Grouped-Query Attention、略して GQA は、クエリーヘッド数とキー・値ヘッド数の比率によって KV キャッシュ量を抑える技術であり、文脈長が伸びたときのメモリー増加を抑制します4。MoE の活性化率とは、対象としている資源が異なります。
クエリーヘッドが 48 個、キー・値ヘッドが 8 個の構成では、共有比率は次のようになります。
48 / 8 = 6
キーと値に関するキャッシュ量は、概念上 6 分の 1 まで抑えられます。ただし、クエリー側の計算や注意行列の計算まで一律に 6 分の 1 になるわけではありません。
見積もり表を作成する際は、次の 2 行を分けて記載します。
- 重み容量(MoE の Expert 総数・量子化ビット数で決まる)
- KV キャッシュ容量(GQA などの注意機構構成で決まる)
同じ行にまとめて計算すると、どちらの技術がどちらの数値へ効いているかが追跡できなくなります。
自分のモデルで検算する手順
必要な公開情報を集める
検算には、次の 4 項目をモデルカードまたは設定ファイルから収集します。
- 総パラメータ数
- Expert 数と Top-k の値
- 想定する量子化ビット数(16 bit、8 bit、4 bit のいずれか)
- クエリーヘッド数とキー・値ヘッド数
4 項目のうち 1 つでも非公開の場合、その項目に依存する計算は算出できません。活性化率のみが公開されていて総パラメータ数が非公開の場合は、重み容量を確定できない旨を見積もり資料へ明記します。
チェックリスト形式で確認する
見積もり資料には、以下の 3 つの数値を分けて記載します。
- 総重み容量(活性化率を含めずに算出する)
- トークンあたり演算量(活性化率を含めて算出する)
- KV キャッシュ容量(クエリーヘッドとキー・値ヘッドの比率を含めて算出する)
この 3 つは、それぞれ別の設定値(Expert 数、量子化ビット数、ヘッド数比率)に依存します。実際の数値を式へ代入し、3 つの計算結果が互いに独立して変化することを確認します。
留意事項
非公開仕様のモデルでは計算できない
Expert 数、層数、ヘッド構成が非公開のモデルでは、前章までの計算式に代入する値がなく、概算そのものが成立しません。この場合は見積もり資料に「算出不能」と明記し、活性化率という単一の数値だけを根拠に容量見積もりを進めないようにします。
活性化率は実効速度の改善率と一致しない
Top-2 選択により、理論上の演算量は 4 分の 1 まで抑えられます。ただし、ルーティングの偏り、Expert 間の通信、注意機構・埋め込み・出力層といった共有部分の計算は活性化率の対象外として残ります。そのため、実際のスループット改善率は、活性化率の数値どおりにはなりません。ベンチマークで得られた実測値と、活性化率から導いた理論値を同じ数値として扱わないようにします。
参考文献
- id774, Grok のアルゴリズムを詳解する(2026-07-16). https://blog.id774.net/entry/2026/07/16/5090/
- xAI, Open Release of Grok-1(2024-03-17). https://x.ai/news/grok-os
- xAI, xai-org/grok-1: Grok open release(2026-07-12 確認). https://github.com/xai-org/grok-1
- Joshua Ainslie et al., GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints(2023-05-22). https://arxiv.org/abs/2305.13245