最近のAI業界は、新しいモデルが出るたびに「過去最大」だの「人間の知性を超えた」だのといった派手な宣伝文句が飛び交い、正直うんざりしている部分もある。しかし、今回の「GLM-5.2」のオープンウェイト公開というニュースには、私のような古い組み込み屋の血も少し騒いだ。753B、つまり7530億パラメータという途方もない規模のMoE(Mixture of Experts)モデルが、誰でもダウンロードできる形で転がっている。しかもコンテキストウィンドウは100万トークン。この怪物を、クラウドの巨大なリソースではなく、ローカルのPC環境で動かそうとするコミュニティの挑戦には、かつて限られたハードウェア資源で戦ってきたエンジニアの魂を揺さぶるものがある。
GLM-5.2登場!753B巨大MoEをPCで動かす方法

753Bで1Mコンテキストのウェイト公開は狂ってる。でもこれ、普通の人間がどうやってロードするんだ?

MoEはアクティブな計算は軽いが、メモリ上にウェイトを全部置く必要がある。PCIeの帯域幅がボトルネックになりそうだ。
GLM-5.2の登場は、単なるモデルサイズのインフレではない。7530億という途方もないパラメータ数を持ちながら、オープンウェイトとして公開されたこと、引いては100万トークンという長大なコンテキストを扱える点が、世界中のローカルLLM愛好家やエンジニアの挑戦欲に火をつけている。私たちはこれまで、大手テック企業が提供するAPIの枠内でしか巨大モデルを触れなかったが、これでようやく自前のマシンにウェイトを落とし込んで、その挙動を直接観察できるようになった。
しかし、喜んでばかりはいられない。753Bという数字は、ローカルで動かすにはあまりにも巨大すぎる。MoE構造を採用しているため、推論時に入力トークンごとに活性化されるパラメータ(アクティブパラメータ)は一部に限定され、計算負荷自体はサイズほど重くない。それでも、動作させるためにはすべてのウェイトをメモリ上に保持しなければならないという、MoE固有 of 物理的な限界が立ちはだかる。この怪物を個人のPC環境でどう飼い慣らすかという泥臭い技術論が、今コミュニティで熱く交わされているのだ。
ここが面白い:技術的背景とコミュニティの熱量
MoE(Mixture of Experts)モデルの最大の特徴は、モデル全体を複数の「エキスパート」と呼ばれるサブネットワークに分割し、トークンごとに最適なエキスパートをゲート(ルーター)が選択して処理を割り振る点にある。GLM-5.2は全体で753Bの規模を持つが、一度の推論で動くのはその一部のパラメータだけだ。しかし、ウェイトがメモリ上に存在しなければ推論は行えない。ここで重要になるのが、モデルをどれだけ圧縮し、どれだけのVRAMを確保すべきかという物理的な計算である。
必要な最小VRAM容量を算出するための基本的な式を以下に示す。パラメータ数を Nparam、量子化ビット数を b とし、さらに長大なコンテキストを扱うためのKVキャッシュ容量を Mkv_cache と置くと、最小VRAM容量 Mvram (GB) は以下の式で定義できる。
Mvram = (Nparam * b) / (8 * 109) + Mkv_cache
この式をGLM-5.2(753Bパラメータ)に当てはめる。モデルを一般的な4ビット量子化(b = 4)で運用する場合、ウェイトの保持だけで (753 * 109 * 4) / (8 * 109) = 376.5 GB のVRAMが必要になる。これに加えて、100万トークンという巨大なコンテキストを扱うためのKVキャッシュ(Mkv_cache)が上乗せされる。KVキャッシュは、文脈の長さに比例してギガバイト単位で肥大化するため、4ビット量子化であっても実質的に400GB以上の超高速なメモリ領域を確保しなければ、このモデルのポテンシャルを引き出すことはできない。
このメモリの壁を突破するために、コミュニティではモデルデータをビット単位で圧縮する「量子化(Quantization)」技術が極限まで追求されている。この取り組みを見ていると、私は1990年代に自分が経験した泥臭い開発を思い出さずにはいられない。当時、私たちは68000マイコンや80286PC向けに、日本語の漢字フォントデータ(JIS第1・第2水準)や、画面に描画するための複雑な3D地図データを、フロッピーディスクや僅か数百KBしかないROMの中にどうにかして収める必要があった。
データをそのまま保持していては絶対に収まらないため、独自のハフマン可変長圧縮や、座標データの差分だけを記録するベクトル圧縮を自分たちで考案した。そして、CPUの非力なビットシフト命令(LSRやASLなど)を駆使し、クロックサイクル数を1サイクル単位で削りながら、メモリ上でデータをリアルタイムに展開するコードをアセンブラでガリガリと書いたものだ。1ビットの読み出し位置がずれればフォントは崩れ、地図はバグだらけになる、胃が痛むような作業だった。
現代のLLMにおける量子化技術、例えばFP16からINT4やFP3、あるいはGGUFといったブロックごとのスケーリングを伴う圧縮は、やっていることの数理的アプローチこそ違えど、「限られたメモリ帯域と容量の中に、どれだけ情報を詰め込み、いかに低オーバーヘッドで解凍してCPUやGPUに供給するか」という点で、本質的にあの頃のビットシフト戦術と全く同じだ。計算速度よりもメモリからデータを読み出す帯域(Memory Bandwidth)がボトルネックになるMoEモデルの推論において、この圧縮と展開の泥臭い最適化は、まさにエンジニアリングの真骨頂と言える。
ここで、MoEの核心部である「ゲートによるエキスパートルーティング」の処理をC++で模擬したコードを示す。各トークンがどのエキスパートに割り振られるか、工程とその出力がどのように重み付けされるかを計算するTop-2 Gatingの簡易的なシミュレーションである。
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
// トークンが割り振られたエキスパートとその重みを保持する構造体
struct RoutedExpert {
int id;
float weight;
};
// ゲートのロジット(各エキスパートへの適合度)からTop-2のエキスパートを決定する
std::vector<RoutedExpert> select_top2_experts(const std::vector<float>& gate_logits) {
int num_experts = gate_logits.size();
if (num_experts < 2) return {};
// ソフトマックス計算のための指数値算出
std::vector<float> exp_values(num_experts);
float sum_exp = 0.0f;
for (int i = 0; i < num_experts; ++i) {
exp_values[i] = std::exp(gate_logits[i]);
sum_exp += exp_values[i];
}
// 確率分布(ソフトマックス値)の算出
std::vector<std::pair<int, float>> probs(num_experts);
for (int i = 0; i < num_experts; ++i) {
probs[i] = {i, exp_values[i] / sum_exp};
}
// 確率が高い順にソート
std::sort(probs.begin(), probs.end(), [](const auto& a, const auto& b) {
return a.second > b.second;
});
// Top-2のエキスパートの確率を抽出し、その2つで重みを再正規化する
float top1_prob = probs[0].second;
float top2_prob = probs[1].second;
float denom = top1_prob + top2_prob + 1e-9f; // ゼロ除算防止
return {
{probs[0].first, top1_prob / denom},
{probs[1].first, top2_prob / denom}
};
}
int main() {
// 8個のエキスパートに対するゲート出力のロジット例
std::vector<float> example_logits = {0.5f, 2.1f, -1.0f, 3.4f, 0.2f, 1.1f, -0.5f, 2.8f};
auto routed = select_top2_experts(example_logits);
std::cout << "Selected Experts and Weights:" << std::endl;
for (const auto& exp : routed) {
std::cout << "Expert ID: " << exp.id << ", Weight: " << exp.weight << std::endl;
}
return 0;
}
しかし、このMoE構造と量子化技術をもってしても、個人がPCでGLM-5.2を動かすには極めて冷酷な現実が横たわっている。まず第一に、VRAMの物理的な壁だ。376GB以上のVRAMを確保するには、現状のコンシューマ向け最上位GPUであるRTX 3090や4090(VRAM 24GB)を16枚以上並べる必要がある。一般家庭の電源容量やマザーボードのPCIeレーン数を考えれば、これは個人のデスクトップPCの域を完全に逸脱している。
第二に、GPUのメモリに収まりきらない部分をシステムメインメモリ(DDR4やDDR5)にオフロードして動かすという回避策(llama.cppなどでの動作)があるが、これはMoEモデルにおいては致命的な速度低下を招く。通常の高密度(Dense)モデルであれば、順次メモリからパラメータを読み込んで計算するため、CPUメモリへのオフロードでもある程度の予測可能性と一定の速度が保てる。しかし、MoEはトークンごとにアクセスするエキスパートが目まぐるしく変化する。PCIeバスを介して毎トークン異なったウェイトをメインメモリからGPUへ転送する処理が発生すれば、通信帯域幅がボトルネックとなり、推論速度は「1トークン出力するのに数秒待つ」という実用不可能なレベルにまで低下する。
第三に、100万トークンという広大なコンテキストウィンドウの扱いだ。コンテキストが長くなればなるほど、アテンション計算で生成されるKVキャッシュ(Key-Value Cache)のサイズは加速度的に増加する。どれほどモデルウェイトを圧縮したとしても、入力するプロンプトが長くなれば、その文脈維持だけで数十GBのVRAMが文字通り吹き飛ぶ。FlashAttentionやKVキャッシュの量子化といった最新の最適化を適用したとしても、長大な入力を実用的なレイテンシで処理するためには、計算能力以上に「メモリのバス幅と容量」が要求されるという事実は変わらない。
この話題をどう見るか?:現実的な視点と利用価値
日本の個人デベロッパーや私のような週末エンジニアにとって、この手の巨大モデルをローカルで動かす挑戦は、まず電源環境という極めてローカルな問題と衝突する。我が家は千葉県市川市の一般的な一戸建てだが、1つのブレーカーで使える電力は15A(1500W)までだ。RTX 4090を複数枚搭載した自作PCをフルパワーで回せば、システム全体で簡単に1000Wを超え、エアコンや電子レンジを同時に使った瞬間に部屋が暗転する。実際、夜中にモデルのロードテストを行っていた際、ファンが掃除機のような爆音を上げ始め、リビングで寝ていた愛犬のコテツ(柴犬)が飛び起きて吠え散らかし、家内から大目玉を食らったのは一度や二度ではない。日本の住宅事情において、マルチGPU構成のローカルLLMは物理的な騒音と熱、そして電気代との戦いそのものだ。
では、そこまでのリスクとコストを払って、なぜクラウドAPIではなくローカルで動かす必要があるのか。その答えは、データの機密性とランニングコストの予測可能性にある。ソースコードの解析や社内の機密文書を読み込ませる際、外部のAPIにデータを送信することはセキュリティポリシー上、許されないケースが多々ある。また、開発段階でプロンプトの調整や評価を数千回、数万回と繰り返す場合、APIの従量課金は恐ろしい速度で予算を食い潰していく。753BのGLM-5.2がローカルで(たとえ低速であっても)動くという選択肢が存在すること自体が、開発者にとって強力な武器になるのだ。
さらに言えば、このオープンウェイトモデルの存在は、独自のファインチューニングや、特定タスクに特化させたエキスパートの差し替えといった、クローズドなAPIサービスでは絶対に不可能なカスタマイズの自由度をもたらす。コミュニティがモデルの重みを手に入れ、その構造を自由にハックできるようになった時、手元にある枯れた技術や泥臭い最適化手法が再び輝き始める。これこそが、オープンソースコミュニティの持つ本質的な熱量であり、私たちがローカルでの動作にこだわり続ける最大の理由だ。
導入・試す前の実用メモ
- PCIeレーン数とマザーボードの仕様確認:マルチGPU構成にする場合、マザーボードやCPUのPCIeレーン数が「x16 / x0」から「x8 / x8」、あるいはそれ以下に制限されないか確認する必要がある。MoEモデルはGPU間の通信やホストとの通信帯域がボトルネックになるため、レーン数の減少は直接的な性能低下を招く。
- 電源ユニットの選定とコンセント系統の分離:VRAMを稼ぐためにGPUを3枚以上使用する場合、1200Wクラスの電源ユニットが複数必要になる。PCを接続するコンセントが、部屋の他の家電(特にエアコンや電子レンジ)と同じ系統のブレーカーになっていないか、配線図を確認して事前に負荷を分散させておくのが賢明だ。
- 量子化形式(GGUF / EXL2)の選択:メモリ容量がシビアなローカル環境では、ウェイトを動的にロード可能なGGUF形式や、GPU専用で高速な推論が可能なEXL2形式の適切な量子化モデルを選択する必要がある。まずは3ビットや4ビットの軽量化版から試行し、マシンの限界を見極めるステップを踏むべきだ。
運営者としての現場判断
このGLM-5.2という753Bの怪物を前にして、下すべき現場の判断は明確だ。趣味の範疇を超えて、実務で今すぐこのモデルをローカルマルチGPU環境で運用するのは、コストパフォーマンスの観点から極めて非現実的であると言わざるを得ない。機密データを扱うにしても、Llama-3クラスのより軽量で高効率なモデル(8B〜70B)を適切にファインチューニングし、シングルまたはデュアルGPUで運用する方が、電気代や保守コストを考慮すれば圧倒的に実用的だ。
しかし、だからといってこのモデルを無視していいわけではない。私たちは「人柱」たちがこの巨大なモデルをどうにかして一般のPCで滑らかに動かそうと試行錯誤するプロセス、その過程で生まれる新しいテンソル並列化ライブラリや量子化アルゴリズムの進化を注視し、手元の開発環境でいつでも試せる準備をしておくべきだ。技術のブレイクスルーは、こうした巨大すぎるモデルを「どうにかして動かしたい」というエンジニアたちの執念から生まれるからである。
私は、当面の間はクラウドのAPIでこのモデルの挙動と100万トークンの実力を評価しつつ、ローカルPCでは4ビット以下に極限まで削ぎ落とされたGGUFモデルを使って、メモリ帯域と推論速度のトレードオフデータを収集することにする。週末、愛犬のコテツを散歩させながら、市川市の静かな住宅街を歩きつつ考えるのは、かつて数百KBのROMに全てを詰め込んだあの執念が、今や数千億のパラメータをPCに詰め込む執念へと形を変えて受け継がれているという事実だ。道具は変われど、エンジニアの闘い方は何も変わっていない。
広告・アフィリエイトリンクを含みます。商品選定は記事内容との関連性を優先しています。


