Releases: carloslfu/slotstream
Release list
v0.2.2
0.2.2 — speculative decode that pays, and ships
Speculative decode with the model's own draft head now gives a measured +24% decode on a quiet 48 GB Mac (10.3 → 12.8 tok/s at the 122 experts/layer auto plans with the head on; ×1.33 on a code prompt, ×1.19 on a list, ×1.18 with the server's default sampling), and pull fetches the head, so --mtp auto works out of the box. Everything below is measured on the released binaries, five interleaved pairs per number; MEASUREMENTS.md M9 has the method.
- The draft head ships with the weights.
mtp.safetensors(1.47 GB, sha256-pinned) is hosted on the weights mirror and pulled with everything else, as the manifest's one optional file: a source without it leaves the pull green with a notice,pull --verifyskips it when absent, and the startup check never asks to repair it. The weights are 105.3 GB in 25 files. - A rejected draft no longer re-runs the kept tokens. The verify pass records the recurrent state after every position (the GDN recurrence stepped one token at a time, bit-identical to the fused kernel), so a rejection rolls back for free. This is what turned the head from break-even into a gain: at 57 experts/layer one draft went ×1.12 → ×1.20; at 122, ×1.17 → ×1.24 (two drafts ×1.27).
- Default draft depth is 1 (was 4). Four drafts lose at every size measured, including ×0.88 where auto turns the head on; one draft is the best or tied-best everywhere and wastes the least on a rejection.
SLOTSTREAM_DRAFT_DEPTHstill overrides. - The numbers are honest now. The ×1.5–1.9 the 0.2.0 docs projected assumed a five-token verify pass costs one token's pass; new hidden
mtp-passcostmeasured 1.65 (a sixth of a pass per extra token), and the plateau A/B that was "pending" has run. Auto's threshold reads 28 GB, not ~26. - Gates.
mtp-checknow bounds the reused speculative state's logits by the plain re-chunking band (theprefix-checkmethod) instead of comparing liveness, proves the recording pass exact against the batched one, and checks a rollback state-by-state against the plain path.mtp-bench --samplemeasures the sampled case.
Below a 28 GB target nothing changes: auto keeps the head off there, where it would lose, and every install without the head runs exactly as before.
Built by CI from commit 4a8dcbe (build log: https://github.com/carloslfu/slotstream/actions/runs/33650634699).
sha256: 2f459ece57e3ccfe3bf34abf9ae268c29161295b2f2a3f6a5a58e50a8b6b6c47
Verify provenance: download slotstream-arm64.tar.gz, then: gh attestation verify slotstream-arm64.tar.gz --repo carloslfu/slotstream
Install or upgrade: curl -fsSL https://raw.githubusercontent.com/carloslfu/slotstream/main/install.sh | sh
v0.2.1
Built by CI from commit 2009889 (build log: https://github.com/carloslfu/slotstream/actions/runs/33587525974).
sha256: 2326d00ff7611049b3ebe73c5a505f183fc9a950a92e9b95e8ac3e624d5118a8
Verify provenance: download slotstream-arm64.tar.gz, then: gh attestation verify slotstream-arm64.tar.gz --repo carloslfu/slotstream
Install or upgrade: curl -fsSL https://raw.githubusercontent.com/carloslfu/slotstream/main/install.sh | sh
v0.2.0
Speculative decode with the model's own draft head
The checkpoint ships a multi-token-prediction head that predicts the token
after next. The community conversion dropped those tensors; slotstream now
restores them with a one-time conversion from the official release (exactly
the 31 needed tensors via ranged downloads — 4.9 GB, ~2 minutes, not the full
checkpoint) and uses the head to draft a few tokens per step, verifying them
in one batched main-model pass.
- 85.8% measured first-draft accept rate; 3.5 accepted tokens per verify
round at depth 4 (measured across prose, code, lists, arithmetic). --mtp auto|on|offonrun/serve/doctor. Auto enables the head
only where the multiplier beats spending the same 1.6 GB on expert cache
(~120 experts/layer after the charge). Below that it measured ×0.96 — so
auto keeps it off there, and that A/B is in MEASUREMENTS.md.- The Swift port of the head is bit-exact against the MLX Python
reference (slotstream mtp-parity, a standing battery gate). - Sampling semantics are exact by construction: draws happen sequentially off
verified logits, only for tokens the plain loop would also sample — same
rng stream, same presence-penalty evolution, any temperature. - New gates:
mtp-check(determinism, cross-request state integrity through
the prefix cache, accept sanity) andmtp-accept(measure the accept curve
yourself).
Convert the head once (needs the pinned model already pulled):
.venv/bin/python Tools/mtp_convert.py
Without mtp.safetensors everything runs exactly as before, head off.
v0.1.10
Built by CI from commit 5a7bc2d (build log: https://github.com/carloslfu/slotstream/actions/runs/33450886392).
sha256: 5a0c21e5e86a6b932e703bdbda1f700262746441f5bbe49f1c8c0d320b5aeb2e
Verify provenance: download slotstream-arm64.tar.gz, then: gh attestation verify slotstream-arm64.tar.gz --repo carloslfu/slotstream
Install or upgrade: curl -fsSL https://raw.githubusercontent.com/carloslfu/slotstream/main/install.sh | sh
v0.1.9
Built by CI from commit 53807c9 (build log: https://github.com/carloslfu/slotstream/actions/runs/33445217407).
sha256: 17b71bdfcbe6cc4ea0fda0727c9231f3815684134fd3b1c3f9f04ad2396f6fe6
Verify provenance: download slotstream-arm64.tar.gz, then: gh attestation verify slotstream-arm64.tar.gz --repo carloslfu/slotstream
Install or upgrade: curl -fsSL https://raw.githubusercontent.com/carloslfu/slotstream/main/install.sh | sh
v0.1.8
Built by CI from commit bb9ebfc (build log: https://github.com/carloslfu/slotstream/actions/runs/33437239435).
sha256: dfa91a8487fb0f9ae6eb95b18a8141a88a80c115fb5c99cc80f59f77dfa35239
Verify provenance: download slotstream-arm64.tar.gz, then: gh attestation verify slotstream-arm64.tar.gz --repo carloslfu/slotstream
Install or upgrade: curl -fsSL https://raw.githubusercontent.com/carloslfu/slotstream/main/install.sh | sh
v0.1.7
Built by CI from commit a0ec128 (build log: https://github.com/carloslfu/slotstream/actions/runs/33323056069).
sha256: c5c499298ee6bbbccfa99346fe4e0dc4827feb00df4c96faefe2a80fd651c255
Verify provenance: download slotstream-arm64.tar.gz, then: gh attestation verify slotstream-arm64.tar.gz --repo carloslfu/slotstream
Install or upgrade: curl -fsSL https://raw.githubusercontent.com/carloslfu/slotstream/main/install.sh | sh
v0.1.6
Built by CI from commit baf5a97 (build log: https://github.com/carloslfu/slotstream/actions/runs/33313247360).
sha256: 496aaf1ba60892ee8cce091153708c838c21bccd91fe51598836155f620bb763
Verify provenance: download slotstream-arm64.tar.gz, then: gh attestation verify slotstream-arm64.tar.gz --repo carloslfu/slotstream
Install or upgrade: curl -fsSL https://raw.githubusercontent.com/carloslfu/slotstream/main/install.sh | sh
v0.1.5
Built by CI from commit 3cd035c (build log: https://github.com/carloslfu/slotstream/actions/runs/33272909159).
sha256: d03bd5459b96e6668c94fdc561b82a277baf0b4cef86186a28d50015829537f0
Verify provenance: download slotstream-arm64.tar.gz, then: gh attestation verify slotstream-arm64.tar.gz --repo carloslfu/slotstream
Install or upgrade: curl -fsSL https://raw.githubusercontent.com/carloslfu/slotstream/main/install.sh | sh
v0.1.3
Built by CI from commit fbc8942 (build log: https://github.com/carloslfu/slotstream/actions/runs/33256258213).
sha256: fd8ee0092f62a8581c810b9568d387a18f2dbe25a6bdc31f9983fe85cd687328
Verify provenance: download slotstream-arm64.tar.gz, then: gh attestation verify slotstream-arm64.tar.gz --repo carloslfu/slotstream
Install or upgrade: curl -fsSL https://raw.githubusercontent.com/carloslfu/slotstream/main/install.sh | sh