Skip to content

0.3.0

Choose a tag to compare

@mattt mattt released this 22 Sep 11:53
Immutable release. Only release title and notes can be modified.
b543533

Additions

  • MLXDecisionModel evaluates prompts in batches when a request has several questions or a choice with rotation debiasing, with up to maximumBatchSize prompts in one forward pass (default 16; set it to 1 to evaluate each prompt separately). Batching applies to models whose layers use plain key-value caches, such as Qwen3; other models evaluate each prompt separately. Tokenization now runs outside the model lock with up to four concurrent tasks. On an M4 Max with Qwen3 4B, a request with 16 binary questions and two rotated choices fell from 2.8–2.9 s to 1.2–1.3 s with a short state (#9)

Changes

  • With prefixCaching: true, models whose layers use plain key-value caches now get an explicit causal mask array instead of the symbolic mask that MLX 0.31.1 applies incorrectly for split prefills (#9)
  • DecisionSession.Diagnostics.duration for MLX answers is now an estimate allocated from the request's total scoring time in proportion to each answer's prompt evaluations, so it can change when other questions in the request change (#9)