MTPLX 2.5.2

MTPLX 2.5.2 is a hotfix for a long-response slowdown in 2.5.1.

What was wrong

2.5.1 made Qwen 3.6 27B Optimized Speed V2 the recommended coding model. On long single responses, users saw generation start fast and then fall off and stutter for the rest of the answer. A 12,000-token response that opened near 60 tokens per second could end near 30.

The cause was in the speculative decoding engine, not the model. The compiled verifier reserves room for a fixed number of generated tokens. When a response runs past that reserve, MTPLX deliberately moves verification to the regular eager path for the rest of the response. That transition had a bug: it restored the cache containers but did not settle the GPU work still scheduled by the compiled path. Every later verification step then had to absorb the old dependency chain, which grew the cost of each step and produced the visible slowdown and stutter.

Short responses and agent tool turns never cross the reserve, which is why the release testing for 2.5.1 missed it.

What is fixed

The transition now settles all cache and recurrent state exactly once at the ownership boundary, then releases every compiled reference before eager decoding continues. The transition is visible in the compiled verifier stats so this cannot regress silently again.

On the reported prompt, run to 12,288 output tokens with a pinned seed so both builds generate the same tokens, 2.5.1 decodes its final windows 17 percent slower than its early windows on a fresh server, and field reports on live app servers showed the same decay reaching roughly half the opening speed. The fixed build inverts the shape: its closing 256-token window runs as fast as or faster than its opening ones, and the state settle at the transition costs about 3 milliseconds once per response. Output tokens, acceptance counters, and peak memory are identical between the two builds.

Faster MLX for existing installs

The minimum MLX version is now 0.32. Fresh installs already resolved MLX 0.32.0, but existing runtime environments could stay on 0.31.2 indefinitely because dependency upgrades only run when the declared floor requires them. Our 12,000-token generation runs consistently read faster on the 0.32 stack. Raising the floor converges every install to the stack that new installs already run.

Scope

This release contains the handoff fix, its regression tests, and the MLX floor raise. Model catalogs, defaults, sampler settings, memory policy, and the 2.5.1 V2 recommendation are unchanged.

Upgrade