Repository navigation
v0.18.1 — Metal stability + MLX buffer-floor fixes
v0.18.1 is a stability follow-up to v0.18.0 for the Apollo-protocol gated DeltaNet path. It ships Metal-side correctness fixes for the matmul-Neumann fallback in gated_delta_scan_chunked, plus an MLX bridge buffer-size floor for gated DeltaNet so graph-variant-heavy workloads do not under-size MLX graph buffers and trip cache-thrash behavior.
What's fixed
- fix(gated-deltanet): keep default chunk size Metal-safe — Restores the omitted
scan_chunk_sizedefault to the Metal-tested width of64, while keeping explicit larger chunk-size overrides available for backend-specific performance experiments; this prevents long-sequence defaults from silently selecting chunk sizes such as128,256, or512before those paths are validated on Metal. - fix(mlx): raise GDN graph op buffer floor — Changes MLX graph auto-tuning to use the normal
3xIR-op estimate for ordinary models but apply a16000minimumMLX_MAX_OPS_PER_BUFFERfor configs containinggated_deltanet, addressing cache-thrash and low-buffer symptoms caused by compact GDN IR ops expanding into much larger MLX graphs. - fix(gated-deltanet): bound Metal solve backward — Replaces the Metal matmul-Neumann within-chunk solve fallback with a custom Metal triangular-solve primitive and explicit VJP, while keeping CUDA on its custom primitive and CPU on the row-wise fallback; this bounds the backward graph and avoids later misleading training failures from oversized Metal solve graphs.
Compatibility
These are pure correctness and stability fixes. There are no schema changes and no intentional default behavior changes beyond keeping the implicit gated DeltaNet chunk width on the previously Metal-safe value. Existing experiments should remain byte-identical except where they were previously hitting the buggy gated DeltaNet Metal or MLX graph-buffer paths.