Numerische Äquivalenz über heterogene Backends
CUDA, ROCm, Adreno und CPUs werden nie bitgenau übereinstimmen. Dass der Schwarm dennoch ein kohärentes Modell liefert, ist eine entworfene Eigenschaft, kein Glück.
Exakt vs. äquivalent — zwei verschiedene Eigenschaften
- Innerhalb eines Backends — exakt (3.6e-12): Experten über Knoten zu verteilen und zu kombinieren ist dieselbe gewichtete Summe, nur umgruppiert; der einzige Unterschied ist die Gleitkomma-Akkumulationsreihenfolge. Orakelverifiziert.
- Zwischen Backends — äquivalent (1e-3…1e-6): dieselbe Operation auf anderer Hardware trägt einen relativen Fehler pro Op von ~1e-3–1e-6 und ist nie null. In diesem Regime lebt der Schwarm.
„Exakt" garantiert die Zerlegung innerhalb eines Geräts. „Äquivalent" gibt einem heterogene Hardware. Die Aufgabe des Schwarms ist, zu verhindern, dass sich Äquivalenz zu Divergenz aufschaukelt.
Keine Theorie — auf Hardware gemessen
Dieselbe Layer-0-Experten-FFN von Qwen3.5-122B, berechnet von linkcpp-expert-worker auf einem MI250 (ROCm), der ARM-CPU eines Smartphones (SM-S938N) und einer x86-numpy-Referenz — gleiche Eingaben, gleiche Gewichte, andere Befehlssätze und Reduktionsreihenfolgen:

