Lesson 3 of 3 · Fine-Tuning OpenAI Models
The Fine-Tuning Lifecycle
Fine-tuning is not a one-shot operation. It is a cycle -- and the teams that treat it as a cycle ship better models than the teams that treat it as a project with a finish line.
A machine learning engineer at a healthcare startup described it this way: "Our first fine-tuned model was terrible. Our fifth was good. Our tenth was great. The difference was not more data -- it was better data, informed by what we learned from each iteration."
Phase 1: Define the Objective
Before you touch any data, write down exactly what you want the fine-tuned model to do differently from the base model. Be specific enough that you can measure it.
Vague objective: "Make the model better at customer support."
Specific objective: "The model should respond to refund requests using our company's 4-step process (acknowledge, verify, process, confirm) with a tone that matches our brand guide. Success metric: 85%+ of responses follow all 4 steps as evaluated by our QA rubric."
The specific objective tells you what data to collect, how to evaluate, and when you are done.
Write a measurable objective before collecting any data. Include the specific behavior you want, the format you expect, and a quantitative success threshold.
Start collecting training data with a vague sense that you want the model to be 'better.' Without a clear target, you cannot evaluate whether fine-tuning helped or hurt.
Phase 2: Collect and Curate Data
This is where most fine-tuning projects succeed or fail. Quality matters far more than quantity.
Minimum viable dataset: OpenAI recommends at least 10 examples, but realistically you need 50-100 examples to see meaningful improvement, and 500-1,000 for production-quality results.
Data sources:
- Historical conversations rated by quality reviewers
- Expert-written ideal responses to representative inputs
- Synthetic data generated by a stronger model and validated by humans
- Production logs filtered to high-quality interactions
Spend 80% of your data preparation time on the hardest 20% of cases. Your model already handles easy cases well -- those examples teach it nothing new. The value of fine-tuning comes from teaching the model how to handle the cases it currently gets wrong. Deliberately over-represent edge cases, ambiguous inputs, and failure modes in your training data.
Phase 3: Validate Data Format and Quality
Before spending money on training, validate rigorously:
- Format validation: Every example must be valid JSONL with the correct message structure
- Consistency check: Do your examples contradict each other? If example 17 says "always be formal" and example 42 uses casual language, you are teaching the model to be inconsistent
- Distribution check: Do your examples cover the full range of inputs the model will see in production? A model fine-tuned only on refund requests will struggle with billing questions
- Quality audit: Have a second expert review a random 20% of your examples. If they disagree with the "ideal" response in more than 10% of cases, your data quality is too low
OpenAI provides a data validation script that checks format issues. Use it -- but understand that it only catches structural problems, not quality problems.
Phase 4: Train the Model
Submit your validated dataset and configure hyperparameters. For your first run, use the defaults -- OpenAI's auto-tuning is surprisingly good for most cases.
Training typically takes 15 minutes to several hours depending on dataset size and model. You can monitor progress through the API or dashboard.
Phase 5: Evaluate Against Benchmarks
Never trust training loss alone. A model can have low training loss and still perform poorly on real-world inputs.
Build an evaluation set of 50-100 examples that were NOT in the training data. Run both the base model and the fine-tuned model on these examples. Compare:
- Task accuracy: Does the fine-tuned model follow your desired format/process more consistently?
- Regression testing: Does the fine-tuned model still handle cases the base model handled well?
- Edge case performance: How does it handle the ambiguous, tricky cases?
Phase 6: Deploy to Production
Your fine-tuned model gets a unique model ID (like ft:gpt-4.1-mini:your-org:custom-name:abc123). Use it exactly like any other model in the API.
Phase 7: Monitor and Iterate
Deploy is not the end. Set up monitoring for:
- Response quality scores (automated or human-sampled)
- User satisfaction signals (thumbs up/down, escalation rates)
- Edge case frequency and handling quality
- Cost per request compared to your baseline
When quality degrades or new patterns emerge, feed those cases back into your training data and retrain. The best fine-tuning teams retrain monthly.
Write a specific, measurable fine-tuning objective for one of these scenarios: (1) A law firm wants their AI to draft contract review summaries. (2) A hospital wants their AI to triage patient intake forms. (3) A marketing agency wants their AI to write social media captions in their client's brand voice. Include: the exact behavior you want, the output format, and a quantitative success threshold.
Use ← → to navigate, Space to mark complete