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.
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.
| Tool | Route | What it does | Worth knowing |
|---|---|---|---|
| OpenAI | Hosted | Fine-tune in the platform dashboard or API: collect examples, upload JSONL, create a job, evaluate results | Its docs frame fine-tuning as one part of a loop with evals and prompt engineering |
| Together AI | Hosted | Handles upload, training, hosting and inference on a dedicated endpoint, from the console, API, SDK or CLI | Supports LoRA (its default) and full fine-tuning |
| Fireworks AI | Hosted | Supervised fine-tuning of hosted text models with LoRA and full-parameter options, then a dedicated deployment | Accepts JSONL from 3 to 3 million lines, plus a separate evaluation dataset |
| Unsloth | Open source | Fine-tune or run reinforcement learning on open models with free notebooks or a local install, plus a no-code web UI | Its docs say small models can be tuned with as little as 3GB VRAM using its notebooks |
| Axolotl | Open source | Config-file driven fine-tuning framework with LoRA and QLoRA configs | Lists distributed training options such as DeepSpeed and FSDP2 |
| Hugging Face PEFT | Open source | Parameter-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.


