エキスパートシャーディング

MoE をエキスパート粒度で分割し、スマートフォンが 1.4 GB のレイヤーではなく 42–340 MB のエキスパートを担う。

エキスパートシャーディングはスウォームの運搬単位をレイヤー(122B で約 1.4 GB)からエキスパート(5.3 MB)へ下げます。弱いデバイスは 8–64 個のエキスパートスライス(42–340 MB)をダウンロードし、アテンションも KV もサンプラーもない純関数ワーカーとしてロードし、バックボーンのルーターが自分のエキスパートを選ぶたびに計算します。

エンジンの現状。エキスパート粒度のシャーディングは Kvasir の以前のエンジン上で構築・実証されたもので、以下の結果はその成果です。現在のエンジンである [p4](/wiki/p4) は今日レイヤー粒度で提供しており、エキスパートシャーディングをそこへ移す作業は設計済みで進行中です。個々の記述がツール名やルート名を挙げている場合、それは以前のエンジンで動いていたものです。

二つの役割

バックボーン × ワーカー

MoE レイヤー内のカット地点(ルーターはバックボーンで一度だけ)。

cur   = ffn_norm(x)                     # backbone
ids,p = top_k(softmax(cur @ router), 8) # backbone — authoritative
send  (cur rows, local_ids) → worker    # ~6 KB per decode step
recv  expert_out            ← worker    # worker: 3 mat-muls
x = x + combine(p, partials) + shared(cur)   # backbone — exact
  • バックボーンはデンスパス(アテンション、norm、ルーター、共有エキスパート、combine)を保持し、チャーン耐性のため全エキスパートを RAM オフロードのフォールバック複製として常駐させます。
  • ワーカー(linkcpp-expert-worker --serve)は 1 本の長寿命 TCP ストリームで (n_used, n_tokens, cur, sel) → experts に応答します — スマートフォンでは 443 リレーがトンネルするまさにそのストリームです。
  • カバレッジはエキスパートカバレッジ市場で自己修復します:POST /api/expert-coverage が保有をハートビートし、GET /api/expert-demand が希少性を集計し、POST /api/expert-volunteer が予算に合わせて最も希少な範囲を割り当てます。
約束ではなく測定

実機で検証済み

  • シャーディング計算 == モノリシック、max|Δ| = 3.6e-12(近似ではなく厳密な再グループ化)。
  • 実 122B デコードのクロスプロセスディスパッチ:argmax MATCH、ロジット cosine 0.99869 — インプロセスとバイト単位で同一。
  • Galaxy S25 が自分の 1.58 GB スライスを自律ダウンロードし、毎トークン layer-0 のエキスパートを計算:ローカル実行と 8/8 トークン一致。
  • 公開インターネット越しのリモート GPU — トークンごとに WAN 往復 1 回 — でもグリーディに 8/8 一致を維持(cosine 0.99773):直接リンク上で1.2% のスループットオーバーヘッド、CDN エッジ経由では ~28%。トークンごとの逐次ディスパッチが払う正直なコストであり、このファブリックのレバーが低レイテンシではなくバッチ処理である理由です。
  • バッチディスパッチはバッチ 512(ROCm)でワーカーあたり 53k tok/s — スウォームを実用にするスループットファブリック特性。