Repository navigation
Releases
2026.11.14.09
Unpack anywhere, then run setup.cmd (or zero-launcher.cmd once a model is there).
New since 2026.11.14.08:
- Faster prompts on Arc Pro B60 / B70: the XMX prompt GEMM now prefetches its weights one chunk ahead by default. A B60's sweep measured the 27B's 4K prompt 1,322 -> 1,529 tok/s and 512 tokens 737 -> 867, with the same logits (issue #4, thanks to manoreken2).
ARC_GEMM_XW_PF=0turns it off. - DeepSeek-V4.1-Flash over several GPUs (
--gpus N): its routed experts are split over the GPUs, and the rest runs whole on each. It has been checked on test models over 1-4 simulated GPUs (the same accuracy as one GPU). Speed on real cards: to be measured (issue #4). - Docs and website: every user's latest numbers (one to four B60s, Linux with direct GPU-to-GPU sums, a slow x4 link, the B70, the Arc 140T, long contexts up to 262K over four B60s).
iGPUs and every other model: the same logits bit for bit.
2026.11.14.08
Unpack anywhere, then run setup.cmd (or zero-launcher.cmd once a model is there).
New since 2026.11.14.07:
- DeepSeek-V4.1-Flash UD-Q8_K_XL opens now (issue #4). Unsloth's part 1 of 9 holds only metadata and ends without the usual padding, and the GGUF reader refused it as "truncated". Keep the nine parts as they are: no merging is needed.
scripts\hf-get.ps1downloads a whole folder of a model repository, so a split model arrives complete:powershell -File scripts\hf-get.ps1 unsloth/DeepSeek-V4.1-Flash-1017-GGUF UD-Q8_K_XL. It checks the drive's free space first and prints the command to run the model at the end.- Flash Next precise mode repaired (PR #21, thanks to chumbleyjl): precise KL on a code prompt 0.0046 / 0.0206 -> 0.0017 / 0.0022 (prompt / generation), the same speed. Default mode and every other model: the same logits bit for bit.
2026.11.14.07
Unpack anywhere, then run setup.cmd (or zero-launcher.cmd once a model is there).
New since 2026.11.14.06 (every other model: the same logits bit for bit):
- DeepSeek-V4.1-Flash in Unsloth's UD-Q8_K_XL (
unsloth/DeepSeek-V4.1-Flash-1017-GGUF, issue #4): the engine now reads MXFP4 weights (its routed experts; decoded exactly into the engine's int8 form, on the expert file and expert cache paths) and MXFP8 rows (its Engram table, a type of Unsloth's llama.cpp fork). Its other matrices are BF16, taken as Q8_0 at load. Checked on a small model with exactly these types: KL 0.0052 against the f32 reference. One GPU with the experts in RAM; the real model needs ~600 GB of RAM and a ~300 GB expert file on disk, written at the first load.
2026.11.14.06
Unpack anywhere, then run setup.cmd (or zero-launcher.cmd once a model is there).
New since 2026.11.14.05 (on one GPU and on Windows, results and speed unchanged):
- Multi-GPU (
--gpus): the direct GPU-to-GPU sums are now chosen at equal link speeds too (from 0.8x the host link; it was 1.1x). On two Pro B60s on Linux, with 14.1 GB/s direct and 14.2 through host memory, direct is clearly faster: the 27B's 4K prompt 1,384-1,442 -> 1,578-1,630 tok/s, a 4,210-token prompt 1,293 -> 1,515, generation 36.1 -> 37.8, the logits identical (issue #17, thanks to scenic6942).ARC_TP_P2P=0/=1still forces it off / on.
2026.11.14.05
Unpack anywhere, then run setup.cmd (or zero-launcher.cmd once a model is there).
New since 2026.11.14.04 (on one GPU, results and speed unchanged: the same logits bit for bit):
- Multi-GPU (
--gpus): the sums go straight from GPU to GPU where the links allow it. At start the engine times every link (each GPU to host memory and back, and GPU to GPU when the driver reports peer access, as Linux does for B60s on one switch) and logs them with its choice. When direct copies are faster, each sum crosses PCIe once instead of twice and the GPUs read their own memory. The logits are the same bit for bit.ARC_TP_P2P=0/=1forces it off / on. On Windows the B60s report no peer access, so nothing changes there. Speed on Linux B60s: to be measured (issue #17). - Server: a request that asks for
Connection: close(or HTTP/1.0 without keep-alive) gets it, and the connection ends after the reply instead of waiting up to 600 s.
2026.11.14.04
Unpack anywhere, then run setup.cmd (or zero-launcher.cmd once a model is there).
New since 2026.11.14.03 (results and speed unchanged: the same logits bit for bit):
- Fixes from a static audit of the last two days' changes (docs/audit-2026-11-14.md; no high or medium findings):
- The OpenAI API's
logit_bias: a token id larger than 2,147,483,647 is now ignored. Before, it wrapped around and biased a different token. - Internal hardening, with no change in behaviour today: a bounds check on the runtime's buffer mapping, write-back only for maps that were written, build-time limits on the fused norm kernel, and a stricter end for its rotation mark.
- A unit test for the Linux remote-access password hash, run in CI.
- The OpenAI API's
2026.11.14.03
Unpack anywhere, then run setup.cmd (or zero-launcher.cmd once a model is there).
New since 2026.11.14.02 (results unchanged: the same logits bit for bit):
- Arc 140T (Core Ultra 9 285H and other Arrow Lake H): faster prompts. The prompt's int8 matrix kernel now gets its inputs in the order the matrix engines read them, written that way by the kernels that make them, with no extra pass. On a 285H that kernel ran 7 % faster at 4K tokens and 13 % at 512 in
xw_peak(issue #5). On by default in the 140T preset;ARC_GEMM_XW_PACK=0turns it off. - The kernels are always compiled for the GPU they run on. Before, a machine that also had Mesa's OpenCL (rusticl, on Linux), Microsoft's OpenCLOn12 (on Windows), or an Intel iGPU next to an Arc card could compile the kernels for the wrong device. Now Intel's own OpenCL is used, for the same GPU Level Zero runs on (issue #11).
2026.11.14.02
Unpack anywhere, then run setup.cmd (or zero-launcher.cmd once a model is there).
New since 2026.11.14.01 (results unchanged; the default path gives the same logits as before):
- The norm and the H8 rotation of its rows in one kernel, opt-in on Arc B-series cards:
ARC_H8_NORM=1. Each layer input used to be normalized with an f32 copy written out, then read back to be rotated for the int8 matrix products; now one kernel does both, with the same results bit for bit. On a Pro B60 those two steps take ~232 ms of the 27B's 4K prompt. (docs/xe2-tuning.md section 13.5) bench\long_prefill_probe.ps1: the prompt's profile at 64K / 131K / 262K tokens.
2026.11.14.01
Unpack anywhere, then run setup.cmd (or zero-launcher.cmd once a model is there).
New since 2026.11.13.11 (results unchanged; one GPU gives the same logits as before):
- Split models can keep their decoded weights. A model split over several GPUs used to compare the whole model's size with
--budget, so the 27B decoded its weights for every prompt chunk even on 2-4 Pro B60s. Each GPU now counts only its own share:--budget 20over 2 B60s or--budget 10over 4 keeps the 27B's decoded weights on the cards. The default budget is unchanged. (docs/xe2-tuning.md section 13.1) - The prompt's matrix kernel can prefetch its next chunks, opt-in on Arc B-series cards:
ARC_GEMM_XW_PF=1(weights),2(activations) or3(both),ARC_GEMM_XW_PFD=1/2/4chunks ahead..\bench\xw_sweep.ps1 -Model <gguf> -Prefetchtries them all. (section 13.2) - The website shows the newest Pro B60 numbers: the 27B's 4K prompt on 1 / 3 cards, and Flash Next over 1 / 2 / 4 cards.
2026.11.13.11
Unpack anywhere, then run setup.cmd (or zero-launcher.cmd once a model is there).
New since 2026.11.13.10 (the engine unchanged):
zero-server start -Host 0.0.0.0, also--host 0.0.0.0and--host=0.0.0.0, the same name asserverz's own option: the server reachable from other computers. Before, only-ListenHostworked (it still does), and--hoststopped with "unknown option".--port=8091works too.- A mistyped option now suggests the closest name more sensibly (
--hots: "did you mean -Host?").