Domain-Specific Fine-tuning¶
Overview¶
Domain-Specific Fine-tuning tailors general models to specialized domains (medical, legal, finance, code) where domain knowledge is crucial.
- Goal: Model learns domain-specific terminology, patterns, and knowledge
- Approaches: Continued pretraining, SFT on domain data, domain adaptation
- Quality: 15-30% improvement typical
- Cost: Moderate ($500-5K)
-
Domain Fine-tuning Strategies¶
Strategy 1: Continued Pretraining¶
Continue pretraining on domain text (no labels needed)
Data: Raw domain text (books, papers, documentation)
- Medical: Papers, textbooks, clinical notes
- Legal: Case law, contracts, regulations
- Finance: News, earnings reports, research
- Code: GitHub repositories, documentation
Benefit:
- Model learns domain vocabulary
- Learns domain patterns
- No annotation needed (unsupervised)
- Fast and cheap
Example:
```python
# Continue pretraining on domain corpus
from transformers import TextDataset, DataCollatorForLanguageModeling, Trainer
dataset = TextDataset(
tokenizer=tokenizer,
file_path="medical_texts.txt",
block_size=512
)
data_collator = DataCollatorForLanguageModeling(
tokenizer=tokenizer,
mlm=False
)
trainer = Trainer(
model=model,
args=training_args,
data_collate_fn=data_collator,
train_dataset=dataset,
)
trainer.train() # Continue pretraining
Pros: No annotation needed Fast (only few hours) Learn domain vocab + patterns Cheap ($50-200)
Cons: Generic knowledge gain Not task-specific May pick up noise from domain
### Strategy 2: Domain-Specific SFT
SFT on domain (instruction, output) pairs
Data: Annotated domain tasks
- Medical: Diagnosis given symptoms
- Legal: Legal advice for scenarios
- Finance: Portfolio recommendations
- Code: Code generation/review
Example (Medical): { "instruction": "What are the symptoms of Type 2 Diabetes?", "output": "Type 2 Diabetes symptoms include: increased thirst, frequent urination, fatigue, blurred vision, slow-healing sores..." }
Example (Legal): { "instruction": "What rights does a tenant have for repairs?", "output": "Under most housing codes, landlords must maintain habitable conditions including: working plumbing, heat, structural integrity..." }
Pros: Task-specific knowledge Better instruction following in domain Targeted quality improvement
Cons: Requires annotation More expensive ($1K-5K for 1K-10K examples)
### Strategy 3: Hybrid (Continued PT + Domain SFT)
Best approach combines both:
Phase 1: Continued pretraining (optional, 1-2 hours)
- On raw domain text
- Model learns domain basics
- Fast, cheap
Phase 2: Domain-specific SFT (3-4 hours)
- On annotated examples
- Model learns to follow domain instructions
- More expensive but targeted
Result:
- Knowledge + skills
- 20-30% quality improvement
- Total cost: $200-1000
-
## Domain-Specific Considerations
### Medical Domain
Challenges:
- Needs high accuracy (safety critical)
- Complex terminology
- Privacy concerns (HIPAA, etc.)
- Rapid updates (new treatments)
Approaches:
- SFT on medical literature + annotated QA
- Safety filtering (don't give medical advice)
- Regular updates (quarterly retraining)
- Human review of important outputs
Quality targets:
- Factuality: >95% (very high)
- Adherence to guidelines: >90%
- Avoiding harmful advice: >99%
- Disclaimer usage: 100%
Data sources:
- PubMed (medical literature)
- UpToDate (clinical guidelines)
- Annotated medical QA datasets
- Institutional medical texts
### Legal Domain
Challenges:
- High accuracy needed (legal consequences)
- Complex, verbose language
- Jurisdiction-specific (US, UK, EU different)
- Frequent changes (new laws)
Approaches:
- SFT on case law + legal documents
- Jurisdiction-specific fine-tuning
- Disclaimer about not being legal advice
- Regular updates (laws change)
Quality targets:
- Legal accuracy: >90%
- Relevant to jurisdiction: 100%
- Disclaimer clarity: 100%
- Ethical compliance: 100%
Data sources:
- Case law databases
- Legal contracts
- Statutes and regulations
- Legal textbooks
- Annotated legal QA
### Code Domain
Challenges:
- Highly technical
- Language-specific (Python vs Java)
- Security concerns (code quality)
- Rapidly evolving (new frameworks)
Approaches:
- SFT on code + code explanation
- Language-specific fine-tuning
- Safety filtering (avoid bad practices)
- Update frequently (new frameworks)
Quality targets:
- Code correctness: >85%
- Code safety: >95%
- Style adherence: >90%
- Explanation clarity: >80%
Data sources:
- GitHub code (filtered for quality)
- Stack Overflow (Q&A)
- API documentation
- Tutorials and guides
- Annotated code datasets
### Finance Domain
Challenges:
- High accuracy (financial consequences)
- Complex terminology
- Real-time data needed
- Regulatory requirements
Approaches:
- SFT on financial documents
- Real-time data integration (stock prices, etc.)
- Compliance filtering
- Human review for major decisions
Quality targets:
- Factual accuracy: >95%
- Compliance adherence: 100%
- Risk awareness: >95%
- Disclosure completeness: 100%
Data sources:
- Financial news/reports
- Earnings call transcripts
- Research reports
- Regulatory filings (SEC, etc.)
- Annotated financial QA
---
## Domain Adaptation Techniques
### Adapter Methods
Use adapters for domain adaptation (most efficient):
Without adapters:
- Fine-tune full model: $1000+ (expensive)
- Update all 7B parameters
With adapters (LoRA):
- Add small domain-specific adapters: $50
- Update only 0.06% parameters
- 20x cheaper!
Implementation:
from peft import LoraConfig, get_peft_model
# Add domain-specific LoRA
lora_config = LoraConfig(
r=16,
lora_alpha=32,
lora_dropout=0.05,
target_modules=["q_proj", "v_proj"],
)
domain_model = get_peft_model(base_model, lora_config)
# Fine-tune on domain data
trainer = Trainer(model=domain_model,...)
trainer.train()
# Save domain adapter (~50MB)
domain_model.save_pretrained("domain_adapter")
# Use domain adapter at inference:
# Load base model + load domain adapter
Advantage:
- Cheap ($50 per domain)
- Fast (hours per domain)
- Multiple domain adapters possible
### Multi-Domain Training
Train single model on multiple domains
Approach:
- Domain 1 (Medical): 20% of training data
- Domain 2 (Legal): 20% of training data
- Domain 3 (Finance): 20% of training data
- Domain 4 (Code): 20% of training data
- General: 20% of training data
Result:
- Model learns multiple domains
- Better at multi-domain tasks
- Single model for multiple purposes
- Quality: Slightly lower per-domain but good overall
Use case:
- General assistant with domain competencies
-
## Domain Fine-tuning Evaluation
### Domain-Specific Metrics
Beyond standard metrics, measure domain expertise:
Medical:
- Clinical accuracy (human MD review)
- Guideline adherence
- Safety compliance
- Terminology usage
Legal:
- Legal accuracy
- Jurisdiction correctness
- Citation accuracy
- Ethical compliance
Code:
- Code correctness (runs, produces right output)
- Code efficiency (time/space complexity)
- Style adherence
- Security (no vulnerabilities)
Finance:
- Calculation accuracy
- Market knowledge recency
- Risk assessment correctness
- Regulatory compliance
Evaluation approach:
- Expert review: 5-10% of outputs reviewed by domain expert
- Automated tests: Where possible (code correctness, calculations)
- Comparative: Compare to domain benchmarks/baselines
- Regular: Monitor degradation over time
---
## Best Practices for Domain Fine-tuning
### Do's
```sql
Start with high-quality domain data
Include domain terminology in training
Validate on domain experts' evaluation
Update regularly as domain evolves
Version both model and domain data
Test for domain-specific edge cases
Document domain-specific behavior
Monitor for domain drift
Don'ts¶
Don't mix domains without care (can hurt)
Don't ignore domain-specific terminology
Don't skip expert review
Don't assume generic model works in domain
Don't use outdated data
Don't ignore safety considerations
Don't forget to validate changes
-
Cost & Timeline¶
Typical Project¶
Project: Fine-tune for medical domain
Timeline:
Week 1: Data collection and preparation
- Gather medical texts
- Annotate QA examples (or use existing)
- Quality check
Week 2: Model training
- Continued pretraining (1-2 hours)
- Domain-specific SFT (3-4 hours)
- Evaluation and iteration
Week 3: Deployment and monitoring
- Package model
- Deploy to production
- Monitor performance
Cost breakdown:
- Data collection: $500-2000 (annotators or buying datasets)
- Model training: $200-500 (GPU compute)
- Evaluation: $500-1000 (expert review)
- Total: $1200-3500
- Payback: Depends on use (QA, summarization, etc.)
Break-even analysis:
- Fine-tuned model: $3000 upfront
- Generic model: ~$0.01 per query accuracy loss (~20%)
- If 1M queries/year @ 10% higher accuracy
- ROI: ~100% (worth it!)
Key Takeaways¶
Domain knowledge critical: 15-30% quality improvement Continued PT: Learn domain vocab (cheap, unsupervised) Domain SFT: Learn domain tasks (more expensive, supervised) Adapters: Multiple domain experts with one base model Regular updates: Domains evolve, retrain periodically
-
Related Notes in Finetuning Subdirectory¶
- Fine Tuning Fundamentals - Overview
- [Instruction Tuning & Sft](/01-modeling/02-training/finetuning/(instruction-tuning-sft/) - Foundation
- Fine Tuning Best Practices - General tips apply