微调模型应该如何评估、保存和上线?
简化版
微调验收要同时比较目标任务、通用能力、安全、稳定性、延迟和成本,不能只看训练 loss。上线时必须绑定基座版本、Tokenizer、Chat Template、Adapter 和训练配置,并通过离线回归、灰度监控和可回滚版本管理控制风险。
详细版
完整流程包括:
- 训练前保存基座 Prompt 基线;
- 使用严格隔离的测试集比较任务正确率;
- 回归通用能力、安全、拒答和格式指标;
- 按长度、语言、难度和风险类型分析失败;
- 记录随机种子、数据版本、代码、超参数和依赖;
- Adapter 保存基座模型 ID、revision、Tokenizer 与模板;
- 比较合并和未合并部署的质量、延迟与运维成本;
- 小流量灰度,监控严重错误并保留回滚路径。
若训练数据参与了测试集构造或反复调参,测试结果会被污染,需要另设最终验收集。
完整版教学
记忆钩子:微调题先分清目标是改行为、补知识还是降成本,再谈 SFT、LoRA、QLoRA 和评估上线。
一、训练 loss 说明不了什么
loss 只表示模型更能预测训练目标 token。它不能直接证明事实更正确、用户更满意、安全性更高,也无法发现测试泄漏和模板记忆。
评估必须对应业务成功标准。
二、建立多层指标
目标任务可使用准确率、F1、代码测试、Schema 校验或人工 rubric;生成任务还要看事实支持、指令遵循和严重错误率。系统指标包括首 token 延迟、吞吐、显存和单请求成本。
平均分会掩盖高风险失败,应按场景分桶并保存具体失败案例。
三、与哪些基线比较
至少比较原始基座、优化 Prompt、RAG/工具方案和微调候选。微调版本还应比较不同数据、步数或 Adapter 配置,防止把基座本来就会的能力误认为训练收益。
四、Adapter 为什么必须绑定基座
LoRA 保存的是相对某个权重的增量。基座 revision、层名、Tokenizer 或词表不同,轻则效果下降,重则无法加载。模型卡中应记录这些依赖以及 Chat Template。
五、合并还是动态加载
合并 Adapter 可简化单任务推理路径;动态加载便于共享基座和切换任务。合并后若再量化,要重新做质量评估,因为合并与量化顺序会影响误差。
多租户动态 Adapter 还要验证路由隔离,防止请求使用错误 Adapter。
六、上线后的监控
灰度阶段记录任务成功率、拒答率、格式失败、延迟和用户反馈。监控输入分布变化,但日志必须脱敏并遵守数据保留政策。
严重回归应自动停止放量或回滚,线上失败样本经审核后再进入下一轮训练。
七、面试拆解算例
微调题可以用一个小项目来拆:基座模型 7B,业务只需要客服问答风格统一,训练集初筛 30,000 条,清洗后留下 8,000 条高质量样本。若全量微调,7B 参数按 BF16 仅权重就约 14GB,训练还要梯度和优化器状态;若用 LoRA,只训练低秩增量,显存压力会明显下降,但表达能力受 rank 和目标模块影响。
base_model: 7B
raw_samples: 30000
clean_samples: 8000
lora_rank: 8 or 16
learning_rate: 1e-5 ~ 2e-4
validation_split: 5% ~ 10%
| 方案 | 适合目标 | 主要风险 | 验收重点 |
|---|---|---|---|
| Prompt | 临时改格式、少量约束 | 长提示不稳定 | 单轮成功率 |
| RAG | 接入动态知识 | 检索召回不足 | 引用与命中率 |
| SFT/LoRA | 固化行为和领域表达 | 遗忘与过拟合 | 回归集与人工偏好 |
| 全量微调 | 深度改模型能力 | 成本高、风险大 | 全面评测 |
数据清洗 -> 训练/验证切分 -> 小步试训 -> 回归评测 -> 灰度上线
| | | |
去噪去重 防泄漏 看 loss 看坏例
因此回答「微调模型应该如何评估、保存和上线?」时,不要直接说“用微调”。先问目标是什么、数据是否足够干净、是否有动态知识,再选择 Prompt、RAG、PEFT 或全量微调,最后用评估集证明它确实变好了。
八、常见误区与追问
- 误区:微调就是把业务文档喂给模型让它记住。 微调更适合塑造行为格式、任务风格和领域表达,动态知识与事实更新通常更适合 RAG。
- 追问:为什么这个问题不用 Prompt 或 RAG 解决? 面试里要先说明目标是改行为、补知识还是接外部数据,再选择微调方案。
- 误区:训练集越大越好。 SFT 更怕低质、冲突、模板化和泄漏数据;少量高质量样本常常胜过大量脏样本。
- 追问:上线前你会看哪些评估? 至少要覆盖基准集、人工偏好、回归用例、安全红线、延迟成本和灾难性遗忘检查。
- 误区:LoRA/QLoRA 省显存就没有代价。 参数高效方法降低训练成本,但 rank、目标模块、量化误差和合并部署都会影响最终质量。
九、加强记忆
微调交付物不是一个 Adapter 文件,而是“数据、配置、基座、Tokenizer、模板、评估报告和回滚方案”的完整版本;训练能跑完只是起点,上线可验证才算完成。