How to fine-tune an AI model locally on your Mac
Fine-tuning adjusts a model with your own examples so it answers the way you want without being told every time. The catch with cloud fine-tuning is that you hand your training data to someone else's servers to do it. Local fine-tuning trains a small add-on called a LoRA adapter on your Mac from a file of your own examples — the data never leaves the machine. It's built into Outlier Pro: point it at a JSONL file, set a few numbers, run the job, and switch the adapter on.
Most people never need to fine-tune anything — a good prompt gets you most of the way. But there's a real gap between "the model can do this if I explain it every time" and "the model just does this," and fine-tuning is how you close it. What changed recently is that you can now do it without uploading a single row of your data anywhere.
What fine-tuning actually is
A base model is trained on the general internet. Fine-tuning continues that training a little further on examples you supply, nudging the model toward your format, your terminology, your house style. You're not teaching it new facts so much as new habits.
Modern fine-tuning almost never rewrites the whole model — that's expensive and risks breaking what already works. Instead it trains a LoRA adapter: a small set of extra weights that ride on top of the frozen base model. The adapter is a few megabytes, you can keep several around, and you switch them on and off. Turn it off and you're back to the stock model exactly.
Fine-tuning vs just writing a better prompt
Reach for a prompt first. Fine-tuning earns its keep only in specific cases:
| Use a prompt when | Fine-tune when |
|---|---|
| You need it once or occasionally | You do the same task hundreds of times |
| The instruction fits in a paragraph | The "instruction" is really 50 examples of a style |
| You want to change behaviour quickly | You want a fixed format the model won't drift from |
| Examples change constantly | You have a stable body of past work to learn from |
A useful rule: if you find yourself pasting the same three example outputs into every conversation to get the format right, that's a fine-tune waiting to happen. Bake the examples in once instead of paying for them in every prompt.
Why doing it locally matters
The training data is the whole point of fine-tuning, and it's usually your most sensitive material — past client deliverables, internal documentation, support transcripts, your own writing. Cloud fine-tuning requires you to upload exactly that. For a lot of people and most regulated work, that upload is a non-starter.
Local fine-tuning removes the question. The examples sit in a file on your disk, the training runs on your Mac's own GPU cores, and the resulting adapter is a local file. Nothing is transmitted, so there's no data-processing agreement to sign and no server to trust. If you can't send the data out, this is the only version of fine-tuning available to you.
What your training data looks like
Fine-tuning data is a JSONL file — one example per line, each a prompt paired with the completion you wish the model had produced. You're showing it the target, not describing it:
{"prompt": "Summarize this ticket for the weekly report: ...", "completion": "..."}
The examples are the entire lesson, so quality beats quantity. A few dozen clean, consistent pairs that all demonstrate the same behaviour will teach more than thousands of noisy ones. If your examples disagree with each other about format, the model learns to be inconsistent.
Doing it in Outlier, step by step
- Point it at your data. Choose a
.jsonlfile, or drop one under~/.outlier/datasets/and give the path. - Set the knobs. Three matter: rank (how much capacity the adapter gets — 8 is a sensible default), epochs (how many passes over your data — 3 is a fine start), and batch size. The defaults are reasonable; raise epochs if the model isn't picking up the pattern, lower them if it starts parroting your examples too literally.
- Run the job. Training happens on-device with a progress bar. Time depends on data size and the tier you're training.
- Switch the adapter on. When the job completes it joins your adapter list; click "Use this adapter" and your chats now run with it. Toggle it off any time to return to the stock model.
Honest limits
Fine-tuning is not a memory system — if you need the model to know a specific document, retrieval (feeding it the document at question time) is usually the better tool. It also won't make a small model as smart as a big one; it shapes behaviour, it doesn't raise the ceiling on reasoning. And a badly built dataset produces a confidently wrong model, so the honest failure mode is "garbage in, garbage out, but fluent." Start small, test the adapter against held-back examples, and keep the base model one toggle away.
Fine-tuning is part of Outlier Pro. It's the same on-device principle as the rest of the app: your data is the input, and the input stays on your Mac.
Try Outlier free
Free Nano + Lite — local, private, no account. Pro $20/mo or $149/yr adds everything, including on-device fine-tuning and all 7 model tiers (incl. Plus 397B). Lifetime Pro from $99 (Founding 200) or $200 (Founders 500). Apple Silicon only.
Download for Mac