MoEモデルはparameter数より軽い?ローカル実行時のactive parameterとmemoryを分ける

目次
結論
MoEはactive parameterが少なくても全weightを保持する必要があるため、「parameter数が大きい=必ず計算もmemoryも同じ比率で重い」とも「active parameterだけ見ればよい」とも言えない。disk・RAM/VRAM・実行速度を分けて判断する。
比較対象は Hugging Face、llama.cpp。ただしブランド名を点数化するのではなく、dense/MoEのdisk・memory・speed比較図 を正本にして、total weights, active params, VRAM, RAM, speed を同じ条件へ揃えます。分からない項目は0点扱いせず「未確認」のまま保留にします。
2026-09-13時点で確認した重要点
- MoEはrouterがtokenごとにexpertを選択し、backendごとにmemory/計算特性が異なる。
- current serving/runtime機能と互換性を確認する。
- server runtime optionとmemory/cache関連設定をcurrent docsで確認する。
- GPU memory/utilization/processを実際の観測結果として取得できる。
hardware/runtimeではvendor specと自環境の観測を混ぜません。specは可能性を示し、実測は自分の条件での結果を示します。 変わり得るな仕様は変わるため、「この記事の結論を永久固定する」のではなく、変化した項目だけを最新の公式情報へ差し替えて同じ判断基準で再判定できる形にします。
判断表:dense/MoEのdisk・memory・speed比較図
| 軸 | 根拠 input | 継続 | 保留/停止 |
|---|---|---|---|
| total weights | checkpoint全体のweight容量と形式を記録 | 必須条件を満たし証拠が追える | 未確認、権限外、要件不一致 |
| active params | routerが選ぶexpert構造をmodel docs/configで確認 | 必須条件を満たし証拠が追える | 未確認、権限外、要件不一致 |
| VRAM | idle/warm-up/steady stateを分けてGPU memoryを記録 | 必須条件を満たし証拠が追える | 未確認、権限外、要件不一致 |
| RAM | host RAM resident量を同一load条件で確認 | 必須条件を満たし証拠が追える | 未確認、権限外、要件不一致 |
| speed | benchmark値を流用せず対象環境で必要なら測定 | 必須条件を満たし証拠が追える | 未確認、権限外、要件不一致 |
必須条件は加点方式で相殺しません。必須条件を通過した候補同士だけでcostや操作性を得失として比較します。
この判断で最初に分ける3種類の情報
1. Official 事実
pricing、plan、manual、support matrix、terms、policyなど、vendor/public authorityが現在公開している事実です。確認日と対象プラン・バージョン/SKUを必ず残します。
2. Local observation
自分のhardware、network、document、ワークフローで測る値です。benchmarkや修正時間を他人の値で代用しません。measurementが必要ならraw log、条件、確認日時から計算します。
3. 編集上の得失
「多少高くても管理が楽」「速度よりプライバシーを優先」などの価値判断です。事実のように書かず、必須条件を通過した後にだけ使います。
この3つを混ぜないことで、plan変更やmodel更新が起きても記事全体を書き直さず、影響する判断項目だけを更新できます。
total weights, active params, VRAM, RAM, speed をどう読むか
1. total weights
checkpoint全体のweight容量と形式を記録。未確認なら推測で埋めず、判断に必要なら保留へ送ります。
2. active params
routerが選ぶexpert構造をmodel docs/configで確認。未確認なら推測で埋めず、判断に必要なら保留へ送ります。
3. VRAM
idle/warm-up/steady stateを分けてGPU memoryを記録。未確認なら推測で埋めず、判断に必要なら保留へ送ります。
4. RAM
host RAM resident量を同一load条件で確認。未確認なら推測で埋めず、判断に必要なら保留へ送ります。
5. speed
benchmark値を流用せず対象環境で必要なら測定。未確認なら推測で埋めず、判断に必要なら保留へ送ります。
候補を見るときの確認点
- Hugging Face:この記事の比較軸に関係するcurrent プラン・バージョン/SKU/termsだけを記録し、brand知名度は加点しない。
- llama.cpp:この記事の比較軸に関係するcurrent プラン・バージョン/SKU/termsだけを記録し、brand知名度は加点しない。
同じサービス・モデル名でもplan、地域、OS、ハードウェアのリビジョン、契約形態で条件が変わります。比較表には「確認日」「対象プラン・バージョン」「参照URL」を同じ行へ残してください。
実務での判断手順
- 目的を1文に固定する。 機能名ではなく、何を買う・減らす・守る・移す・再現するのかを書く。
- 必須条件を先に置く。
total weightsを含め、欠けたら採用しない条件を決める。 - 最新の公式情報を読む。 料金・仕様・権限・termsは検索snippetではなくofficial pageへ戻る。
- 対象プラン・バージョン/SKUを固定する。 同名サービスの別planや旧世代を混ぜない。
- 判断表へ証拠を残す。 URL、確認日時、責任者、必要なら実際の観測結果を記録する。
- 停止条件を適用する。 不明点を平均点や想定値で埋めず、問い合わせ・小規模検証・保留へ戻す。
- 最後にcost/操作性を比較する。 必須条件を通過した候補だけを比較する。
選ばない・進めない条件
runtime/model/version/互換性または必要な実際の観測結果が不足する場合は性能優位を断定しない。
これは注意書きではなく判断 gateです。後から必要な証拠が揃えば同じ判断表へ戻して再評価できます。完了件数を増やす目的で未確認値を作りません。
よくある質問
一番おすすめを1つだけ決められますか?
固定1位にはしません。用途・権限・environment・契約条件が違うため、判断表の必須条件を通過した候補だけを比較します。
公式ページに書かれていない項目はどうしますか?
「ない」と推測せず未確認にします。必要なら提供元へ問い合わせるか、再現可能な検証を行って観測条件を残します。
古い比較記事の価格やbenchmarkを使ってよいですか?
使いません。SERPは検索意図の確認に使い、変わり得る情報はcurrent 公式情報へ戻します。他者benchmarkは参考情報に留め、この記事の実測として扱いません。
一次情報
- Hugging Face Transformers — Experts backends — MoEはrouterがtokenごとにexpertを選択し、backendごとにmemory/計算特性が異なる。
- vLLM — Documentation — current serving/runtime機能と互換性を確認する。
- llama.cpp — server README — server runtime optionとmemory/cache関連設定をcurrent docsで確認する。
- NVIDIA — nvidia-smi — GPU memory/utilization/processを実際の観測結果として取得できる。
まとめ
MoEはactive parameterが少なくても全weightを保持する必要があるため、「parameter数が大きい=必ず計算もmemoryも同じ比率で重い」とも「active parameterだけ見ればよい」とも言えない。disk・RAM/VRAM・実行速度を分けて判断する。
固定rankingではなく dense/MoEのdisk・memory・speed比較図 を正本にして、変化した事実だけを最新の情報源または実際の観測結果で差し替えれば、同じ判断基準で再判断できます。
まとめ
- MoEはactive parameterが少なくても全weightを保持する必要があるため、「parameter数が大きい=必ず計算もmemoryも同じ比率で重い」とも「active parameterだけ見ればよい」とも言えない。disk・RAM/VRAM・実行速度を分けて判断する。 固定rankingではなく **dense/MoEのdisk・memory・speed比較図** を正本にして、変化した事実だけを最新の情報源または実際の観測結果で差し替えれば、同じ判断基準で再判断できます。