You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
SPARKINFER_PREFILL_MOE_GPU=1 (device tilemap, skips the per-layer D2H counts
sync) is silently broken on main: the down projection's masked Q->int8 dequant
has cols=mffn=512, which the vectorized fast-mask kernel declines (cols not a
multiple of 1024), and launch_gguf_dequant_rows_i8_mask ignored that false
return — so the int8 down weights were never written and the down GEMM ran on
stale/garbage data. Batched-vs-token-loop prefill_check collapses to TOP1 ~0.375
/ KL ~0.35 @512 (this is the #586 corruption that forced the path default-off).
Fix: launch_gguf_dequant_rows_i8_mask now falls back to a correct masked slow
kernel (single-pass, register-resident, same dequant/amax/round as the host
deq_rows_i8_kernel; dead experts exit via the counts mask) when the fast path
declines. Restores prefill_check to TOP1 0.94 / KL ~0.01 @512 with MOE_GPU=1.
Keeps SPARKINFER_PREFILL_MOE_GPU default OFF: the device path is not currently a
prefill speedup (it must dequant all experts per group rather than the host
path's live-only coalesced runs), so this is a correctness fix for the opt-in
flag, not a perf change. The default host-tilemap path is unaffected.
0 commit comments