Asset 20 8 2
Does AI recommend your business? Run the free check →

Join 15,000 business owners, marketers and entrepreneurs. The Sunday newsletter you'll be annoyed only arrives once a week.

Article

How to Fine Tune an LLM: Evals First, Then Six Stages

Fine-tuning an LLM means training a pre-trained model on a smaller set of your own example conversations so it behaves the way you need. Write a test first, build a clean JSONL dataset, pick a base model and a method such as LoRA, run the training job, then compare the result against your baseline before you deploy it.

Before you rent a GPU or upload a single example, ask one question: will fine-tuning fix the problem you've got? Quite often it won't, and the reason is worth understanding before you spend days building a dataset.

Measure the base model and try prompting before you train

OpenAI's own platform docs, in their model optimisation guide, treat fine-tuning as the last step of a loop rather than the first. They say to write evals and establish a baseline, then try prompting with context and clear instructions, and only then fine-tune.

That order matters because many jobs are solved by a better prompt, or by supplying outside information at request time. Fine-tuning can't do the second of those: a tuned model only knows what was in its training data. If your problem is that the model doesn't know your latest product details, training won't keep up with them. If your problem is tone, format or a narrow task the model keeps getting wrong, fine-tuning is a strong fit.

If you want a plain-English primer on the idea itself, start with our explainer on what fine-tuning is and when it helps.

The six stages of a fine-tuning run

1. Write your test prompts and record a baseline

Put together a small set of test prompts with the answers you'd accept, and score the base model on them before changing anything. The optimisation guide frames this as the starting point. Tools from our list of LLM evaluation tools can help you run these tests repeatably.

2. Build the dataset as JSONL

Collect example conversations and save them as JSONL, one example per line, in chat-message format. Fireworks AI expects a messages array per line in the OpenAI chat format, and the other hosted services take JSONL uploads too. Clean, consistent examples matter more than volume.

3. Choose a base model and a method

LoRA trains small adapter weights on top of a frozen model, while full fine-tuning updates every weight. Together's docs make LoRA the default and say full fine-tuning uses more compute. Unsloth's guide advises beginners to start with a small instruct model. Browse our roundup of open-source models you can tune if you're picking a base.

4. Upload the data and start the job

Use a hosted service through its console, API or CLI, or run a notebook or config file on your own GPU. Hosted vendors run the hardware for you; open-source trainers give you control but need enough VRAM.

5. Watch the loss and keep a held-out set

Keep an evaluation set the model never trains on. If the model starts to overfit, reduce epochs or the learning rate. Limiting epochs is the usual advice for avoiding overfitting, and Fireworks lets you pass a separate evaluation dataset.

6. Rerun your tests, compare, then deploy

Run your stage one tests on the tuned model and compare against the baseline. Only ship it if it's better. Hosted services deploy to a dedicated endpoint, or you export the model to your own inference engine.

Work with me

Want AI doing the heavy lifting in your marketing?

I build the systems that handle the boring 80 percent, so you get your week back. Done properly, with the human kept in.

Hosted services or open-source trainers

There are two broad routes. Hosted services handle the hardware and give you an endpoint at the end. Open-source trainers run wherever you have a GPU and leave every setting in your hands.

ToolRouteWhat it doesWorth knowing
OpenAIHostedFine-tune in the platform dashboard or API: collect examples, upload JSONL, create a job, evaluate resultsIts docs frame fine-tuning as one part of a loop with evals and prompt engineering
Together AIHostedHandles upload, training, hosting and inference on a dedicated endpoint, from the console, API, SDK or CLISupports LoRA (its default) and full fine-tuning
Fireworks AIHostedSupervised fine-tuning of hosted text models with LoRA and full-parameter options, then a dedicated deploymentAccepts JSONL from 3 to 3 million lines, plus a separate evaluation dataset
UnslothOpen sourceFine-tune or run reinforcement learning on open models with free notebooks or a local install, plus a no-code web UIIts docs say small models can be tuned with as little as 3GB VRAM using its notebooks
AxolotlOpen sourceConfig-file driven fine-tuning framework with LoRA and QLoRA configsLists distributed training options such as DeepSpeed and FSDP2
Hugging Face PEFTOpen sourceParameter-efficient fine-tuning library that combines 4-bit quantisation with an adapter (QLoRA)Docs say QLoRA can tune a 65B parameter model on a single 48GB GPU

The 3GB number in that table is the vendor's own claim for small models with its notebooks, not a promise for every model. Its docs offer free notebooks, as of Nov 2026, on Colab, Kaggle or a local install, which makes it a low-risk place to try a first run.

My advice for a first fine-tune

Write the evals before anything else, and give prompting a fair go first. If the base model still misses, start with LoRA on a small model with a clean, consistent set of examples, compare against your baseline, and only scale up when the numbers say it worked. The teams that get value from fine-tuning are the ones who can prove it beat the prompt.

Want your tool on this list? Featured spots and reviews here are paid partnerships. Here's how to partner with me.

Frequently asked questions

Can I fine-tune an LLM on my own computer?

Yes for small models. Unsloth's docs say you can fine-tune locally with as little as 3GB VRAM using its notebooks. Larger models need a rented GPU.

What's the difference between LoRA and full fine-tuning?

LoRA trains a small set of adapter weights on top of a frozen base model; full fine-tuning updates every weight and uses more compute, according to Together AI's docs.

What format does the training data need?

JSONL, one example per line. Fireworks expects a messages array per line, in chat-message format.

How do I know the fine-tune worked?

Compare it against the baseline from your own test prompts. That's exactly why the process starts with evals.

Do I need to write code?

Not always. Hosted services offer a console, and one open-source trainer offers a no-code web UI, though the API, SDK and CLI routes give more control.

Published and maintained by the Lilach Bullock team, covering marketing, AI and business growth.
Your buyers are asking AI who to use. Does it say you?

See for free whether ChatGPT, Claude, Perplexity, Gemini and Google name you, and get the plan to become the answer.

Check my AI visibility →
Sundays only

Get the Sunday newsletter.

One email a week. AI experiments, marketing tactics, and the workflows Lilach is building right now in her own business.

Subscribe free

Let’s get your marketing running on AI.

Book a free 30-minute call

We figure out what you need, where AI fits in, and what working together would look like.

Book the call →

Or take the 30-second calculator

You’ll see the hours and the money quietly leaking out of your week, and the three workflows worth building first.

Take the calculator →

Or grab the free AI resource library

Prompt packs, templates, checklists, and swipe files. The exact tools I build for paying clients. Yours, free.

Get the library →
Keep reading

More from the blog.