阶段三:Fine-tuning 实战
第 6-7 周 | 核心目标:Humanizer 专属改写模型(降成本)
⚠️ v5 变更:加云 GPU 训练方案(MacBook 训练 7B 模型太慢)
💡 前移理由:学完 Agent/RAG 后已有"改写质量"的判断力,此时做训练数据筛选最精准。微调完成后用 Ollama(本地推理)部署。
Step 0:硬件方案确认
MacBook Pro(ARM)可以跑推理(Ollama),但训练 7B 模型会很慢(LoRA 可能需要十几小时)。
推荐方案:云 GPU 训练
| 方案 | GPU | 价格 | 训练 500 条 LoRA 预估时间 | |------|-----|------|--------------------------| | AutoDL(国内) | A100 40G | ~¥3-5/h | 30-60 分钟 | | Google Colab Pro | T4/A100 | ~$10/月 | 1-2 小时 | | 本地 MacBook M 系 | MPS | ¥0 | 5-15 小时 |
建议:用 AutoDL(国内网络友好,按小时计费),训练完导出模型文件,下载到本地用 Ollama 部署推理。
流程:
- 本地准备训练数据(JSONL 格式)
- 上传到 AutoDL
- 用 LLaMA-Factory / Unsloth 训练 LoRA
- 导出合并后的模型(GGUF 格式)
- 下载到本地,Ollama 加载推理
Step 1:本阶段资料
| 资料类型 | 具体资料 | 用途 | |----------|---------|------| | 课程 | 吴恩达 Generative AI with Large Language Models | 微调理论 | | 工具 | LLaMA-Factory 官方文档 | 最易用的微调平台 | | 工具 | Unsloth 官方教程 | 速度最快的微调库 | | 文档 | HuggingFace PEFT 文档 | 底层库 |
Step 2:本阶段心智模型
心智模型 1:RAG vs Fine-tuning 选择模型
- 核心思想:RAG 解决"知识更新"(信息经常变),Fine-tuning 解决"风格/格式"(固定的模式)。两者互补不是竞争
- 关键变量:知识更新频率、输出格式要求、推理成本
- 应用场景:RAG 用于知识库问答,Fine-tuning 用于风格化输出、Humanizer 改写风格学习
- 局限性:Fine-tuning 学到的知识是静态的,更新需要重新训练
- 相关资料:LLaMA-Factory 文档
心智模型 2:PEFT 效率模型
- 核心思想:LoRA/QLoRA 只训练低秩适配器,不需要更新全部参数
- 关键变量:rank(通常 8-64)、alpha(通常 2×rank)、target modules(attention + FFN)
- 应用场景:消费级显卡微调、特定格式学习、让小模型学会改写风格
- 局限性:PEFT 效果不如全量微调,但对大多数应用层任务够用
- 相关资料:Unsloth 教程、HuggingFace PEFT 文档
Step 3:本阶段分歧点
分歧 1:什么时候该 RAG 什么时候该 Fine-tuning?
- A 方(RAG 优先):RAG 更灵活,知识更新不需要重新训练
- B 方(Fine-tuning 优先):Fine-tuning 推理成本低,小模型能替代大模型 API
- 实践倾向:Humanizer 的改写风格是固定的,不需要实时知识更新,Fine-tuning 是正确选择——学成后可以用本地小模型替代大模型 API,大幅降低成本
- 为什么重要:选错方案会导致维护成本飙升
分歧 2:LoRA vs QLoRA?
- A 方(LoRA 派):QLoRA 量化会损失精度,能用 LoRA 就用 LoRA
- B 方(QLoRA 派):QLoRA 省 50%+ 显存,精度损失可以忽略
- 实践倾向:Qwen2.5-7B 用 LoRA 跑得动就不上 QLoRA,如果换成 14B 再考虑 QLoRA
- 为什么重要:显存决定了你能微调多大的模型
Step 4:实操项目(Humanizer 专属改写模型)
项目目标:准备 500-1000 条高质量改写训练数据,对 Qwen2.5-7B 做 LoRA 微调,让模型学会 Humanizer 的改写风格,减少对大模型 API 的依赖,降低推理成本。
- [ ] 从 Humanizer 日志中筛选高质量改写样本(输入-输出对)
- [ ] 清洗和标注训练数据(至少 500 条,目标 1000 条)
- [ ] 设计数据格式(instruction + input + output)
- [ ] 用 LLaMA-Factory 或 Unsloth 对 Qwen2.5-7B 做 LoRA 微调
- [ ] 训练监控:记录 loss 曲线、检测过拟合
- [ ] 用 Ollama 加载微调后的模型做推理测试
- [ ] 构建 A/B 测试框架:微调模型 vs 当前 API 改写
- [ ] 人工评分 + 自动评估(复用阶段 1 的改写质量评估方法)
- [ ] 量化成本对比:微调模型推理成本 vs 当前 API 调用成本
- [ ] 实现降级策略:微调模型推理失败时自动切回 API
- [ ] 进阶:用 DPO 做偏好优化(如果有用户反馈数据)
Step 4.5:💬 AI 教练对话(做任务时用)
Prompt 1:数据准备(决定微调目标时)
我要微调 Qwen2.5-7B 学习 Humanizer 的改写风格。
请帮我分析:
1. 训练数据从哪来?Humanizer 日志里的改写样本可以直接用吗?需要怎么清洗?
2. 训练数据的质量标准是什么?500 条够吗?
3. 数据格式怎么设计?(instruction / input / output)
Prompt 2:训练问题(训练出问题时)
训练 loss 不下降 / 过拟合 / 显存爆了。
请帮我诊断:
1. 最可能的原因是什么?
2. 学习率、batch size、rank 分别怎么调?
3. 什么情况下应该换 QLoRA?
不要直接给命令,引导我排查。
Prompt 3:A/B 测试设计(完成微调后)
我微调完了改写模型。现在要对比微调模型和当前 API 的效果。
请帮我分析:
1. A/B 测试应该覆盖哪些维度?(改写质量、风格一致性、速度、成本)
2. 人工评分和自动评估各有什么优劣?
3. 什么样的评估结果可以让我放心切换到微调模型?
Prompt 4:模型提取(完成项目后)
我刚完成了 Humanizer 专属改写模型。
请帮我归纳:
1. RAG 和 Fine-tuning 的核心区别是什么?
2. 什么时候应该用 DPO 而不是 SFT?
3. Fine-tuning 后,推理成本实际降了多少?
让我先总结,你再补充。
Step 5:关 AI 自测
关闭所有资料和 AI,纯靠记忆回答。
- RAG 和 Fine-tuning 的核心区别是什么?Humanizer 改写为什么选 Fine-tuning?
- LoRA 的 rank 参数决定了什么?rank 太小会怎样?太大呢?
- 为什么 500 条高质量数据往往比 5000 条噪声数据好?
- 如果微调模型的改写质量比 API 低 5%,但成本降了 80%,你会切换吗?为什么?
评分:每题 25 分,≥80 分通过。
Step 6:费曼输出 + 信心校准
一句话版本:用 1 句话说清楚"Fine-tuning 解决什么问题"。 三分钟版本:给产品经理解释为什么 Humanizer 要用自己的改写模型而不是一直调 API。
信心自评:___/10 分 我最可能在什么地方翻车?
工程化要求
- [ ] 训练日志和指标记录(loss 曲线、训练时长、GPU 使用率)
- [ ] A/B 测试框架(微调模型 vs API,覆盖质量/速度/成本三维度)
- [ ] 模型版本管理(每次微调的模型文件、训练参数、评估结果归档)
- [ ] 降级策略(微调模型推理失败时自动切回 API,对用户无感)
- [ ] Ollama 部署(微调模型加载到 Ollama,支持本地推理)
验证指标
| 指标 | 目标值 | 测量方式 | |------|--------|----------| | 改写质量对比 | 与 API 相当(差距 < 5%) | 人工评分 + 自动评估 | | API 成本下降 | > 50% | token 消耗对比 | | 推理延迟 | < 3s/次(7B 模型本地推理) | Ollama 基准测试 | | 降级切换成功率 | 100%(对用户无感) | 模拟故障测试 | | 训练数据量 | ≥ 500 条高质量样本 | 数据统计 |