FreshContextA context lab · Fife
Drawing
02 · Benchmarks
Sheet
2 of 3
Rev
A · 2026-10-01

Granite 4.2 30B · file← Granite 4.2 30B

MLX 4-bit

IBM's MLX copy, the other half of a runtime comparison. Deleted with the GGUF. IBM, downloaded.

Size
16.5 GB
Status
Deleted 12 Sep 2026
Scored runs
3
Smallest Mac
32 GB estimate, 8K context
Results3 scored · 95% intervals
SuiteScore95% interval PassedRuntime · profileRecorded
groundinggranite-4.2-30b-mlx-q4unenforced86.4%79.3–91.3Passed 108/125mlx_lmextraction2026-09-08
screeninggranite-4.2-30b-mlx-q491.7%81.9–96.4Passed 55/60mlx_lmextraction2026-09-08
VOID-degenerate-nullschemagranite-4.2-30b-mlx-q4flagged100.0%94.9–100.0Passed 72/72mlx_lmextraction2026-09-08

Runs marked unenforced were measured on a suite that requires constrained decoding, on a server shown not to apply the schema: mlx_lm accepts it and ignores it, and a few other servers and models break it. Those numbers do not measure what the suite is designed to measure. They are kept and labelled rather than deleted.

The recordHow it was made · how it was served · what went wrong · what happened to it

Rebuilt from the lab's records by Claude, an AI model. The results above come straight from the automated runs. How these pages are made.

Filegranite-4.2-30b-mlx-q4/ (4 shards)
FormatMLX 4-bit, 16,469,111,945 B (sum of HF shards)
Where fromdownloaded 2026-09-07 from IBM's MLX repo
Statusdeleted 2026-09-12 07:45Z (same command)
Hugging Facehttps://huggingface.co/ibm-granite/granite-4.2-30b-q4-mlx

Where it came from

  • Source: ibm-granite/granite-4.2-30b-q4-mlx, IBM's own MLX 4-bit upload (four safetensors shards). The assistant read IBM publishing it as "a good sign for correctness".
  • Size: 16,469,111,945 bytes = sum of the HF shards. Download completion was not byte-verified; du read 15G and 16.48 GB when it was deleted. So local size agrees with HF only to within the config and tokenizer files. Revision and sha256: not on record.
  • Command (second line of a one-off script), from models:
hf download ibm-granite/granite-4.2-30b-q4-mlx --local-dir granite-4.2-30b-mlx-q4

It followed the GGUF in the same chain. The chain log shows the folder complete before the GLM download began at about 22:18Z.

  • Quantisation: model_type granite, 4 bit. Group size and quant predicate: not on record (config.json went with the folder).
  • Who asked: Alan, 2026-09-07 21:01Z: "check mlx support too", after "that's a shame, what levers does mlx have that llama doesn't have". The assistant found IBM's build.

How it was served

labeldates (UTC)binary and versionctx / -np / KV / -fa / --jinja / --reasoning-formatharness profilewhy this label exists
granite-4.2-30b-mlx-q42026-09-07 22:55Z start; run-log finish times 23:01:22 (screening), 23:06:51 (grounding), 23:09:30 (nullschema)mlx_lm server 0.31.3 from mlx-venv ("pinned 0.31.3 for comparability"); --model <folder path>, no other flagsnot applicable: no ctx, -np, KV, -fa, --jinja or --reasoning-format options were passed to mlx_lmextraction; --model-id was the folder paththe MLX half of the controlled runtime pair
granite-4.2-30b (toolcall row only; the contract row is in Granite 4.2 30B Q4_K_M (IBM GGUF, downloaded))2026-09-09 about 10:58Z to 11:03:35Z (run-log finish 12:03:35 BST)oMLX 0.6.4: omlx serve --model-dir $HOME/.omlx/models --max-concurrent-requests 32 --paged-ssd-cache-dir $HOME/.omlx/cache --hot-cache-max-size 8GB --memory-guard balanced; pool entry .omlx/models/granite-4.2-30b is a symlink to this foldernot set by the callerextraction, toolcall/1the new tool-invocation suite "extends to granite-4.2-30b and gemma4-e2b" for the first time on the deployed stack

Seats held: none. oMLX pool membership from 2026-09-09 10:49Z (symlink created) to the deletion (the dangling symlink is not on record).

Other servings that are not run-log labels:

purposewhen (UTC)server
throughput probe, 300 tokens2026-09-07 22:57Zthe same mlx_lm server
runtime matrix, mlx_lm leg2026-09-08 about 13:45-14:39Zmlx_lm 0.31.3
runtime matrix, rapid-mlx legsamerapid-mlx serve <folder> --no-spec-decode, rapid-mlx 0.13.4

Decisions

  • Why downloaded: Alan's "check mlx support too" and the MLX-lever question before it.
  • Why benched: "running the mlx versions of models to test speed & accuracy"; granite was "the best target" because both formats of the same weights were held.
  • Pre-registered expectation: the pair would be "the first genuinely controlled one". The result looked like an MLX win on nullschema (100.0 vs 90.3) and the assistant called the perfect score suspicious.
  • Why kept after that: it stayed on disk as "MEASURED, NO SEAT" while the comparison guide cited it.
  • Why deleted: the same instruction as the GGUF, 2026-09-12 07:45Z.

What went wrong

  • mlx_lm ignores response_format. Found 2026-09-08 05:58-06:02Z; invalidated 15 result files across 8 MLX runs, including this model's grounding and nullschema. A guard in harness/runner.py now refuses schema suites on mlx_lm.
  • Degenerate nullschema 100%. The check was added 2026-09-10 and fired retroactively on this run and on REAP-60B.
  • oMLX contamination. Granite's toolcall/1 run (12/60) came from a server with no granite kernel and is void. A lab note proves the collapse for Guardian and REAP, not for this model, so granite's true toolcall/1 score is unknown, not low.
  • Stale build stamp. The toolcall row's llama_build field names llama.cpp eb25b7263, but oMLX 0.6.4 served it; runtime/runtime_version are correct.
  • Mixed label granite-4.2-30b (see Granite 4.2 30B Q4_K_M (IBM GGUF, downloaded)).
  • Not like for like. The run-log/guide pairing with the Q4_K_M GGUF was called "bit-matched". On 2026-10-21 the assistant established that the two were different 4-bit formats (Q4_K_M against MLX affine) and added that to the guide.
  • Missing flags / partial runs: no --jinja-style flags exist for mlx_lm; no partial runs.

What happened to it

Downloaded 2026-09-07 about 21:48-22:18Z → benched 22:55Z-23:09Z → runtime matrix 2026-09-08 → oMLX pool and toolcall 2026-09-09 → nullschema voided 2026-09-10 → deleted 2026-09-12 07:45Z together with the 4 KB .cache/huggingface/hub/models--ibm-granite--granite-4.2-30b-q4-mlx stub. No RESTORE-deleted-*.sh entry. Re-downloadable from ibm-granite/granite-4.2-30b-q4-mlx. IBM also lists q8 and community 3-to-8-bit MLX builds. Status: retired.