スペック表の数値比較にとどまらず、「計算資源をどう持ち、何に使い、どのような価値へ変換するか」を用途から考えるシリーズです。第16回は、近年の大規模ローカルLLMで主流となったMoE(Mixture of Experts)アーキテクチャを解剖します。「巨大なモデルなのになぜ一部のパラメータだけで動かせるのか」「なぜ演算量が少なくても大容量メモリが必要なのか」という構造上の仕組みから、必要なGPUメモリ・共有メモリ・PC構成を論理的に逆算します。
計算資源シリーズ一覧を見る →ローカルLLMのモデルを探していると、「Qwen3-30B-A3B」や「Qwen3-235B-A22B」、「DeepSeek-V3(671B / 活性37B)」のように、2種類のパラメータ数が併記されたモデルを頻繁に目にするようになりました。
これらはMoE(Mixture of Experts:混合エキスパート)と呼ばれる構造を採用した言語モデルです。
MoEモデルについて調べると、「30Bの知識を持ちながら3B相当の軽さで動く」「235Bの巨大モデルなのに1トークンあたり22Bしか計算しない」といった説明を見かけます。すると、これからローカルLLM用のPCやGPUを導入しようとする人ほど、次の疑問に突き当たります。
「毎回使うパラメータが3.3Bや22Bだけなら、小さなVRAMのGPUでも動かせるのではないか? なぜ128GBや192GBといった大容量メモリの話になるのか?」
結論から言えば、「1トークンごとに計算するパラメータ量(活性パラメータ)」が少ないことと、「メモリ上に保持しなければならないモデル全体の重み容量(総パラメータ)」が小さいことは全く別の話です。
この2つを混同したままGPUやPCを選ぶと、「軽いと聞いて買ったのにVRAM不足(Out of Memory)で起動すらしない」、あるいは逆に「大容量メモリ機に載せたのに期待したほど生成速度が出ない」というミスマッチが起きます。
※本記事は2026年10月19日時点のモデル公開仕様(Qwen3・DeepSeek-V3)および推論ランタイム公式ドキュメント(llama.cpp・vLLM)に基づく技術解説です。理論計算値と実配布ファイルサイズ・実行時メモリ要件を厳密に区別して記載しています。
MoEモデルとPC・GPU選びで押さえるべき3つの原則
層内のRouterが入力トークンごとに最適な少数のExpert(専門サブネットワーク)を選択(Top-K)し、1トークンあたりの演算量を抑える構造です。
次のトークンでどのExpertが選ばれるかは事前に分からないため、原則として総パラメータ分の重み全体をメモリ内に待機させる必要があります。
重み全体をどこに置くか(VRAM・共有メモリ・システムRAM)で「動くか」が決まり、メモリ帯域幅と演算方式で「実用的な速度で動くか」が決まります。
この記事では、まず以下の3つの概念を混同しないことを出発点にします。
| 切り分けるべき概念 | 主に何で決まるか | 読者が判断したいこと |
|---|---|---|
| ① モデルの重み容量 | 総パラメータ数・量子化精度(ビット幅と追加メタデータ) | モデルを保持するために何GBのメモリが必要か |
| ② 1トークン生成時の処理負荷 | 活性パラメータ数・演算量・メモリ帯域幅(重み読み出し速度) | 1秒あたり何トークン(tok/s)の速度で動くか |
| ③ 実際の動作環境 | GPU VRAM・共有メモリ・システムRAM・KVキャッシュ・推論ランタイム | 自分のPC構成・予算で実用的に運用できるか |
目次
1. MoEとは何か? Denseモデルとの違い
現在のTransformerベースの大規模言語モデル(LLM)は、アーキテクチャ上大きく「Dense(高密度)モデル」と「MoE(Mixture of Experts:スパースMoE)モデル」の2つに分類されます。
DenseとMoEの基本構造の違い
誤解を避けるために正確に整理すると、DenseモデルもMoEモデルも、トークン埋め込み(Embedding)や文脈の関係性を計算するAttention(自己注意機構)層、正規化層などを上から下へ層(Layer)ごとに順番に通過していく点は共通しています。つまり、Denseモデルであっても「モデル内の全パラメータを物理的に同じ瞬間に一斉計算している」わけではなく、各層の処理が順次実行されます。
両者の決定的な違いは、各Transformerブロックの中でパラメータ容量の大部分を占めるFFN(Feed-Forward Network:順伝播ネットワーク)層の構造にあります。
- DenseモデルのFFN層:各層に単一(共通)の大きなFFNブロックが存在し、どの入力トークンに対しても、その層にあるFFNパラメータのすべてを使って計算を行います。そのため、モデルが持つ総パラメータ数と、1トークンを生成する間に各層を通過して使われるパラメータ数がほぼ一致します。
- MoEモデルのFFN層:1つの巨大なFFNの代わりに、複数の小さなFFNである「Expert(エキスパート)」が並列に配置され、その手前に振り分け役である「Router(ルーター/ゲーティングネットワーク)」が置かれます。
Router・Top-K・共有層が動く仕組み
MoE層の内部では、トークンが流れてくるたびに次のステップが高速に実行されます。
- 共有層(Shared Layers / Attention)の処理:入力されたトークンはまず、すべてのトークンで共通して使われるAttention層(およびDeepSeek-V3等では常時稼働する「共有Expert(Shared Expert)」)を通過します。
- Routerによるスコア計算:次にRouter(軽量な線形層+SoftmaxやSigmoid関数)が、そのトークンの特徴ベクトルを見て「並んでいる多数のExpertのうち、どのExpertに処理させるのが最適か」の重みスコアを計算します。
- Top-K Expertの選択と計算:スコア上位の K 個のExpert(Top-K)だけが活性化(Activate)して演算を行い、残りの選ばれなかったExpertはそのトークンに対する演算をスキップします。たとえばQwen3のMoEモデルでは、各層にある128個のExpertのうち上位8個(Top-8)だけが選ばれます。
- 重み付き合算:選ばれた K 個のExpertの出力がRouterのスコアに応じて合算され、次の層へと渡されます。
図解①:Dense(単一経路)とMoE(RouterによるTop-K分岐)の違い
どのトークンでも層内の全FFN重みを読み出して演算
※モデルの知識量を増やす(パラメータ数を2倍・3倍にする)と、1トークンあたりの計算量と重み読み出し量も同じ比率で重くなります。
● 活性 (計算)
○ 待機 (メモリ保持)
● 活性 (計算)
○ 待機 (メモリ保持)
※非選択のExpert(○)はこのトークンの演算を行いませんが、次のトークンで即座に呼ばれる可能性があるためメモリ上に常駐が必要です。
なぜ「使わないExpert」もメモリに載せておく必要があるのか
初心者が最も陥りやすい誤解が、「MoEは一部のパラメータしか使わないのだから、メモリ(VRAM/RAM)も活性パラメータ分だけで足りるはずだ」という考えです。
しかし、Routerが選ぶExpertは「モデルの起動時に1回だけ決まる」のではありません。生成される1トークンごと、かつ通過する各層ごとに、ミリ秒単位で全く別のExpertが動的に選択されます。
たとえば1つの文章を生成するとき、1つ目の単語(トークン)ではExpert #3と#14が呼ばれ、直後の2つ目の単語ではExpert #8と#99が呼ばれ、3つ目の単語ではコード生成に関わる別のExpert群が呼ばれる、という切り替えが毎秒何十回も連続して発生します。
もし選ばれなかったExpertをSSD(ストレージ)に置いたままにし、トークンごとに必要なExpertだけをSSDからメモリへ読み出そうとすれば、毎秒数GB程度のSSD転送速度がボトルネックとなり、推論速度は実用にならないレベルまで落ち込みます。そのため、実用的な速度でMoEモデルを動かすには、「今この瞬間のトークンでは計算しないExpert」も含めた総パラメータ全体の重みを、高速にアクセスできるメモリ(VRAM・ユニファイドメモリ・システムRAM)上に展開しておく必要があるのです。
2. 代表的なMoEモデルの総パラメータ数と活性パラメータ数
実際の主要オープンウェイトMoEモデルでは、総パラメータ数と活性パラメータ数にどれほどの差があるのでしょうか。公開されている公式モデルカード・技術仕様(2026年10月19日確認)をもとに、代表的なMoEモデルの構造を比較します。
| モデル名(版) | 総パラメータ数 (重み保持の基準) |
活性パラメータ数 (1トークン演算の基準) |
層数 / Expert構成 | 最大コンテキスト長 / ライセンス | 構造上の特徴・公開定義の注意点 |
|---|---|---|---|---|---|
| Qwen3-30B-A3B (Base / Instruct / Thinking) |
30.5B 非埋め込み: 29.9B |
3.3B (全体の約10.8%) |
全48層 / GQA (Q:32, KV:4) 128 Experts中 8個活性 |
32,768 (Base) 最大131,072 (YaRN) Apache-2.0 |
重み容量は30B級だが、1トークン演算量は3B級Dense並みに軽量。24〜32GB級GPUの主力候補。 |
| Qwen3-235B-A22B (Instruct / Thinkingフラグシップ) |
235B 非埋め込み: 234B |
22B (全体の約9.4%) |
全94層 / GQA (Q:64, KV:4) 128 Experts中 8個活性 |
標準 32,768 最大131,072 (YaRN) Apache-2.0 |
Thinking / Non-Thinking切替対応。公式GGUFのQ4_K_Mは約142GBで、128GBと192GBの分水嶺となるモデル。 |
| DeepSeek-V3 (DeepSeek-V3 / V3-Base) |
671B HF全体(MTP含): 685B |
37B (全体の約5.5%) |
全61層 (先頭3層Dense) 共有1 + 256 Routed中 8個活性 |
128K (163,840) Code: MIT / Model: DeepSeek License |
MLA(Multi-head Latent Attention)でKVキャッシュを圧縮。ネイティブFP8重み。単一PCでは超大型領域。 |
| gpt-oss-120b (参考:OpenAI公開MoE) |
117B (呼称120bクラス) |
5.1B (全体の約4.4%) |
全36層 / GQA (Q:64, KV:8) 128 Experts中 4個活性 |
最大131,072 (YaRN) Apache-2.0 |
MoE重みをMXFP4量子化して配布。単一80GB級GPUまたは128GB共有メモリが目安。 |
※出典:Hugging Face『Qwen/Qwen3-30B-A3B-Base』『Qwen/Qwen3-235B-A22B』公式モデルカード、GitHub『deepseek-ai/DeepSeek-V3』公式READMEおよびconfig.json、OpenAI『Introducing gpt-oss』およびHugging Face『openai/gpt-oss-120b』(いずれも2026年10月19日確認)。
モデルの公開定義を見るときの注意点(Non-EmbeddingとMTPモジュール)
一次情報のスペック表を読む際は、開発元によって「総パラメータ数」の内訳表記に細かな違いがある点にも注意が必要です。
- Embedding(埋め込み層)を含むか否か:Qwen3シリーズでは、語彙トークンの入出力埋め込み層を含めた「Total Parameters(30.5B / 235B)」と、埋め込み層を除いた純粋なTransformerブロック部の「Non-Embedding Parameters(29.9B / 234B)」が併記されています。メモリ上には当然Embedding層も展開されるため、必要メモリ容量を考える際はTotal側の数値を基準にします。
- 補助モジュール(MTP等)を含むか否か:DeepSeek-V3では、メインモデルのパラメータ数は671Bですが、Hugging Faceで配布されているリポジトリ全体の重み総量は685Bと明記されています。これは推論高速化(投機的デコーディング等)にも使われるMulti-Token Prediction(MTP)モジュールの重み(14B)が含まれているためです。
- 共有Expert(Shared Expert)の有無:Qwen3-MoEが「128個のRouted Expertから8個を選ぶ」純粋なTop-K構造をとるのに対し、DeepSeek-V3(DeepSeekMoE)は「どのトークンでも必ず通る1個のShared Expert」+「256個から選ばれる8個のRouted Expert」を組み合わせ、さらに先頭の3層(Layer 0〜2)はMoEではなく通常のDense FFN層(
first_k_dense_replace: 3)として設計されています。
図解②:モデル全体の重み容量と、トークン単位で使用するパラメータ量の違い
以下は一次情報のパラメータ数と、4bit量子化時の単純重み理論値(1B ≒ 0.5GB と仮定した概算)および公式GGUF配布サイズを対比した模式図です。バー全体の長さが「メモリに保持すべき総パラメータ容量(100%)」、色付きの先端部分が公式パラメータ数に基づく「1トークン生成時に計算へ参加する活性パラメータの割合」を示します。
※前提条件と出典:総パラメータ数・活性パラメータ数はHugging Face公式モデルカード(Qwen/Qwen3-30B-A3B-Base、Qwen/Qwen3-235B-A22B)による。バー幅は公式パラメータ比(10.8% / 9.4%)に基づく模式図です。なお、総パラメータ数と活性パラメータ数の差(残り27.2B / 213B)は大半が未選択Expertの重みですが、埋め込み層(Embedding)の算入有無などモデル公開定義上の非活性領域も含まれるため、未選択の120 Expertの重み容量のみと厳密に等しいわけではありません。また「4bit重み理論値」は純粋な4bit(0.5 Byte/param)のみを仮定した単純計算値であり、量子化のスケール情報・高ビット保持テンソル・KVキャッシュ・実行バッファを含まないため実際の必要メモリ量とは一致しません。
3. MoEに必要なGPUメモリ容量はどう決まるのか
「このMoEモデルを動かすには、結局何GBのVRAMやユニファイドメモリが必要なのか?」を判断するとき、総パラメータ数に単純な係数を掛けただけの概算でPCを選ぶと失敗します。実際の実行時に消費されるメモリは、次の6つの要素の合計で決まるからです。
活性パラメータ数ではなく、総パラメータ数(全Expert+共有層+Embedding)によって決まる基礎容量です。BF16/FP16なら1Bあたり約2GB、FP8なら約1GB、純粋な4bitなら理論上1Bあたり約0.5GBがベースになります。
GGUFのQ4_K_Mなどの実用的な量子化方式では、ブロックごとのスケール係数(Scale/Min)が付加されるほか、精度劣化を防ぐためEmbedding層・出力層・一部のAttention/Routerテンソルが6bitや8bit、FP16で保持されます。そのため、実効ビット幅は4.0bitではなく約4.5〜4.8bit/param相当に膨らみます。
プロンプトと生成文の過去のAttention計算結果(KeyとValue)を保持するメモリ領域です。MoEモデルであっても、層数(Layers)とKVヘッド数、隠れ層次元に応じて全層分のKVキャッシュが確保されます。
KVキャッシュの消費量は、設定するコンテキスト長(4K、32K、128Kなど)と同時処理シーケンス数に比例して増加します。長文RAGやコーディングエージェント用途で32K〜128Kを確保すると、KVキャッシュだけで数GB〜数十GBを追加消費します。
llama.cpp、vLLM、Ollamaなどの推論エンジンが、計算グラフの評価やバッチ処理時の中間アクティベーション(Compute Buffer)を保持するための一時作業領域(通常数GB)が必要です。
物理メモリ128GBや192GBのPCであっても、OSカーネルや常駐プロセスがメモリを使用するほか、ユニファイドメモリ機ではGPU側へ割り当て可能な上限(WindowsのVGM設定上限やmacOSのWired Memory上限など)が存在します。
なぜ「235Bの4bit=約117.5GBだから128GB PCで確実に動く」と言えないのか
ここで最も重要な具体例として、Qwen3-235B-A22Bのメモリ計算を見てみましょう。
もし「4bit量子化なら1Bあたり0.5GB」という単純な理論式だけを当てはめると、235B × 0.5GB = 117.5GB となります。この数字だけを見ると、「117.5GBなら、128GBのユニファイドメモリPCに収まるではないか」と思えるかもしれません。
しかし、現実は異なります。
- 実配布ファイルサイズとの差:Qwen公式がHugging Face(
Qwen/Qwen3-235B-A22B-GGUF)で公開しているQ4_K_M量子化モデルの実際のファイルサイズは合計約142GBです。量子化のスケール情報や重要テンソルの精度維持により、単純な4bit理論値(117.5GB)よりも約24.5GB大きくなっています。 - 実行時メモリの加算:約142GBの重みに加えて、32K等のコンテキスト長に対するKVキャッシュ、推論ランタイムの計算バッファ、そしてOS自体が動くためのメモリ領域が必要です。
- 物理容量とGPU割り当ての壁:128GB搭載PCでは、そもそも約142GBの
Q4_K_Mファイル単体すら物理メモリ容量を超過します。128GB機に収めるには、さらにビット幅を削った3bit〜2bit系の低ビット量子化(IQ3/IQ2等)へ落とすか、ストレージへのページングを伴う極端な速度低下を受け入れる必要があります。また、192GB搭載PCであっても、GPU専用領域(VGM最大160GB等)やコンテキスト長の設定次第で上限に迫るため、無条件に余裕があるわけではありません。
⚠️ メモリ容量計算の鉄則
「総パラメータ数 × 0.5GB(4bit理論値)」はあくまで重み単体の最小理論目安にすぎません。導入判断では必ず、実際に使う量子化形式(Q4_K_M、Q8_0、MXFP4等)の配布ファイル実寸 + KVキャッシュ + ランタイム・OS余白を基準にしてください。なお、7B〜120Bまでの一般的なモデルサイズ別の必要VRAM早見表は「7B・14B・32B・70B・120BにはVRAM何GB必要? ローカルLLMのモデルサイズ別早見表」で詳しく整理しています。
4. MoEの推論速度はなぜ活性パラメータ数だけでは決まらないのか
モデルの重みがメモリに収まったとして、次に問題になるのが「どのくらいの推論速度(tokens/sec)で動くか」です。
「Qwen3-235B-A22Bの活性パラメータは22Bだから、22BのDenseモデルと全く同じ速度で動く」「Qwen3-30B-A3Bは活性3.3Bだから、3Bモデルと同じ速度が出る」と考えるのも、半分は正しく、半分は誤りです。MoEの実効推論速度は、次の5つの観点(メモリ帯域、Prefill/Decodeの差、Routerオーバーヘッド、バッチ処理、長文KVキャッシュとランタイム最適化)によって大きく変動します。
① Decode時の重み読み出しとメモリ帯域(Memory-bound)
1人のユーザーがローカルLLMと対話し、1文字ずつ返答を生成していくDecode(トークン生成)フェーズでは、GPUやCPUの演算能力(FLOPs)よりも、メモリからプロセッサへ重みデータを転送する「メモリ帯域幅(Memory Bandwidth:GB/s)」が支配的なボトルネックになります。
ここでMoEの強みが活きます。たとえば総235B・活性22BのMoEモデルでは、1トークンを生成するたびにメモリから読み出す必要がある重みは、235B全体ではなく活性化された約22B分(4bit量子化なら約11〜13GB相当)+KVキャッシュで済みます。もしこれが235BのDenseモデルであれば、1トークンごとに約117GB以上の重みを読み出す必要があるため、単一ユーザーのDecode速度においてMoEは同規模のDenseモデルよりはるかに有利になります。
ただし裏を返せば、活性パラメータが22Bある以上、1トークンごとに十数GBの重みを読み出すメモリ帯域は必要です。メモリ帯域が1,792GB/sある専用GDDR7(RTX 5090等)や1.2TB/sのMac Studio(M5 Ultra)と、約256〜273GB/sのLPDDR5X共有メモリ機、さらに約70〜90GB/s前後の一般的なデュアルチャネルDDR5システムRAMとでは、同じ活性パラメータ数でもトークン生成速度に明確な差が生まれます。
② Prefill(入力処理)とDecode(出力生成)の負荷構造の違い
LLMの推論は、入力プロンプトを一括処理するPrefill(Prompt Processing)と、1トークンずつ出力を紡ぐDecode(Token Generation)の2段階に分かれます。
- Decode(1トークン逐次生成):1回につき1トークン分のTop-K Expertだけを読み出すため、メモリ帯域(GB/s)が効きやすく、MoEの「活性パラメータの小ささ」が直接スピードの恩恵になります。
- Prefill(数千〜数万トークンのプロンプト一括処理):大量の入力トークンをまとめて処理するため、プロセッサの演算性能(Compute:TFLOPS / TOPS)が強く効きます。ここでも1トークンあたりに選択されるExpert数はTop-Kのまま(1トークンあたりの演算量は活性パラメータ分)ですが、プロンプト内の多数のトークンがそれぞれ異なるExpertを選ぶため、プロンプト全体で見ると利用されるExpertの種類数が増え、読み出す重みの範囲と合計演算量(FLOPs=1トークンあたりの活性演算×トークン数)がともに大きくなる点に注意が必要です。
③ RouterとExpert選択・不連続メモリアクセスのオーバーヘッド
同じ3.3Bの計算量であっても、「単一の連続した3.3B Denseモデル」を計算するのと、「128個に分かれたExpertの中からRouterで8個を選び、メモリ上の飛び飛びのアドレスから重みを集めて(Gather)計算し、再び統合する(Scatter)」のとでは、後者(MoE)にルーティング計算とメモリアクセスのオーバーヘッドが加わります。特に層数が多いモデル(Qwen3-235B-A22Bは94層)では、1トークン生成する間に94回のRouter判定と分岐が発生します。
④ バッチサイズと同時リクエスト数(単一ユーザー vs 多人数サービング)
個人利用(Batch Size = 1)と、複数エージェントの並列実行やチーム共有サービング(Batch Size > 1)では、MoEの負荷構造が変化します。ただし「バッチサイズが増えると全Expertが活性化して総パラメータ分の演算が発生する」と短絡的に捉えるのは不正確であり、次の5つの概念を区別して理解する必要があります。
- 1トークンで選択されるExpert数:バッチサイズが増えても、各トークンが通過するExpert数は常にTop-K(例:128個中8個)で変わりません。
- 1バッチ全体で利用されるExpertの種類数:バッチ内の複数トークンが別々のExpertを選ぶため、バッチサイズが大きくなるほど、そのステップで1回以上呼び出されるユニークなExpertの「種類数」が増えます(実際にどれだけ分散するかはバッチサイズとRouterの選択分布に依存します)。
- 重みのメモリアクセス量:バッチ全体で選ばれるExpertの種類数が増えるため、1ステップあたりにメモリから読み出す重み総量はBatch Size = 1のときより増加します。一方で、同じExpertを選んだ複数トークン間では1回読み出した重みを共有して再利用できるため、トークンあたりのメモリアクセス効率はバッチサイズと選択の重なり具合によって変化します。
- 総演算量(FLOPs):1トークンあたりの演算量はあくまで活性パラメータ分であり、バッチ全体の総演算量は「1トークンあたりの活性パラメータ演算 × バッチ内トークン数」に比例します(1トークンあたりに総パラメータ分の演算が発生するわけではありません)。
- バッチ処理の実効性能:最終的なスループットとレイテンシは、バッチサイズ、Routerの選択分布の偏り、および推論ランタイム(vLLM / SGLang / llama.cpp等)のGrouped GEMM・融合カーネル最適化によって決まります。
| 比較軸 | 単一ユーザー対話(Batch Size = 1) | 複数リクエスト同時処理・長文Prefill(Batch Size > 1) |
|---|---|---|
| 1トークンで選択されるExpert数 | Top-K個(例:128個中8個) | 各トークンにつきTop-K個(例:128個中8個で不変) |
| 1バッチ全体で利用されるExpert種類数 | Top-K種類のみ(最小) | 複数トークンの選択が重なり合いつつ広がり、バッチサイズとRouterの選択分布に応じて多くの種類のExpertが呼ばれる |
| 重みのメモリアクセス量 | 活性パラメータ分の重み読み出しに限定される | 呼び出されるExpert種類数に応じて1ステップの重み読み出し総量は増えるが、同一Expertを選んだトークン間で重みを再利用できる |
| 総演算量(FLOPs)と主なボトルネック | 1トークン分の活性演算のみ。メモリ帯域幅(Memory-bound)が支配的で、共有メモリ機でもMoEの恩恵が出やすい | 「1トークンの活性演算 × トークン数」で総FLOPsが増大。重み再利用とGrouped GEMM等の最適化が効くほどGPU演算性能(Compute)の重要性が高まる |
⑤ 長文コンテキストとKVキャッシュ・バックエンド・ランタイム最適化
さらに、コンテキスト長が数万トークンに伸びると、毎トークン生成時にExpertの重みだけでなく肥大化したKVキャッシュ全体もメモリから読み出す必要があります。Qwen3のようにGQA(Grouped-Query Attention:KVヘッドを4個に削減)を採用したり、DeepSeek-V3のようにMLA(Multi-head Latent Attention:潜在ベクトルへの低ランク圧縮)を採用したりしているモデルはKVキャッシュの膨張を抑えていますが、それでも長文処理ではメモリ帯域とAttention演算最適化(FlashAttention等)の差が顕著に出ます。
加えて、同じハードウェアでもバックエンド(CUDA / ROCm / Metal / Vulkan / CPU AVX-512・AMX)と推論ランタイム(llama.cpp、vLLM、SGLang、MLX等)がMoE専用の融合カーネル(Fused MoE Kernel)や量子化形式にどこまで最適化されているかによって、実効速度は大きく変わります。
5. MoEに適した計算環境をどう選ぶか(4つの構成パターン)
ここまでの「重み保持容量」と「推論速度の仕組み」を踏まえると、MoEモデルを動かすための計算環境は大きく4つのパターン(A〜D)に整理できます。
| 構成パターン | 代表的なハードウェアと容量 | 適したMoE規模の目安 | 強みと受け入れるべき制約 |
|---|---|---|---|
| A. 32GB 専用VRAM (コンシューマ最上位dGPU) |
GeForce RTX 5090 32GB GDDR7 (1,792GB/s) |
30B級MoE(Q4〜Q6) 例: Qwen3-30B-A3BをVRAM内完結 |
強み:1,792GB/sの高帯域とCUDA演算でPrefill・Decodeとも非常に高速。 制約:32GBを超える100B〜235B級重みは単体VRAMに収まらない。 |
| B. 48GB〜96GB 専用VRAM (プロ向けWorkstation GPU) |
RTX PRO 5000 (48GB / 72GB) RTX PRO 5500 (84GB) RTX PRO 6000 (96GB) |
30B級高精度・長文〜120B級MoE 例: 30B FP8/Q8+長文、gpt-oss-120b (80GB級) |
強み:高速GDDR7 ECC専用VRAMのまま32GBの壁を突破。vLLM等の高バッチ運用にも適する。 制約:導入費用が高額(完成WSで数百万円規模)。235B Q4(約142GB)は単一96GBでも超過。 |
| C. 大容量 共有メモリ (Unified / Shared Memory) |
Ryzen AI Max (64〜192GB) RTX Spark / DGX Spark (128GB) Mac Studio (最大512GB) ※M5 Ultra 512GBは2026年10月後半予定 |
70B〜235B級以上のMoE保持 ※容量・量子化・実効上限に応じて分岐 |
強み:専用VRAMでは載らない巨大MoEの重みを単一筐体で保持しやすい。 制約:同じ容量でもメモリ帯域(256GB/s〜1.2TB/s)・OS・GPU利用可能上限・CUDA対応が異なる。 |
| D. GPU専用VRAM+システムRAM (MoE Expert部分オフロード) |
RTX GPU (16〜32GB+) + 大容量システムRAM (64〜192GB+) |
VRAMを超える中〜大型MoE llama.cpp --cpu-moe 等を活用 |
強み:AttentionとKVをGPUに残し、巨大なExpert重みだけをRAM側に置いて動作可能にする。 制約:生成速度はシステムRAM帯域・CPU性能・PCIe転送の制約を受ける。 |
パターンA:RTX 5090など32GB専用VRAMで中規模MoEを高速に回す
Qwen3-30B-A3B(総30.5B・活性3.3B)のように、4bit〜5bit量子化時のモデル重みが約16〜20GB前後に収まるMoEモデルを扱う場合、32GBのGDDR7専用VRAMを持つGeForce RTX 5090は極めて強力な選択肢になります。
32GBのVRAM内に全48層のExpert重みと長文のKVキャッシュを丸ごと収容できれば、PCIeバスを介したシステムRAMへのアクセスが一切発生しません。1,792GB/sという広いメモリ帯域と活性3.3Bの軽さが組み合わさることで、30Bクラスの知識量を持つモデルでありながら、非常に高速なレスポンスでコーディング支援やエージェント処理を行えます(16GB〜96GBまでのGPU別の選び方は「ローカルLLM向けGPUおすすめ比較|16GB・24GB・32GB・96GBで選ぶ」も参照してください)。
パターンB:RTX PRO 5000 / 5500 / 6000で「単一GPU専用VRAM」の上限を引き上げる
「CUDA環境と高速なGDDR7専用VRAMを維持したまま、32GBでは収まらないモデルや長大コンテキスト、複数リクエストの並列サービングを行いたい」という業務・研究用途では、NVIDIA Blackwell世代のプロフェッショナルGPU(RTX PROシリーズ)が選択肢に入ります。ここで重要なのは、型番によって実際のVRAM容量と性格が異なることです。
- RTX PRO 5000 Blackwell(48GB / 72GB GDDR7 ECC):300Wの省電力設計で、32GBでは不足する中規模MoEの高精度量子化(Q8/FP8)+長大コンテキストや、複数モデルの同時常駐に対応するステップアップ構成です(詳細は「RTX PRO 5000とRTX 5090はどっちを選ぶ?」を参照)。
- RTX PRO 5500 Blackwell(84GB GDDR7 ECC):最大600W級・MIG(2×42GB分割)に対応する84GBモデルです(※2026年10月時点でNVIDIA公式は「近日リリース予定」と案内しており、国内完成品WSの価格・発売日は各社発表の確認が必要です)。
- RTX PRO 6000 Blackwell(96GB GDDR7 ECC):単一GPUで96GBの高速ECC VRAMを提供し、OpenAIが「単一80GB GPUで実行可能」と案内する
gpt-oss-120b(MXFP4量子化)クラスや、70B級モデルをCPUオフロードなしで高速運用できるフラッグシップです(詳細は「RTX 5090とRTX PRO 6000を比較」を参照)。
パターンC:Ryzen AI Max / RTX Spark / DGX Spark / Mac Studioの大容量共有メモリ
単一GPUのVRAM上限(32GB〜96GB)を超える大型MoEモデルの重みを、1台のマシンでメモリ内に保持したい場合に注目されるのが、CPUとGPUが巨大なメモリプールを共有するユニファイドメモリ/共有メモリ環境です。
ただし、「共有メモリが128GBや192GBある」という数字だけで一括りにしてはいけません。
- 128GB共有メモリの現実(Ryzen AI Max+ 395 / RTX Spark / DGX Spark / Mac Studio M5 Max 128GB):70B級(Q4で約40〜43GB)や120B級の4bitモデル(
gpt-oss-120b等)を保持するには有力ですが、先述の通りQwen3-235B-A22BのQ4_K_M(約142GB)は128GBの物理容量自体を超えます。したがって「128GB機なら235Bの4bitモデルが必ず収まる」と断定することはできません。 - 192GB共有メモリの現実(Ryzen AI Max+ PRO 495搭載機など):192GBあれば約142GBの重みファイルを物理メモリに収める余地が生まれますが、GPU側への割り当て上限(例:最大160GB設定)、KVキャッシュ、ランタイム作業領域によって実行条件が変わるため、コンテキスト長や設定を含めた検証が必要です(128GBと192GBの詳細な境界は「128GBと192GB Unified Memory、動かせるLLMはどう変わる?」で解説しています)。
- 671B級(DeepSeek-V3等)の現実:総671Bのモデルは4bitの単純理論値だけでも約335GB以上となるため、128GBや192GBのPCで無条件に動かせると考えるのは誤りです。単一筐体で4bitクラスの重みを保持しようとすればMac Studio(M5 Ultra 最大512GB構成:Apple公式案内で2026年10月後半提供予定)のような超大容量環境や、複数ノード分散構成の領域になります。
- プラットフォームごとの差:同じ128GBクラスでも、Windows 11 on ArmのRTX Spark、Ubuntuベース(Linux Arm64)のDGX Spark、macOS(Metal / MLX)のMac Studio、x86_64(ROCm / Vulkan)のRyzen AI Maxでは、メモリ帯域幅(約256GB/s〜1.2TB/s)も対応ソフトウェアも大きく異なります(6環境の総合比較は「あなたの仕事ならRTX 5090・RTX PROか、RTX Spark・DGX Spark・Mac Studio・Ryzen AI Maxか」を参照)。
パターンD:GPU専用VRAM+システムRAM(llama.cpp --cpu-moe による役割分担)
「手元にはRTX 5090(32GB VRAM)やRTX 5080(16GB VRAM)があり、メインメモリ(システムRAM)は64GB〜128GB以上積んでいる」というデスクトップPCで、VRAM容量を超えるMoEモデルを動かす非常に実践的な手法が、共有層・AttentionとExpert重みの配置を分けるハイブリッド実行です。
現行の llama.cpp 公式CLI仕様(2026年10月19日確認)には、従来の単純なレイヤー単位オフロード(-ngl / --n-gpu-layers)に加えて、MoE構造に特化した以下のオプションが用意されています。
| llama.cpp 公式オプション | 公式仕様における動作(tools/cli/README.md) | MoE実行での活用目的 |
|---|---|---|
| -cmoe, --cpu-moe | すべてのMoE(Mixture of Experts)重みをCPU(システムRAM)側に保持する (env: LLAMA_ARG_CPU_MOE) |
毎回全トークンで計算されるAttention層やKVキャッシュだけをGPU VRAMに置き、容量の大部分を占めるExpert層を丸ごとシステムRAM側へ逃がす。 |
| -ncmoe, --n-cpu-moe N | 先頭から N 層分のMoE重みをCPU(システムRAM)側に保持する (env: LLAMA_ARG_N_CPU_MOE) |
GPUの空きVRAMに合わせて「入る分だけの層のExpertはGPU VRAMに置き、溢れる N 層分のExpertだけをCPU側に置く」という段階的な調整が可能。 |
| --moe-cache-mib N | CPU側に保持されたMoE Expertのために、GPU側に N MiBのキャッシュ領域を確保する (env: LLAMA_ARG_MOE_CACHE_MIB) |
頻繁に呼び出されるExpertをGPUメモリ上のキャッシュに保持し、CPU-GPU間の転送・待ち時間を緩和する。 |
| -ot, --override-tensor <pattern>=<buffer> |
テンソル名の正規表現パターンごとに配置先バッファ(CPU / CUDA0等)を直接指定する (env: LLAMA_ARG_OVERRIDE_TENSOR) |
特定のExpertテンソル群(ffn_.*_exps等)の配置先を細かく制御する上級者向け指定。 |
なぜこの方式がMoEで有効なのでしょうか。理由はシンプルです。MoEモデルでは、メモリ容量の80〜90%近くを「毎トークンでは一部(Top-K)しか使われないExpert FFN層」が占めている一方、毎トークン必ずフル稼働して計算が重くなる「Attention層とKVキャッシュ」の容量は比較的小さいからです。
したがって、-ngl all --cpu-moe(またはVRAM残量に応じた --n-cpu-moe N)を使うと、重たいAttention計算とKVキャッシュ参照を高速なGPU(CUDA)で処理しつつ、VRAMに入りきらない巨大なExpert群だけをシステムRAM+CPUで処理する分業が成立します。
ただし、このハイブリッド方式にも明確な物理的制約があります。CPU側に置いたExpertを計算・転送する際、システムRAMのメモリ帯域幅(一般的なデュアルチャネルDDR5では実効70〜90GB/s前後)とPCIeバスの同期レイテンシがボトルネックになるため、全層をGPUのGDDR7 VRAM内に収めた場合と比べればトークン生成速度は低下します(VRAMとシステムRAMの帯域差・オフロードの仕組みは「RAM 128GBでVRAM不足は補える? メインメモリとGPUメモリの違い・オフロードの限界」で詳しく解説しています)。
1台のPC内での工夫だけでなく、複数のGPUを用いてMoEを高速サービングする仕組みとして、vLLM などの推論エンジンは Expert Parallelism(--enable-expert-parallel) をサポートしています。これは従来のTensor Parallelism(各重み行列を全GPUへ細かく分割する方式)とは異なり、多数のExpertそのものを複数のGPUへ分担配置(EP_SIZE = TP_SIZE × DP_SIZE)する方式であり、大規模MoEの並列推論における局所性と通信効率を高めます。なお、複数GPUや2台のノードを束ねる分散推論の設計については、別途公開予定の分散推論ガイドおよび「RTX制作PC+128GB AIノードの2台構成ガイド」で詳しく扱います。
6. MoEのために大容量GPUを買うべきか? 用途別の判断基準
ここまで見てきた通り、MoEモデルを扱うからといって、全員が同じPCや大容量GPUを買う必要はありません。自分の用途にどの計算資源が必要かは、次の6つのチェック項目で判断できます。
動かしたいモデルの「総パラメータ重み+KVキャッシュ」が何GBになるか
Qwen3-30B-A3B(4bitで約16〜18GB級)が主目的なら、32GB VRAMのRTX 5090でVRAM内に余裕をもって収まります。一方、gpt-oss-120b(約80GB要件)なら96GBのRTX PRO 6000や128GB共有メモリ機、Qwen3-235B-A22BのQ4_K_M(約142GB)を丸ごとメモリ保持したいなら192GB以上の共有メモリ機(または512GB級Mac Studio[M5 Ultra 512GB構成は2026年10月後半提供予定])が検討対象になります。
長文の入力処理(Prefill)の待ち時間をどれだけ重視するか
数万トークンのソースコードや長大なPDFドキュメントを毎回読み込ませる用途では、Prefill時のGPU演算性能(Compute)が直結します。共有メモリ機やCPUオフロード環境では長文Prefillの待ち時間が長くなりやすいため、長文入力のレスポンスを重視するなら専用NVIDIA GPU(RTX 5090 / RTX PRO)の優先度が高まります。
単一ユーザーのToken生成速度(Decode)とモデル規模のどちらを取るか
「30B級のMoEを超高速(数十〜百tok/s級)でキビキビ動かしたい」なら高帯域GDDR7を積むRTX 5090が適しています。反対に「生成速度が穏やかでも、100B〜235B級の巨大な知識量を持つモデルをローカルで動かしたい」なら、大容量ユニファイドメモリ機や--cpu-moe併用構成が合理的な選択になります。
同時実行数(複数エージェント並行稼働・チーム共有)が多いか
1人で対話するだけならBatch Size = 1で済みますが、複数のAIエージェントに並列タスクを投げたり複数人で同時利用したりする場合、バッチ全体で呼び出されるExpertの種類数と総演算量(FLOPs)が増え、バッチサイズやRouterの選択分布・ランタイム最適化によって実効性能が左右されます。高バッチ運用では大容量VRAM搭載のRTX PROシリーズや複数GPU(vLLM環境)が有利です。
LLM以外にComfyUI(画像・動画生成)や3DCGなどCUDA必須の制作を行うか
1台のPCでローカルLLMも画像・動画生成も3DCGレンダリングもこなしたい場合、CUDAエコシステムと専用VRAMを持つGeForce RTX 5090搭載BTO PC(詳細は「RTX 5090搭載BTOパソコンおすすめ比較」)を主軸にするか、制作PCとは別に大容量AIノードを追加する2台分業が現実的です。
初期投資・消費電力・設置スペースと運用負荷をどこまで許容できるか
省スペース・低消費電力で128GB〜192GBのメモリ空間を手元に置きたいならRyzen AI Max搭載ミニPCやMac Studioが優位です。逆に、たまにしか235Bや671Bの超大型モデルを使わないのであれば、無理に高額なハードウェアを買わず、日常の30B級だけを手元のGPUで回して超大型モデルはクラウドGPUやAPIで補う判断も十分に合理的です。
7. まとめ:MoEは小容量GPUで巨大モデルを動かす魔法ではない
MoE(Mixture of Experts)は、巨大な知識量を持つモデルを「1トークンあたり一部のパラメータだけを使って効率的に計算する」ための仕組みであり、巨大モデルを小容量のGPUメモリで無条件に動かす魔法ではありません。
- 必要なメモリ容量(VRAM / 共有メモリ / RAM)は、活性パラメータ数ではなく、総パラメータ数 × 量子化の実効サイズ + KVキャッシュ + 作業領域で決まる。
- 単一ユーザーの推論速度(Decode)は、活性パラメータの少なさによって恩恵を受けるが、メモリ帯域幅(GB/s)とルーティング・バックエンド効率に強く制約される。
- 32GB以内に収まる中規模MoE(Qwen3-30B-A3B等)ならRTX 5090の高速VRAMが輝き、100B〜235B級の大型MoE保持なら128GB〜192GB以上の共有メモリ機・RTX PRO・あるいは
llama.cpp --cpu-moeを用いたVRAM+システムRAMのハイブリッド構成が選択肢になる。
モデルの名前や「活性〇B」という数字だけで判断せず、「総パラメータの重みをどこに置き、どのメモリ帯域で読み出すのか」を逆算して、自分の用途に最適な計算資源を選んでください。
※VRAMとシステムRAMの帯域差やPCIeバス経由のCPUオフロード限界を詳しく確認したい場合は「RAM 128GBでVRAM不足は補える? メインメモリとGPUメモリの違い・オフロードの限界」もあわせて参照してください。
よくある質問
MoEモデルは活性パラメータが少ないのに、なぜ大容量のGPUメモリやRAMが必要なのですか? +
Qwen3-235B-A22Bを4bit量子化すれば、理論上は約117.5GBなので128GBのPCで確実に動きますか? +
Qwen3-30B-A3Bは活性パラメータが3.3Bなので、4GBや8GBのGPUでも動きますか? +
llama.cppの「--cpu-moe」や「--n-cpu-moe」を使うと何が起きるのですか? +
MoEモデルの推論速度は、同じ活性パラメータ数のDenseモデルと全く同じになりますか? +
DeepSeek-V3(総671B・活性37B)は、128GBや192GBのユニファイドメモリPCでそのまま動かせますか? +
公式一次情報・参考資料(2026年10月19日確認)
- Qwen公式(Hugging Face):Qwen/Qwen3-30B-A3B-Base モデルカード(総30.5B / 活性3.3B / 128 Experts中8活性)
- Qwen公式(Hugging Face):Qwen/Qwen3-235B-A22B モデルカード(総235B / 活性22B / 128 Experts中8活性)
- Qwen公式(Hugging Face):Qwen/Qwen3-235B-A22B-GGUF 公式配布リポジトリ
- DeepSeek公式(GitHub):deepseek-ai/DeepSeek-V3 公式リポジトリ(総671B / 活性37B / MLA・DeepSeekMoE仕様)
- OpenAI公式:Introducing gpt-oss(gpt-oss-120b / gpt-oss-20b 公式発表)
- OpenAI公式(Hugging Face):openai/gpt-oss-120b モデルカード・config.json(総117B / 活性5.1B / 128 Experts中4活性 / MXFP4仕様)
- llama.cpp公式(GitHub):llama.cpp/tools/cli 公式CLIオプション仕様(--cpu-moe / --n-cpu-moe / --override-tensor)
- vLLM公式ドキュメント:Expert Parallel Deployment(--enable-expert-parallel 仕様)
- Apple公式:Mac Studio 仕様ページ(M5 Max / M5 Ultra ユニファイドメモリ構成・512GB構成提供時期)
※本記事は2026年10月19日時点の公開一次情報・仕様に基づく技術解説です。実際の必要メモリ量および推論速度は、量子化方式、コンテキスト長、バッチサイズ、推論ランタイムのバージョン、OS設定により変動します。
🧭 大容量AIメモリ選びの道標
容量、GPU演算、プラットフォーム、実機、配置。
今の迷いに合わせて、必要な判断へ移動できます。
VRAM・RAMとの違いと、大容量共有メモリがローカルAIで注目される理由を理解する。
モデルサイズ、コンテキスト、RAG・Agent運用から必要なメモリ容量を判断する。
70B〜100B超モデルや大規模MoEの量子化精度、長大コンテキスト、複数エージェント常駐から192GBの必要性を判断する。
モデルを収める容量と、高速に計算するGPU性能の違いから判断する。
RTX Spark・Ryzen AI Max・DGX Spark・Mac Studio。CUDA・OS・メモリ特性から選ぶ。
最大128GBの共有メモリとCUDAを備えるRTX Spark。実行性能・制作アプリ互換性・価格から、既存の計算環境をどこまで置き換えられるか判断する。
完成したAIノードか、OCuLinkで外へ拡張できるAIノードかを判断する。
1台へ集中するか、CUDA制作と大容量AIを別ノードへ役割分担するかを設計する。
この記事の編集・執筆
CORE SPEC編集部が、公開モデルの一次仕様(Qwen3・DeepSeek-V3)および推論ランタイム公式ドキュメント(llama.cpp・vLLM)を照合し、MoEモデルのメモリ要件と計算環境の選択基準を整理しました。
運営者情報・編集方針を見る計算資源の「最上位対決」|民生用フラッグシップとプロ用ワークステーションの境界線
計算資源の「価値・用途」|電力を計算を通じて価値へ変換する。主戦場がAIへ移った背景
計算資源の「所有・利用」|必要なときだけ借りるか、自分の環境として持つか。利用時間・VRAM・総コストから判断する
計算資源の「メモリ構造」|100GB超の大容量ユニファイドメモリと、高帯域なGDDR7専用VRAM。「載る容量」と「動かす速度」を分けて考える
計算資源の「境界線」|「入る」と「速い」の違い、PCIeボトルネックとオフロードの現実
計算資源の「哲学と自由」|買っているのはAIではない、AIを動かす自由だ。所有コストと依存コストの比較
計算資源の「制作フロー」|16GB・32GB・96GBで変わるのは「できること」より「制約の数」
計算資源の「コスト構造」|HBM・パッケージング・半導体製造の逼迫から見るGPU高騰の本質
計算資源の「モデル逆算」|7B〜120Bのモデル規模・量子化・KVキャッシュから必要なVRAM容量を逆算する
計算資源の「持続性」|GPUを動かし続ける電力・冷却・筐体・設置環境を考える
計算資源の「互換性とソフトウェア制約」|GPU性能の数字だけでなく、CUDAとROCm、PyTorch、ComfyUI、TouchDesignerの制作フロー全体からGPUの本当の選び方を整理する
計算資源の「冷却選定」|ローカルLLM用PCを選ぶとき、ケース・エアフロー・空冷・水冷のどこを見るか
計算資源の「共有メモリと購入判断」|Ryzen AI Max+ 395・Mac Studioなど、大容量ユニファイドメモリを使えるPCを用途別に比較する
計算資源の「容量境界とモデル選択」|128GBと192GBで変わるLLMの収容可能性、量子化精度、推論速度、投資判断を整理する。
計算資源の「データ主権と境界設計」|ローカル実行・商用API・ZDR特約の違いから機密データの通り道を設計する
計算資源の「モデル構造とメモリ逆算」|総パラメータ数と活性パラメータ数の違いから、必要なメモリ容量と計算環境を逆算する