通用 Instruct 模型已经很会对话,但接到垂直任务时常常「不够稳」。这一篇先不写命令,而是把「为什么要微调、目标是什么、整条路线怎么走」讲清楚。

基座模型哪里不够?

通用 Instruct 模型接到垂直任务时,常见短板是:

  1. 行为约束不够稳:角色、口吻、拒答边界容易漂移。
  2. 结构化输出不可靠:下游系统需要固定 schema(例如 JSON),模型却经常用自然语言「解释一遍」。

微调的目标,通常就是两件事同时推进:

  • 让模型更贴合任务人设与领域表达;
  • 让模型在「需要结构化输出」时,稳定产出可解析结果。

推荐路线图

1
2
3
4
5
6
7
8
9
10
11
定义任务与输出 schema

构造监督数据(Alpaca JSONL)

互斥划分 train / val

LLaMA-Factory:SFT + LoRA

合并适配器 → 完整模型

离线评估 +(可选)推理侧校验

为什么起步用 LoRA,而不是全量微调?因为对中小规模监督数据,LoRA 通常已经够用:显存更省、迭代更快、产物更小。全量微调可以作为后续对比实验,不必作为第一步。

三阶段目标

阶段 目标 怎么算过关
跑通 能训、能合并、能推理 loss 正常下降,产出可加载模型
可用 核心结构化任务大体正确 用专门指标评估,而不是只看字符串全匹配
可上线 泛化与格式稳定性达标 未见过的说法也能稳住;必要时加后处理

关键原则(先记住)

  • 数据质量决定上限,超参只决定你离上限有多近。
  • 验证集必须与训练集互斥;否则分数虚高,上线会打脸。
  • 不同任务用不同指标:结构化输出看 schema / 字段匹配;开放文本看人工抽检或语义相似度。

语言模型微调实战第 01 篇完。下一篇:SFT 是任务,LoRA 是方法——把这两个最容易混的词拆开。