Phase 4 — Jalur data irisan pakar (M1)
Perangkat lemah mengunduh beberapa pakar 6 MB, bukan lapisan 1.4 GB — dan komputasi sharded menyamai monolitik hingga 3.6e-12.
Irisan pakar adalah salinan byte — tanpa dekuantisasi
Tensor pakar MoE menumpuk semua pakar sepanjang dimensi ggml terluar, sehingga pembaca mengekspos (n_expert, rows, row_bytes) byte terkuantisasi mentah. Pakar *e* adalah lempengan bersambung selaras blok-kuantisasi — irisannya secara harfiah data[a:b], tanpa dekuantisasi dan tanpa pengemasan ulang.
write_expert_shard_gguf — bolak-balik yang terverifikasi.
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 == monolitik, persis
Dengan pakar layer-0 122B nyata (referensi terdekuantisasi), membagi pakar menjadi 4 shard, menghitung masing-masing secara terpisah lalu menggabungkan menyamai FFN MoE monolitik: sharding adalah pengelompokan ulang eksak dari jumlah berbobot yang sama, bukan aproksimasi.
linkcpp-expert-worker mereproduksi oracle di ROCm
- ggml/gguf murni (tanpa libllama): memuat irisan ke backend GPU dan menjalankan
mul_mat_id(up/gate) → swiglu → mul_mat_id(down). - Build + run ROCm di MI250: 122B layer-0, pakar [0,8), 4 token.
- Cosine 0.99995 vs oracle, allclose(1e-3) = True, max|Δ| = 7.9e-7 — residu ini sendiri adalah kasus terukur pertama ekuivalensi lintas-backend (ROCm vs numpy).
- Jalur kode yang sama mencakup CUDA/Metal/Vulkan/CPU (
mul_mat_id/swigluadalah ggml standar; CUDA punya kernel MoE khusus).
Bagian tersulit dan paling berisiko — kernel worker di perangkat — terverifikasi di sini. Yang tersisa adalah orkestrasi backbone↔worker; worker adalah fungsi murni terbukti yang mengonsumsi irisan-irisan ini.