Skip to content

Mach X v0.2.23

Choose a tag to compare

@Red-Weasel Red-Weasel released this 12 Oct 23:38
· 2 commits to main since this release

Everything since v0.2.21 (v0.2.22 was not published): MiMo-V2.6-Flash decodes 23-26 % faster with the same tokens, reads long prompts in ie serve up to 43 % faster (37,810 tokens: 92.5 -> 53.4 s), and DeepSeek-V4.1-Flash decodes about 7 % faster.

Build gate: the public tree built from scratch gives an ie byte-identical to the tested, installed one (md5 36d8a154); nine host suites pass (CPU expert kernels, OpenAI protocol, ChatML tools, server capabilities / controls / admission, CLI help, MiMo host rules).

Mach X v0.2.23

Everything since v0.2.21 (v0.2.22 was not
published). Every figure was measured on October 12, 2026, on two Arc Pro B70 cards with MiMo-V2.6-Flash-RL, the new code
against the same build with its switches set to the old behaviour; greedy unless a line says otherwise.

MiMo-V2.6-Flash writes 23–26 % faster, with the same tokens

MiMo's decode is bound by memory traffic: the routed experts that are not in VRAM either cross PCIe or run on the CPU's
E-cores, and both share the same RAM. The CPU half got cheaper: a layer's whole list of CPU experts runs in one parallel
region with one barrier per expert (it was about five regions per expert), the MXFP4 weights decode through an fp16 table
with a 2 KB prefetch, the elementwise work is split over the team, and the hand-offs between the GPU thread and the CPU
team spin for up to 2 ms before they sleep. The FP8 dense projections of a decode step read each weight once for up to
eight rows. Which experts go to the CPU and which to the GPU is unchanged, so every expert is rounded where it was.

MiMo-V2.6-Flash old code v0.2.23
decode with its DFlash drafter, 7 agent-style prompts x 128 tokens (two A-B-A runs) 21.8–23.3 tok/s 27.8–28.3
decode without the drafter (2 prompts) 14.1–14.7 tok/s 16.9–18.9
four requests at once in ie serve, decode together 20.6 tok/s 25.6

The generated tokens equal v0.2.21's in every arm (7 x 128). DeepSeek-V4.1-Flash runs the same CPU expert code: decode about
7 % faster (11.3 → 11.8–12.3 tok/s on a 5.7K-token prompt), prefill about 4 %, the text byte-identical in four runs.

MiMo-V2.6-Flash reads long prompts up to 43 % faster in ie serve

A prompt is read in 2,048-token pieces, and the two cards used to take turns on each piece. Now card 0 reads the next piece
while card 1 finishes the current one; every piece is computed as before, so a request's reply is the same.

ie serve, one request at a time old v0.2.23
6,003-token prompt, request lanes (the default) 13.4 s 9.6 s
5,466 / 5,403 tokens, lanes 12.9 / 12.2 s 9.2 / 8.7 s
37,810 tokens, lanes 92.5 s 53.4 s
6,003 / 37,810 tokens, --parallel 1 12.9 / 91.3 s 9.5 / 53.0 s

The replies were identical, and the lane test tool, which runs with the CPU expert path off, found the logits equal byte
for byte (two lanes and three prompts; one lane and a 37.8K-token prompt). The overlap is used while one request is reading; when a second request
is busy the pieces go one at a time, as before. Two requests at the same time can get other replies than in v0.2.21:
the overlap changes the order of the two requests' steps, and v0.2.21 gives the same replies when the second request
arrives a few seconds later (checked). Image prompts keep the old path.

Switches

Each restores the old behaviour: IE_MIMO26_PIPE_PREFILL=0 (the prompt overlap), IE_DS41_CPU_FUSED=0,
IE_CPU_MXFP4_PF=0, IE_CPU_MXFP4_F16=0, IE_CPU_MXFP4_TEAM=0, IE_DS41_CPU_SPIN_US=0, IE_DS41_CPU_BLOCKTIME=0 (the CPU
expert code), IE_MIMO26_FP8_LUT=1 (the FP8 projections).

What is still slow, and not checked

  • Long-context decode on MiMo: at 30K tokens a full-attention layer takes 3.65 ms for the eight rows of a drafted step
    (0.55 for one row), bound by the per-key softmax chain. A matrix-engine version would be faster but changes the rounding;
    not done.
  • Not checked: a client that leaves in the middle of an overlapped prompt read (in the test the server noticed only at
    the end of the prompt, old and new alike).
  • Other models: their code did not change. The 35B-A3B class (16 lanes, 262K context), Flash-Next and the 27B were
    loaded on this build: replies with thinking on and off and tool calls as before, and on the 35B four requests at once equal
    to one at a time. One sampled 27B request showed the known mid-sentence </think> phantom tool call.
  • Everything listed under New in v0.2.21 still holds.