Phase 4 — Der Experten-Scheiben-Datenpfad (M1)
Ein schwaches Gerät lädt ein paar 6-MB-Experten, keine 1.4-GB-Layer — und die geshardete Rechnung gleicht der monolithischen bis auf 3.6e-12.
Eine Expertenscheibe ist eine Bytekopie — ohne Dequantisierung
MoE-Expertentensoren stapeln alle Experten entlang der äußersten ggml-Dimension, der Reader exponiert also (n_expert, rows, row_bytes) roher quantisierter Bytes. Experte *e* ist eine quantblock-ausgerichtete zusammenhängende Platte — die Scheibe ist buchstäblich data[a:b], ohne Dequantisierung und ohne Umpacken.
write_expert_shard_gguf — der verifizierte Roundtrip.
sliced = tensor.data[a:b] # outermost axis = expert
writer.add_tensor(name, sliced, raw_dtype=tensor.tensor_type)
# router (ffn_gate_inp) & shared expert stay on the backbone → excluded
GET /api/proxy/models/{m}/expert-shard?layers=0:2&experts=0:16 # node-token authed
dispatch + combine == monolithisch, exakt
Mit echten Layer-0-Experten des 122B (dequantisierte Referenz) gleicht das Aufteilen der Experten in 4 Shards, separates Berechnen und Kombinieren der monolithischen MoE-FFN: Sharding ist eine exakte Umgruppierung derselben gewichteten Summe, keine Näherung.
linkcpp-expert-worker reproduziert das Orakel auf ROCm
- Reines ggml/gguf (kein libllama): lädt die Scheibe in ein GPU-Backend und führt
mul_mat_id(up/gate) → swiglu → mul_mat_id(down)aus. - ROCm-Build + Lauf auf einem MI250: 122B Layer-0, Experten [0,8), 4 Tokens.
- Cosine 0.99995 vs. das Orakel, allclose(1e-3) = True, max|Δ| = 7.9e-7 — dieses Residuum ist selbst der erste gemessene Fall von Cross-Backend-Äquivalenz (ROCm vs. numpy).
- Derselbe Codepfad deckt CUDA/Metal/Vulkan/CPU ab (
mul_mat_id/swiglusind Standard-ggml; CUDA hat einen dedizierten MoE-Kernel).
Das schwerste, riskanteste Stück — der Worker-Kernel auf dem Gerät — wurde hier verifiziert. Was blieb, war die Backbone↔Worker-Orchestrierung; der Worker ist eine bewiesene reine Funktion, die diese Scheiben konsumiert.