MLX LM gives Apple Silicon a native path for adapting open language models with LoRA or QLoRA. Starting the run is straightforward. Deciding whether the resulting adapter is useful is the real work.

I treat the dataset contract, frozen baseline, and post-training evaluation as part of the training recipe rather than cleanup after it.

Prepare the environment and data

MLX LM accepts a local data directory with train.jsonl, optional valid.jsonl, and test.jsonl, as well as supported Hugging Face datasets. Chat, tool, completion, and text formats can all work.

Each JSONL example should stay on one line. The selected base model's chat template needs to be checked before a long run. A malformed template can turn a valid-looking dataset into the wrong learning problem.