Fine-tuning & Model Adaptation
Fine-tune small open models to hit your quality target at lower cost and latency.
SFT and LoRA fine-tuning on Llama, Mistral, Qwen — or managed OpenAI/Anthropic tunes — for tasks where prompting hit its ceiling.
Problems I solve
- GPT-4-class costs eating the unit economics
- General LLMs miss your domain terminology
- Latency too high for real-time UX
- Prompt engineering hit its ceiling
What you get
- Dataset design and labeling pipeline
- SFT / LoRA training on open models
- OpenAI / Anthropic fine-tunes when appropriate
- Evals + rollback plan before ship
Use cases
Domain classifier
Fine-tuned small model matches GPT-4 quality at 20× lower cost.
Structured extraction
Reliable JSON extraction from noisy documents with schema constraints.
Tone / style adaptation
Model that writes in your brand voice across thousands of pieces.
Compliance-safe generation
Fine-tuned model that refuses to produce disallowed outputs.
Examples I've shipped
Support classifier
Outcome — F1 0.94 at 8ms p50; replaced GPT-4-mini at ~90% cost cut.
Invoice extractor
Outcome — Extraction accuracy 97.5% on 30-field schema.
How I work
- 1
Task & dataset scoping
Define exact task, success metric, and data budget.
- 2
Data pipeline
Labeling, dedup, splits, and eval sets.
- 3
Training
SFT / LoRA sweeps, checkpoints, safety evals.
- 4
Serving
vLLM / Modal / Together deployment with autoscaling.
- 5
Eval + ship
A/B against baseline before rollout.
Deliverables
- Trained model weights + serving endpoint
- Eval report vs. baselines
- Retraining pipeline
- Cost / latency dashboard
Benefits
- Cost per call cut 5–20×
- Sub-100ms latency possible
- Own the model — no vendor lock-in
Frequently asked questions
Fine-tune vs. RAG vs. prompting?+
RAG for knowledge, prompting for one-off tasks, fine-tuning for repeated structured tasks where cost or latency matters. I benchmark all three before committing.
How much data do I need?+
For LoRA on a well-scoped task, 500–2000 high-quality examples is usually enough. I help build the labeling pipeline if you don't have data yet.