Skip to content

preflight: measure the mlx-metal-0-34-0 profile on the v0.34.1 fold - #306

Merged
glennneuber merged 1 commit into
mainfrom
preflight/mlx-metal-0-34-0
Sep 18, 2026
Merged

glennneuber merged 1 commit into
mainfrom
preflight/mlx-metal-0-34-0

Conversation

@glennneuber

Copy link
Copy Markdown

The v0.34.0 + v0.34.1 folds (#297, #302) moved both payload pins — llama.cpp b10630 → b10864, MLX c793734e → d9add9d1 — so per ADR 0011/0032 Apple Silicon is gated on an unknown (platform, version) until a profile exists. This measures one.

Measured, not derived

On 0.34.0-maxusai-8a7ba949 against :11437 with measure_ladder.py, one freshly restarted server per arch so a log window can only hold its own model.

arch model ladder vs 0.33.2
gemma4 gemma4:31b-mlx-bf16 [1102 × 5] @ prefix 19 identical
gemma4_unified gemma4:12b-nvfp4 [1102 × 5] @ prefix 19 identical
qwen35moe qwen3.6:35b-a3b-nvfp4 [68, 146, 578, 2306, 5186] @ prefix 13 identical
qwen35 qwen3.8:27b-nvfp4 [68, 146, 578, 2306, 5186] @ prefix 13 identical

24 of 24 compared values reproduce — ladders, strides, scaling, tolerance, prefixes. Third consecutive payload move to leave token accounting inert here. Generator lines were substituted by script; no measured value was retyped (ADR 0012 rule 8).

Preflight

PASS=19 SKIP=12, no failures, no errors. mlx_payload_pin passes live on a Metal profile for the first time, matching d9add9d against the runner's engine-init line — the check catching binary/payload skew that no version string can express.

The four payload_proof checks skip as designed (budgets_observed = false): the native MLX path emits no load_hparams line.

Invocation note for the next person: preflight on native macOS takes --log-cmd and no --container. Passing --container native makes payload_proof bypass its budgets_observed skip and go_patch_marker shell out to docker. That flag belongs to measure_ladder.py, not here.

Two things recorded honestly rather than copied forward

The stamp is 0.34.0 though the fold is 0.34.1. build-macos.sh derives the base from the newest reachable release tag, still v0.34.0-dynres. So version_pattern admits any 0.34.0-maxusai build; mlx_build identifies the fold and mlx_payload_pin enforces it. The earlier 0.34.0-maxusai-907deffd build (MLX ce916dbb, never deployed) matches the pattern and correctly fails the pin.

The carried budget/pixel fields get a narrower justification than 0.33.2's. That profile carried them on the whole of llm/llama_server.go being byte-identical. Across this fold that is false — the file moved 83/64 and llm/ gained model_split.go. The true claim, and the one in the notes, is that ImageTokensForSize itself is byte-for-byte identical between 2b95b4a5 and 8a7ba949 (32 lines, empty diff) and TestImageTokensForSize passes on this build. budgets_observed = false records that they are carried, not read.

aspect_ladder and the think_format probes are carried from 0.33.2, but not silently: preflight runs both live, and both passed.

Not included

No BINARIES.md row — this build is not deployed. If the :11435 swap goes ahead it needs archiving and a row at that point.

🤖 Generated with Claude Code

The v0.34.0 and v0.34.1 folds (#297, #302) moved both payload pins —
llama.cpp b10630 -> b10864, MLX c793734e -> d9add9d1 — so per ADR 0011/0032
Apple Silicon needs a new profile rather than a widened pattern, and the
deploy stays gated until it exists.

Measured on 0.34.0-maxusai-8a7ba949 against :11437 with measure_ladder.py,
one freshly restarted server per arch so a log window can only hold its own
model. Every value reproduces the 0.33.2 rows: gemma4 and gemma4_unified
[1102 x 5] at prefix 19, qwen35moe and qwen35 [68, 146, 578, 2306, 5186] at
prefix 13 — 24 of 24 compared values, ladders, strides, scaling and
tolerance. Third consecutive payload move to leave token accounting inert
here. The generator's lines were substituted into the file by script; no
measured value was retyped (ADR 0012 rule 8).

Preflight against the new row: PASS=19 SKIP=12, no failures. mlx_payload_pin
passes live on a Metal profile for the first time, matching d9add9d against
the runner's engine-init line.

Two things recorded honestly rather than copied forward:

The stamp is 0.34.0 though the fold is 0.34.1, because build-macos.sh derives
the base from the newest reachable release tag and that is still
v0.34.0-dynres. version_pattern therefore admits any 0.34.0-maxusai build;
mlx_build identifies the fold and mlx_payload_pin enforces it. The earlier
0.34.0-maxusai-907deffd build (MLX ce916dbb, never deployed) matches the
pattern and correctly fails the pin.

The carried budget/pixel fields get a NARROWER justification than 0.33.2's.
That profile carried them on the whole of llm/llama_server.go being
byte-identical; across this fold that is false — the file moved 83/64 and
llm/ gained model_split.go. The true claim, and the one in the notes, is that
ImageTokensForSize itself is byte-for-byte identical between 2b95b4a and
8a7ba94 and TestImageTokensForSize passes on this build.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@glennneuber

Copy link
Copy Markdown
Author

Follow-up: the build this profile describes has now been deployed and exercised by a full quality campaign.

Deployed to :11435 at 13:17 on 2026-09-18 and verified by three things rather than the version string alone — a live MLX load reporting 0.32.2-61-gd9add9d, and the dlopen path resolving the repo payload, so the Go and MLX halves are the pairing this profile was measured on.

Campaign result (n=1 per cell, the quality setting):

  • Think-off, all five nvfp4 models: no quality regression. Every OCR tier, box/label/colour count, invoice field and multi-image verdict identical to 0.33.2-maxusai-2b95b4a5. Answer-token counts identical too. Only scene bbox IoU moved, in the third decimal, and upward on four of five models.
  • Think-on: one cell moved — gemma4:31b-nvfp4 drops a 9px fine-text OCR tier. Tracked separately in docs(vision): SOLVED — the 0.34.0 gemma4 vision shift is upstream MLX #3912 #310; it does not bear on this profile's correctness.

The campaign is an independent measurement of the same build and did not disturb any ladder value recorded here.

Also worth noting for reviewers: the native gates that were missing when this was opened have since been run on the same build — x/mlxrunner and all subpackages green, and vision golden parity passing on 31b/26b/12b. See #307 for the golden numbers.

@glennneuber
glennneuber merged commit 3aa5ca2 into main Sep 18, 2026
1 check passed
@glennneuber
glennneuber deleted the preflight/mlx-metal-0-34-0 branch September 18, 2026 11:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant