Ekuivalensi numerik
Backend berbeda tak pernah sepakat bit-demi-bit; swarm memperlakukan toleransi terukur sebagai kontrak kelas satu.
CUDA, ROCm, Adreno, dan CPU menghitung operasi yang sama dengan urutan reduksi, fusi FMA, akumulator, dan aproksimasi fungsi transendental yang berbeda — hasilnya berbeda ~1e-6…1e-3 per operasi, memang begitu desainnya, tak pernah bit-identik. Swarm yang tersusun dari perangkat keras apa pun yang datang tak bisa menuntut ketepatan bit, maka Kvasir mengukur ekuivalensi sebagai gantinya.
| Pasangan backend (122B nyata, pakar layer-0) | max|Δ| | cosine |
|---|---|---|
| CUDA (GB10 Blackwell) vs ROCm (MI250) | 3.5e-10 | 1.0000000000 |
| ROCm (MI250) vs numpy (x86) | 7.9e-7 | 0.99996 |
| ARM CPU ponsel vs numpy (x86) | 1.4e-6 | 0.99992 |
| CUDA (GB10 Blackwell) vs Grace ARM CPU | 2.6e-5 | 0.99975 |
Matriks backend lengkap telah ditutup: dua backend GPU (CUDA, ROCm) berbagi sumber kernel dan mendarat praktis bit-identik (cosine 1.0000000000), sementara pasangan GPU↔CPU tetap ekuivalen pada ~0.9997. Worker CUDA dan worker ROCm dapat dipertukarkan; worker GPU dan worker CPU ekuivalen secara numerik.
Penjumlahan floating-point tidak asosiatif
- Urutan reduksi matmul — tensor core, tile MFMA, workgroup OpenCL, dan lane SIMD mengakumulasi dalam urutan berbeda.
- Presisi akumulasi — penyimpanan F16/BF16 dengan akumulator F32 vs F16: tuas terbesar divergensi.
- Aproksimasi transendental — exp (softmax), silu (swiglu), dan rsqrt (norm) memakai varian polinomial/tabel yang berbeda per backend.
Toleransi, kapabilitas, otoritas tunggal
- Verifikasi adalah toleransi — "kesepakatan top-1 ≥ 99.x%, KL ≤ ε" — tak pernah kesetaraan bit.
- Backend dan presisi akumulasi diiklankan sebagai kapabilitas node; node berakumulasi F32 diutamakan untuk rank yang sensitif keluaran.
- Node di luar toleransi ditandai tak layak untuk rank sensitif, bukan ditolak mentah-mentah.
- Keputusan diskret (perutean, sampling) dipatok pada otoritas tunggal agar galat kontinu tak pernah menjadi divergensi diskret.