Diagnostics
Every risky code path has a URL switch that falls back to the slower, simpler one. Handy to check whether an optimization is responsible for something odd — the answer should be identical, only slower.
?gemv=0 decode matmul → row kernels ?f16shared=0 f16 prefill GEMM → one row per thread ?qshared=0 q4/q8 prefill GEMM → 4 rows per invocation ?qshared2=0 q4/q8 prefill GEMM → v1 tiles (32×64) ?warmup=0 no weight warm-up (first message pays it) ?ggufstream=0 GGUF as one download instead of ranges ?kvq=0 KV cache in f32 instead of int8 ?timing=1 per-stage timing of the forward pass, in the console
Add a switch to the /chat URL, reload, and compare. Several can be combined with &.
Brimkern — open WebGPU engine, built by Romain Khanoyan. Local AI, WebGPU, on-device engines.