Experten-Sharding

Ein MoE auf Expertenkörnung teilen, sodass ein Smartphone 42–340 MB Experten trägt statt einer 1.4-GB-Layer.

Experten-Sharding senkt die Trageeinheit des Schwarms von einer Layer (~1.4 GB beim 122B) auf einen Experten (5.3 MB). Ein schwaches Gerät lädt eine Scheibe von 8–64 Experten (42–340 MB), lädt sie als Pure-Function-Worker — ohne Attention, ohne KV, ohne Sampler — und rechnet seine Experten, wann immer der Router des Backbones sie auswählt.

Engine-Status. Experten-Sharding wurde auf Kvasirs vorheriger Engine gebaut und vorgeführt, und die Ergebnisse unten stammen aus dieser Arbeit. Die aktuelle Engine, [p4](/wiki/p4), bedient heute auf Layer-Körnung; die Übertragung des Experten-Shardings darauf ist entworfen und in Arbeit. Wo ein Detail ein Werkzeug oder eine Route benennt, ist es das, was auf der vorherigen Engine lief.

Zwei Rollen

Backbone × Worker

Die Schnittstelle in einer MoE-Layer (der Router läuft einmal, auf dem Backbone).

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
  • Das Backbone behält den dichten Pfad (Attention, Norms, Router, geteilter Experte, Combine) und hält alle Experten als RAM-ausgelagerte Fallback-Replik für Churn-Toleranz.
  • Worker (linkcpp-expert-worker --serve) beantworten (n_used, n_tokens, cur, sel) → experts über einen langlebigen TCP-Stream — denselben Stream, den das 443-Relay für Smartphones tunnelt.
  • Die Abdeckung heilt sich über den Experten-Abdeckungsmarkt selbst: POST /api/expert-coverage heartbeatet Bestände, GET /api/expert-demand aggregiert Knappheit, POST /api/expert-volunteer weist den knappsten Bereich zu, zugeschnitten aufs Budget des Nodes.
Gemessen, nicht versprochen

Auf echter Hardware verifiziert

  • Sharded-Rechnung == monolithisch bis max|Δ| = 3.6e-12 (eine exakte Umgruppierung, keine Näherung).
  • Prozessübergreifender Dispatch bei einer echten 122B-Dekodierung: argmax MATCH, Logit-Cosine 0.99869 — byteidentisch zu in-process.
  • Ein Galaxy S25 lud autonom seine 1.58-GB-Scheibe und rechnete bei jedem Token die Layer-0-Experten: 8/8 Token identisch zum lokalen Lauf.
  • Eine entfernte GPU über das öffentliche Internet — ein WAN-Roundtrip pro Token — blieb greedy 8/8 identisch (cosine 0.99773): 1.2% Durchsatz-Overhead auf einer direkten Verbindung, ~28% über einen CDN-Edge. Die ehrlichen Kosten des seriellen Per-Token-Dispatch, und warum der Hebel des Gewebes das Bündeln ist, nicht niedrigere Latenz.
  • Gebündelter Dispatch erreicht 53k tok/s pro Worker bei Batch 512 (ROCm) — die Durchsatz-Gewebe-Eigenschaft, die den Schwarm praktikabel macht.