| Backend-Paar | max|Δ| | cosine |
|---|---|---|
| ROCm (GPU) vs numpy (x86) | 7.9e-7 | 0.99996 |
| Smartphone-ARM-CPU vs numpy (x86) | 1.4e-6 | 0.99992 |
| ROCm-GPU vs Smartphone-ARM-CPU | 1.5e-6 | 0.99990 |
Drei Befehlssätze, eine Berechnung — jedes Paar äquivalent (cosine ≈ 0.9999), kein Paar bitidentisch (Δ ≈ 1e-6). Die Residuen sind klein, weil die Router-Autorität Eingaben und Expertenauswahl festgenagelt hat.
Ein späterer Lauf auf echter NVIDIA GB10 Grace Blackwell-Hardware schloss die Matrix auf dem letzten Backend: CUDA ↔ ROCm landete bei cosine 1.0000000000 (max abs 3.5e-10, praktisch bitidentisch, da beide GPU-Backends Kernel-Quellen teilen), und CUDA ↔ Grace ARM CPU bei cosine 0.99975 — dasselbe GPU↔CPU-Muster wie oben.
Gleitkomma-Addition ist nicht assoziativ
- Matmul-Reduktionsreihenfolge — Tensor-Cores, MFMA-Kacheln, OpenCL-Workgroups und SIMD-Lanes akkumulieren in verschiedenen Reihenfolgen und Kachelungen.
- FMA-Fusion —
a*b+ceinmal (FMA) oder zweimal gerundet, je Backend anders fusioniert. - Akkumulationspräzision — F16/BF16-Speicherung mit F32- vs. F16-Akkumulatoren (der größte Hebel der Divergenz).
- Transzendente Näherungen — Polynom-/Tabellenvarianten von exp (Softmax), silu/sigmoid (SwiGLU), rsqrt (Norms).
- Dequant + Matmul-Pfad — dequantisieren-dann-multiplizieren vs. fusionierte quantisierte Kernel runden Zwischenwerte anders.
- Nichtdeterministische Kernel — atomic/split-K-Reduktionen können auf demselben Gerät von Lauf zu Lauf variieren.
Nichts davon ist ein Bug. Es ist der Preis, den der schnelle Pfad jedes Beschleunigers zahlt.
Eine Autorität für Entscheidungen, genug Präzision fürs Akkumulieren
ROUTER-AUTORITÄT — die zentrale Invariante. Die einzige diskrete Entscheidung im Netzwerk ist das MoE-Routing (Top-8 von 256). Würde jedes Backend den Router neu ausführen, wählten Grenz-Token verschiedene Experten und würden wirklich divergieren. Kvasir führt den Router einmal, auf dem Backbone aus und schickt den Workern nur die ausgewählten Experten-IDs. Ein heterogener Schwarm mag sich in der *Größe* der Ausgabe jedes Experten unterscheiden — nie darin, *welche Experten laufen*. Das verwandelt katastrophale diskrete Divergenz in beschränkten kontinuierlichen Fehler und ist die Kohärenzregel des heterogenen Experten-Shardings.
- Diskretes Argmax: Dekodieren ist ein Argmax über Logits. Ein 1e-3-Wackeln kippt einen Token nur, wenn zwei Kandidaten näher als 1e-3 liegen — an den meisten Positionen ist die Marge weit größer, also kommen die Tokens identisch heraus; die seltenen Kipper sind Positionen, so mehrdeutig wie ein anderer Seed.
- Combine ist Addition: Teilergebnisse verschmelzen als wahrscheinlichkeitsgewichtete Summe. Unabhängige ~1e-4-Fehler addieren sich inkohärent — sie wachsen wie √k, nicht k — und ohne Auslöschung großer Werte bleibt das Residuum gut konditioniert.
Divergenzmodi und Verteidigungen
| Divergenzmodus | Mechanismus | Regel |
|---|---|---|
| Routing-Abweichung | Backends wählen bei Grenz-Token unterschiedliche Top-8 | Router-Autorität — einmal auf dem Backbone entschieden, IDs dispatcht |
| Trajektorien-Gabelung | Das Logit-Wackeln pro Token kippt irgendwann einen; die Sequenz gabelt wie ein neuer Seed | Dekodieren/Sampling an einen Knoten gepinnt |
| Tiefenakkumulation | 49 Layer × je ~1e-4 → bis zu 1e-2 an den finalen Logits | F32-Akkumulation an Grenzen und beim Combine |
| Selbst-Nichtdeterminismus | Atomic/split-K-Kernel variieren von Lauf zu Lauf | Deterministische Combine-Kernel; Verifikation mit Toleranzen |
| Präzisions-Abweichung | Ein Knoten akkumuliert F16, ein anderer F32 | Akkumulationspräzision als Fähigkeit ausgewiesen; F32-Knoten für Ausgaberänge bevorzugt |
Das Messprotokoll
- Delta pro Op — gleiche Eingaben, relativer Fehler A vs. B bei matmul, swiglu, softmax, norm.
- Layer-Grenzdrift — Residual-Delta nach einer Layer, gestapelt, um zu sehen, ob die Tiefe wie √L oder L akkumuliert.
- Ende-zu-Ende-Logit-Divergenz — L∞, L2 und KL-Divergenz über den vollen Forward.
- Entscheidungsübereinstimmung — Top-1-Token-Übereinstimmung plus Top-8-Routing-Übereinstimmung (validiert, warum Router-Autorität nötig ist).
- Generationsstabilität — greedy N Tokens; der erste Index, an dem A und B divergieren.
- Task-Ebene — Perplexity- und Eval-Score-Deltas: die einzige Metrik, die ein Nutzer wirklich spürt.
Ein Bestehen ist eine Toleranz — „Top-1-Übereinstimmung ≥ 99.x %, KL ≤ ε". Ein Knoten außerhalb der Toleranz wird für sensible Ränge als ungeeignet markiert, nicht pauschal abgelehnt.
Bit-Übereinstimmung ist unmöglich — und unnötig
Ein homogener Cluster kann Bitgenauigkeit annehmen; ein Schwarm nicht — seine Prämisse ist *welche Hardware auch immer auftaucht*. Also behandelt Kvasir numerische Äquivalenz genau wie Protokollkompatibilität: als erstklassigen, gemessenen Vertrag. Backends und Akkumulationspräzision werden als Knotenfähigkeiten ausgewiesen, Router-Autorität wird als Invariante erzwungen, und jede Verifikation nutzt Toleranzen statt Bitgleichheit. Gemessene numerische Äquivalenz + diskrete Entscheidungen einer einzigen Autorität — das lässt ein Modell auf jeder GPU der Erde zugleich laufen. Das ist der Schwarm.