Compare a private model on your Mac
Use this for a small local task such as extracting fields from example notes, drafting a support reply or testing a private adapter. Define the desired output and held-out quality criterion before running candidates. Keep private examples and generated text local. This workflow needs Apple Silicon and Metal; it does not need a Queen, gateway, CUDA or a deployment ticket.
Read SwarmUI’s Local MLX guide
and the Python/native contract
at the installed revision, replacing main with its tag/commit or using the
matching local guides. If MLX or the matching Cohesix package is missing, load
cohesix-ai-host-setup. Use a private environment with the selected package’s
apple-mlx extra; 1.2.0 pins mlx==0.32.2 and mlx-lm==0.31.3.
Freeze compatible local inputs
Choose an already downloaded, licensed MLX model and independent dataset. If a download is needed, select its immutable upstream revision and size before fetching; the native helper accepts local bytes, not a Hub model name. Materialize files into private ordinary directories: the helper rejects symlink paths, including a symlink-based model cache.
The dataset directory contains exactly train.jsonl, valid.jsonl and
test.jsonl, with at least 16, 4 and 4 rows respectively. Each row has the
single text field (16–2048 UTF-8 bytes), with unique rows and no text overlap
across splits. Each file has at most 256 rows and 262144 bytes; each row is at
most 4096 bytes. Compute content hashes
with cohesix.mlx_native.tree_digest and retain a private selection JSON with
model_directory, model_sha256, data_directory, data_sha256 and
memory_limit_bytes. Choose memory for the actual Mac within the helper’s
512 MiB–12 GiB bound. Optional adapter_directory and adapter_sha256 must
be paired and satisfy the native adapter provenance checks; an arbitrary
downloaded LoRA is not automatically compatible.
Produce a comparison
For desktop use, open SwarmUI’s Local MLX desk and select the absolute Python virtual-environment directory and private selection file. Run local inference accepts 1–64 new tokens and up to 2048 UTF-8 prompt bytes. Measure held-out loss uses the independent test split. Record the observed Metal device, hashes, memory, response/loss and any refusal.
For a Python workflow, use the same package’s MlxSelection, infer and
evaluate_heldout. To train a candidate, call train_lora with a fresh empty
private output directory, 2–64 steps, rank 2/4/8, explicit seed, finite absolute
deadline and a cancellation callback. Follow the exact installed signatures
and output-directory permissions. Freeze adapter identity after training;
compare base and adapter on the same test split and application examples.
SwarmUI’s two local buttons perform inference/evaluation; training uses Python.
The fixed stdin interface also supports one prepared inference request:
: "${MLX_PYTHON:?set the absolute matching environment Python executable}"
: "${MLX_REQUEST:?set the private JSON request file}"
"$MLX_PYTHON" -m cohesix.mlx_workbench < "$MLX_REQUEST"
That JSON has exactly selection_path, operation, prompt, max_tokens;
use "infer" with bounded prompt/tokens, or "evaluate", "", 0.
Inspect the JSON proof_class: a process exit of zero can contain
local_refusal. Preserve the reason and correct the input/runtime mismatch;
never weaken hash, device, dataset or memory checks to force a result.
Return a local comparison with frozen inputs, candidate quality and resource
observations. Lower held-out loss alone does not establish application quality.
Optional vMLX serving uses a separately selected disposable model copy and
compatibility check. Neither a local generation label nor model text proves
promotion. For an admitted release, load cohesix-private-adapter-release or
cohesix-model-rollout and require an advertised, qualified native profile;
the 28c1 Mac admission lifecycle remains planned in the 1.2.0 scope.