Model Fine-tuning & Deployment
Mở đầu
LLM mạnh, nhưng không hiểu business bạn. GPT-4 viết thơ, viết code, nhưng không biết thuật ngữ sản phẩm cty bạn, không biết quy chuẩn nghiệp ngành bạn. Fine-tuning = quá trình cho LLM general "học" kiến thức chuyên môn của bạn — như đào tạo onboarding cho 1 generalist uyên bác để thành chuyên gia domain.
Bạn sẽ học:
- Quy trình: full pipeline từ data prep đến model serving
- Data engineering: yêu cầu format + chất lượng data
- Efficient fine-tuning: LoRA và parameter-efficient
- Model compression: quantization để LLM chạy hardware consumer
- Deployment: serving architecture mainstream + selection strategy
| Chương | Nội dung |
|---|---|
| 1 | Fine-tuning pipeline |
| 2 | Training data |
| 3 | LoRA |
| 4 | Quantization |
| 5 | Deployment |
0. Toàn cảnh: sao cần fine-tune?
Training LLM chia 2 stage: pretraining + fine-tuning. Pretraining = học ngôn ngữ trên data tổng quát khổng lồ. Fine-tuning = học task chuyên môn trên data đặc thù.
Ẩn dụ: pretraining như đại học — học general, biết mọi thứ 1 chút. Fine-tuning = onboarding cho job — học skill chuyên cho vị trí.
Khi nào cần fine-tune?
- Output format cố định: cần model luôn output JSON cố định
- Domain knowledge: y tế, pháp luật, tài chính
- Style transfer: model trả lời với tone/style nhất định (vd customer service)
- Niche language: tăng performance ngôn ngữ ít resource
- Cost optimization: small model fine-tune thay LLM lớn → giảm cost
1. Fine-tuning pipeline
Fine-tuning không phải "quăng data vào model là xong". Là quy trình engineering chặt, mỗi mắt xích ảnh hưởng kết quả.
微调流水线演示
点击每个阶段,了解微调的完整流程
微调的第一步是选择一个合适的预训练基座模型。基座模型已经在海量数据上学习了通用的语言能力,我们要做的是在此基础上进行"专业化训练"。
model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen2-7B")5 stage
- Data prep: collect, clean, label — mất time nhất + critical nhất
- Model selection: chọn base model (Llama 3, Qwen, Mistral)
- Training config: set learning rate, batch size, epoch
- Train execution: run GPU, monitor loss + metric
- Eval + deploy: test, deploy API
| Stage | Action | Pit |
|---|---|---|
| Data prep | Clean, dedup, format | Data tệ → model "học hư" |
| Model select | Eval base capability | Quá lớn không train được, quá nhỏ kết quả tệ |
| Training config | Tune hyperparam | LR quá cao → catastrophic forgetting |
| Train execution | Monitor loss | Overfit, không converge |
| Eval + deploy | A/B test, gradual rollout | Test set leak → eval ảo cao |
2. Training data: trần của fine-tuning
Câu cũ: "Garbage in, garbage out". Data quality quyết trần hiệu quả. 100 sample chất lượng cao thường hơn 10000 sample tệ.
训练数据格式演示
切换不同格式,了解微调数据的组织方式
最常见的微调数据格式。每条数据包含一个指令(instruction)、可选的输入(input)和期望的输出(output)。适合训练通用助手类模型。
3 format thường gặp
- Instruction format: hay dùng nhất, instruction + input + output. Hợp train follow instruction.
- Chat format: multi-turn, system/user/assistant message list. Hợp chatbot.
- Completion format: prompt-completion pair đơn giản, hợp text gen, code completion.
| Dimension | Note | Check |
|---|---|---|
| Accuracy | Answer phải đúng | Human review, expert verify |
| Consistency | Style trả lời câu hỏi giống nhau | Sample compare |
| Diversity | Cover đủ scenario + variant | Stats question type distribution |
| Dedup | Tránh sample lặp gây overfit | Text dedup, semantic dedup |
| Volume | 500~5000 sample chất lượng cao đủ | Bắt đầu ít, tăng dần |
3. LoRA: 1% param đạt 90% kết quả
Full fine-tuning update mọi param model — model 70B = vài trăm GB VRAM + lượng GPU lớn. Đa số team không khả thi.
LoRA (Low-Rank Adaptation) giải elegantly: freeze param model gốc, chỉ train nhóm matrix low-rank mới. Param matrix này thường chỉ 0.1%~1% model gốc, nhưng đạt gần full fine-tuning.
LoRA 低秩适配原理演示
理解 LoRA 如何用极少参数实现高效微调
Core LoRA
Matrix W của model gốc lớn (vd 4096×4096). LoRA không sửa W trực tiếp, mà thêm "bypass": W' = W + BA, B + A là 2 matrix nhỏ (vd 4096×8 + 8×4096). Train chỉ update B + A, W gốc giữ nguyên.
- Rank: r lớn = expressiveness cao, param nhiều hơn. Thường r=8~64 đủ.
- Merge deploy: train xong, có thể merge BA về W, inference không thêm overhead.
| Cách | Trainable param | VRAM | Train speed | Hiệu quả |
|---|---|---|---|---|
| Full fine-tune | 100% | Cực cao | Chậm | Tốt nhất |
| LoRA | 0.1%~1% | Thấp | Nhanh | Gần full |
| QLoRA | 0.1%~1% | Thấp hơn | Trung | Hơi thấp LoRA |
| Prompt Tuning | <0.01% | Cực thấp | Rất nhanh | Có hạn |
4. Quantization: "giảm cân" LLM
Model 70B với FP32 = 280GB VRAM — không có GPU top không chạy được. Quantization giảm precision số để compress model, cho LLM chạy hardware consumer.
模型量化演示
拖动滑块,直观感受不同精度下的模型体积、速度与质量变化
FP32(32位浮点数)是模型训练时的默认精度。每个参数用 32 位存储,精度最高但体积最大。通常只在训练阶段使用,推理时很少直接使用 FP32。
Core trade-off
Bản chất quantization = đánh đổi precision lấy space. FP32 → FP16 gần không mất, INT8 mất ít, INT4 mất rõ nhưng chấp nhận được. Tìm balance theo scenario.
- FP16 (half precision): size giảm 1/2, gần không mất, default cho train + inference
- INT8: giảm tiếp 1/2, mất rất ít, hợp đa số inference
- INT4: chỉ 1/8 FP32, mất 1 phần, hợp resource hạn chế
| Precision | Byte/param | Size model 70B | Quality loss | Use |
|---|---|---|---|---|
| FP32 | 4 | ~280 GB | Không | Training baseline |
| FP16 | 2 | ~140 GB | Gần không | Train + inference chuẩn |
| INT8 | 1 | ~70 GB | Rất ít | Production inference |
| INT4 | 0.5 | ~35 GB | Chấp nhận | Edge, local deploy |
5. Model deployment: từ lab → production
Model trained + compressed xong, deploy thành service callable. Không chỉ "chạy model", còn concurrency, load balance, cost control.
模型服务架构演示
点击不同部署方案,对比其特点与适用场景
将模型封装为 RESTful API 或 gRPC 服务,通过 HTTP 请求调用。适合需要实时响应的在线应用,如聊天机器人、智能客服、内容生成等。是目前最主流的部署方式。
3 deployment mainstream
- API vendor: dùng API OpenAI, Anthropic trực tiếp. Zero-ops, pay per token, hợp validate nhanh + dùng vừa-nhỏ.
- Self-hosted inference: vLLM, TGI deploy GPU server riêng. Cost control được, data không ra khỏi, hợp privacy hoặc scale lớn.
- Serverless inference: AWS SageMaker, Replicate, pay-per-request, auto scale. Hợp traffic fluctuate.
| Cách | Cost | Latency | Ops complexity | Use |
|---|---|---|---|---|
| API vendor | Pay per token | Trung | 0 | Prototype, mid-scale |
| vLLM self | GPU rent | Thấp | Cao | Scale lớn, privacy |
| Serverless | Pay per request | Cold start cao | Thấp | Traffic fluctuate |
| Edge | One-time hardware | Cực thấp | Trung | Offline, IoT |
Tổng kết
Fine-tuning + deployment = mắt xích biến LLM general → specialist. Từ data prep tới serving, mỗi bước cần tư duy engineering.
Key:
- Fine-tuning = onboarding training: LLM general học knowledge + behavior pattern domain
- Data quality quyết trần: 100 sample tốt > 10000 sample tệ
- LoRA = king efficiency: dưới 1% param đạt gần full
- Quantization = vũ khí deploy: INT4 cho model 70B chạy single GPU
- Deploy linh hoạt: validate dùng API, scale lớn self-host, fluctuate Serverless
2026 cho VN dev
- Unsloth: 2x speedup LoRA, easier learning curve
- MLX (Apple Silicon): train + inference trên Mac M-series rất nhanh
- Llama Factory: GUI fine-tune trong vài click
- Modal: serverless GPU dễ cho team không có infra
- Together.ai / Fireworks: managed fine-tuning Vietnamese-friendly pricing
- VN data: fine-tune Vistral, PhoGPT trên dataset VN
- Bài tập VN: fine-tune Qwen2.5-7B trên 1000 cặp Q-A nội bộ → CS agent