Ekuivalensi numerik lintas backend heterogen

CUDA, ROCm, Adreno, dan CPU tak akan pernah sepakat bit-demi-bit. Bahwa swarm tetap menghasilkan satu model koheren adalah sifat yang dirancang, bukan keberuntungan.

Pembedaan kunci

Eksak vs ekuivalen — dua sifat berbeda

  • Dalam satu backend — eksak (3.6e-12): membagi pakar antar node lalu menggabungkannya adalah jumlah berbobot yang sama dikelompokkan ulang; satu-satunya perbedaan adalah urutan akumulasi floating-point. Terverifikasi oracle.
  • Antar backend — ekuivalen (1e-3…1e-6): operasi yang sama di perangkat keras berbeda membawa galat relatif per-op sekitar 1e-3–1e-6, dan tak pernah nol. Swarm hidup di rezim ini.

"Eksak" adalah yang dijamin dekomposisi di dalam satu perangkat. "Ekuivalen" adalah yang diberikan perangkat keras heterogen. Tugas swarm adalah mencegah ekuivalensi menumpuk menjadi divergensi.

Terukur · 122B nyata, tiga backend

Bukan teori — diukur di perangkat keras

FFN pakar layer-0 Qwen3.5-122B yang sama, dihitung oleh linkcpp-expert-worker di MI250 (ROCm), ARM CPU ponsel (SM-S938N), dan referensi numpy x86 — masukan sama, bobot sama, set instruksi dan urutan reduksi berbeda:

Three backends feeding one comparator where their waveforms overlap within tolerance
Pasangan backendmax|Δ|cosine
ROCm (GPU) vs numpy (x86)7.9e-70.99996
ARM CPU ponsel vs numpy (x86)1.4e-60.99992
GPU ROCm vs ARM CPU ponsel1.5e-60.99990

Tiga set instruksi, satu komputasi — setiap pasangan ekuivalen (cosine ≈ 0.9999), tak ada pasangan yang bit-identik (Δ ≈ 1e-6). Residunya kecil karena otoritas router mematok masukan dan pemilihan pakar.

Jalan berikutnya di perangkat keras NVIDIA GB10 Grace Blackwell nyata menutup matriks pada backend terakhir: CUDA ↔ ROCm mendarat pada cosine 1.0000000000 (max abs 3.5e-10, praktis bit-identik, karena kedua backend GPU berbagi sumber kernel), dan CUDA ↔ Grace ARM CPU pada cosine 0.99975 — pola GPU↔CPU yang sama seperti di atas.

Mengapa backend berbeda

Penjumlahan floating-point tidak asosiatif

  • Urutan reduksi matmul — tensor core, tile MFMA, workgroup OpenCL, dan lane SIMD mengakumulasi dalam urutan dan pengubinan berbeda.
  • Fusi FMA — a*b+c dibulatkan sekali (FMA) atau dua kali, difusikan berbeda per backend.
  • Presisi akumulasi — penyimpanan F16/BF16 dengan akumulator F32 vs F16 (tuas terbesar divergensi).
  • Aproksimasi transendental — varian polinomial/tabel dari exp (softmax), silu/sigmoid (swiglu), rsqrt (norm).
  • Jalur dequant + matmul — dekuantisasi-lalu-matmul vs kernel terkuantisasi terfusi membulatkan nilai antara secara berbeda.
  • Kernel non-deterministik — reduksi atomic/split-K bisa berbeda antar-run di perangkat yang sama.

Tak satu pun dari ini adalah bug. Ini harga yang dibayar jalur cepat tiap akselerator.

Mengapa tetap berhasil

Satu otoritas untuk keputusan, presisi cukup untuk akumulasi

OTORITAS ROUTER — invarian inti. Satu-satunya keputusan diskret dalam jaringan adalah perutean MoE (top-8 dari 256). Jika tiap backend menjalankan ulang router, token perbatasan akan memilih pakar yang berbeda dan benar-benar divergen. Kvasir menjalankan router sekali, di backbone, dan hanya mengirim id pakar terpilih ke worker. Swarm heterogen boleh berbeda pada *besaran* keluaran tiap pakar — tak pernah berbeda pada *pakar mana yang berjalan*. Ini mengubah divergensi diskret katastrofik menjadi galat kontinu terbatas, dan merupakan aturan koherensi sharding pakar heterogen.

  • Argmax diskret: dekode adalah argmax atas logits. Goyangan 1e-3 hanya membalik token bila dua kandidat berjarak kurang dari 1e-3 — di sebagian besar posisi marginnya jauh lebih besar, sehingga token keluar identik; pembalikan langka terjadi di posisi seambigu seed yang berbeda.
  • Combine adalah penjumlahan: hasil parsial melebur sebagai jumlah berbobot probabilitas. Galat independen ~1e-4 bertambah secara inkoheren — tumbuh seperti √k, bukan k — dan tak ada pembatalan nilai besar, sehingga residu tetap terkondisi baik.
Di mana bisa rusak · dan aturan yang menghentikannya

Mode divergensi dan pertahanan

Mode divergensiMekanismeAturan
Ketidakcocokan peruteanBackend memilih top-8 berbeda untuk token perbatasanOtoritas router — diputuskan sekali di backbone, id di-dispatch
Percabangan lintasanGoyangan logit per token akhirnya membalik satu token; urutan bercabang seperti seed baruDekode/sampling dipatok ke satu node
Akumulasi kedalaman49 lapisan × ~1e-4 masing-masing → hingga 1e-2 di logits akhirAkumulasi F32 di perbatasan dan combine
Non-determinisme diriKernel atomic/split-K bervariasi antar-runKernel combine deterministik; verifikasi memakai toleransi
Ketidakcocokan presisiSatu node mengakumulasi F16, yang lain F32Presisi akumulasi diiklankan sebagai kapabilitas; node F32 diutamakan untuk rank keluaran
Ekuivalensi adalah angka

Protokol pengukuran

  • Delta per-op — masukan sama, galat relatif A vs B pada matmul, swiglu, softmax, norm.
  • Drift perbatasan lapisan — delta residual setelah satu lapisan, ditumpuk untuk melihat apakah kedalaman terakumulasi sebagai √L atau L.
  • Divergensi logit ujung-ke-ujung — L∞, L2, dan divergensi KL atas forward penuh.
  • Kesepakatan keputusan — kesepakatan token top-1 plus kesepakatan perutean top-8 (memvalidasi mengapa otoritas router diperlukan).
  • Stabilitas generasi — greedy N token; indeks pertama tempat A dan B berbeda.
  • Tingkat tugas — delta perplexity dan skor evaluasi: satu-satunya metrik yang benar-benar dirasakan pengguna.

Kelulusan adalah toleransi — "kesepakatan top-1 ≥ 99.x%, KL ≤ ε". Node di luar toleransi ditandai tak layak untuk rank sensitif, bukan ditolak mentah-mentah.

Mengapa ini teknologi inti swarm

Kesepakatan bit mustahil — dan tak perlu

Klaster homogen bisa mengasumsikan ketepatan bit; swarm tidak — premisnya adalah *perangkat keras apa pun yang datang*. Maka Kvasir memperlakukan ekuivalensi numerik persis seperti kompatibilitas protokol: kontrak kelas satu yang terukur. Backend dan presisi akumulasi diiklankan sebagai kapabilitas node, otoritas router ditegakkan sebagai invarian, dan setiap verifikasi memakai toleransi alih-alih kesetaraan bit. Ekuivalensi numerik terukur + keputusan diskret otoritas tunggal — itulah yang membuat satu model berjalan di setiap GPU di bumi sekaligus. Itulah swarm.