
CHAPTER 04 · COMBINED STRATEGIES
先蒸馏再微调 · 同步蒸馏 · 法律领域端到端案例 · 电商客服资源受限案例
在实际落地中,蒸馏和微调几乎不会单独使用——你需要的是"先蒸馏再微调"或"微调阶段同步蒸馏"的组合策略。本章是全书最核心的实操章节,提供两种策略的完整链路和两个端到端案例。
选择A:直接微调7B 用领域数据微调Qwen2.5-7B-Instruct。问题:7B通用能力有限,微调后可能"够专但不够强"
选择B:先蒸馏再微调 ★ 先从72B蒸馏到7B(获得通用能力),再用领域数据微调(适配业务场景)。7B既"够强"又"够专"
核心逻辑:蒸馏解决"够不够强"的问题,微调解决"够不够专"的问题。
第一步:蒸馏(72B→7B) 用黑盒或白盒蒸馏将72B能力迁移到7B。推荐LoRA r=32, 4个目标模块, 2 epochs。蒸馏数据用72B生成的10K条通用指令数据。
第二步:合并蒸馏适配器 llamafactory-cli export 合并LoRA权重,得到蒸馏后的7B完整模型。
第三步:微调蒸馏后的7B 以蒸馏后7B为基座做领域微调。LoRA r=16, 2个目标模块, 3 epochs。学习率3e-5(低于直接微调,保护蒸馏能力)。
第四步:合并微调适配器 最终得到领域专用7B模型。
蒸馏阶段配置
lora_rank: 32 # 蒸馏用更大rank
lora_alpha: 64
lora_target: q_proj,k_proj,v_proj,o_proj # 4个目标模块
dataset: distill_data_from_72b
learning_rate: 5.0e-5
num_train_epochs: 2 # 蒸馏通常2轮
微调阶段配置
model_name_or_path: /path/to/7b-distill-merged # 蒸馏后的7B
lora_rank: 16 # 微调用较小rank
lora_target: q_proj,v_proj
dataset: my_medical_dataset
learning_rate: 3.0e-5 # 低于直接微调,保护蒸馏能力
num_train_epochs: 3
蒸馏阶段用更大的rank 蒸馏需学习教师通用能力,信息量大,rank=32~64。微调只需适配领域,rank=16通常够用
微调阶段用更低的学习率 3e-5 vs 5e-5,避免"冲掉"蒸馏获得的能力
微调数据混入通用数据 10~20%通用指令数据防止灾难性遗忘
每一步都要评估 蒸馏后评估通用能力是否提升,微调后评估领域能力是否达标
"先蒸馏再微调"是两步走,"同步蒸馏"是一步到位——在微调学生模型的同时,用教师模型的输出作为额外的监督信号。学生在学习领域知识的同时,持续受到教师"指导",不会偏离太远。
损失函数
L_total = α · L_KD(教师, 学生) + β · L_CE(硬标签) + γ · L_SFT(领域数据)
领域数据batch:只计算SFT损失 | 通用数据batch:同时计算KD损失和CE损失 | 交替训练
KD=0.1, SFT=0.9 → 偏向领域适配,教师指导弱
★KD=0.3, SFT=0.7 → 推荐起点,平衡领域适配和通用能力
KD=0.5, SFT=0.5 → 教师、领域各半
KD=0.7, SFT=0.3 → 偏向教师指导,领域数据少时适用
实验1:KD_WEIGHT的影响(法律领域,72B→7B)
KD=0.1 → 法律79%,C-Eval 66 ✅ | 领域好,通用退化
★KD=0.3 → 法律77%,C-Eval 69 ✅ | 最佳平衡
KD=0.5 → 法律74%,C-Eval 71 ✅ | 通用好,领域不够
KD=0.7 → 法律70%,C-Eval 72 ⚠️ | 教师信号太强,领域适配弱
实验2:温度参数(KD_WEIGHT=0.3)
τ=1 → 法律76%,C-Eval 68 | 暗知识不足
★τ=2 → 法律77%,C-Eval 69 | 推荐
τ=3 → 法律77%,C-Eval 70 | 通用略好
τ=5 → 法律75%,C-Eval 69 | 过度软化,噪声增多
实验3:领域数据与通用数据的比例
领域:通用 = 2:1 → 法律78%,C-Eval 67 | 偏向领域
★1:1(交替训练) → 法律77%,C-Eval 69 | 推荐
1:2 → 法律73%,C-Eval 71 | 偏向通用
调参路径:起点KD=0.3, τ=2, 领域:通用=1:1 → 领域不够就降低KD或增大领域比例 → 通用退化就增大KD或增大通用比例 → 不稳定就降低学习率
场景定义
目标:面向法律领域的7B对话模型,部署在律师事务所内网
推理硬件:1×RTX 4090(24GB)
训练硬件:2×A100 80GB(云GPU)
领域数据:5000条法律问答对 | 时间:1周
7天执行计划
Day 1-2 数据准备:5000条法律数据(ShareGPT格式)+ 10K条通用蒸馏提示(UltraChat子集)
Day 3-4 蒸馏:72B生成10K条回答 → 过滤 → 训练7B(LoRA r=32, 2ep)→ 合并 → 评估C-Eval
Day 5-6 微调:5000条法律数据 + 10%通用数据 → 微调蒸馏后7B(LoRA r=16, lr=3e-5, 3ep)→ 合并
Day 7 对比评估:vs 直接微调 / vs 纯蒸馏 → 确认最终模型
预期效果对比
原始7B-Instruct → 法律60~64%,C-Eval 67~69
直接微调7B → 法律75~81%,C-Eval 63~67 ↓ | 领域提升,通用退化
纯蒸馏7B → 法律65~71%,C-Eval 70~73 ↑ | 通用提升,领域不够
★先蒸馏再微调7B → 法律79~85%,C-Eval 68~72 | 领域+通用都好
组合策略的价值:蒸馏保住了通用能力的底线,微调拉高了领域能力的上限。
资源约束
训练硬件:仅1×RTX 4090(24GB)——只有一张消费级显卡
领域数据:2000条客服对话(质量参差不齐)
时间预算:3天 | 预算:尽量免费
白盒蒸馏72B→7B不可能(72B教师4bit推理需36GB显存)。选择"黑盒蒸馏 + 微调"——利用云GPU做教师推理(按小时计费),本地4090做学生训练。
3天执行计划
Day 1上午 数据清洗:去除敏感信息、统一格式、去重。2000条原始数据 → 约1500条可用
Day 1下午 租用云GPU(1×A100,约10元/小时),用72B教师对5K条通用提示生成回答,约3~4小时完成
Day 2 本地4090训练:用5K条蒸馏数据做黑盒蒸馏(LoRA r=16, 3ep),约4~6小时。合并适配器
Day 3 本地4090微调:1500条客服数据 + 150条通用数据(LoRA r=16, lr=3e-5, 3ep),约2小时。评估部署
与法律案例对比
法律案例:2×A100 80GB | 白盒蒸馏 | 5K领域数据 | 7天 | 成本约2000元
电商案例:1×RTX 4090 | 黑盒蒸馏 | 2K领域数据 | 3天 | 成本约50元(云GPU 3~4小时)
关键洞察:资源受限不等于效果受限。黑盒蒸馏+微调的组合,在单卡4090上也能做出不错的领域模型。核心是把教师推理和学生学习分开——教师用云GPU按需租用,学生在本地训练。
本章小结
- 先蒸馏再微调:最稳妥的落地路径,蒸馏保通用,微调拉领域
- 同步蒸馏:一步到位但调参复杂,起点KD=0.3, τ=2, 领域:通用=1:1
- 蒸馏阶段用大rank(32~64),微调阶段用小rank(16)+ 低学习率(3e-5)
- 法律案例(2×A100):先蒸馏再微调,法律79~85%,C-Eval 68~72
- 电商案例(1×4090):黑盒蒸馏+微调,3天完成,成本约50元
PAPER & INK · AI EDITION · CHAPTER 04. #得到大脑 #《日更者联盟》 14天打卡活动---Day04