什么是 SFT 指令微调?微调数据需要什么格式?
- 标签:
🏛 业务架构师
SFT(Supervised Fine-Tuning,指令微调/监督微调)是在预训练模型上,用"指令-期望输出"配对数据做监督训练,教会模型听懂指令、按范式作答——从"会续写文本"变成"会执行任务"。
微调数据格式,主流两种:
1. Alpaca 格式(单轮):
json
{"instruction": "将以下客户反馈分类为:售后/售前/物流/产品",
"input": "快递三天了还没到,客服也联系不上",
"output": "物流"}2. ShareGPT/Messages 格式(多轮):
json
{"messages": [
{"role": "system", "content": "你是电商客服助手"},
{"role": "user", "content": "订单A1024到哪了"},
{"role": "assistant", "content": "请问您需要我帮您查询物流轨迹吗?"},
{"role": "user", "content": "是的"},
{"role": "assistant", "content": "订单A1024当前已到达…"}]}数据要求:几千到几万条起步;output 质量是天花板(答案错了模型学错);覆盖任务多样性(防走火);掺通用数据防遗忘。
业务价值定位:SFT 管"行为范式"——话术、格式、风格、流程习惯;知识注入交给 RAG。企业做 SFT 的最优数据源是业务沉淀的"黄金问答对"(客服标星记录、专家操作日志),这些私有数据才是微调的差异化价值所在。
🏗 系统架构师
SFT(Supervised Fine-Tuning,指令微调)= 用"指令→期望回答"的监督数据继续训练预训练模型,教它听懂指令、按要求作答——从"续写机器"到"助手"的关键一步。
数据格式(核心):
Alpaca 风格:
json
{"instruction": "把这段话翻译成英文", "input": "今天天气很好", "output": "The weather is nice today"}Chat 消息格式(主流,匹配对话模板):
json
{"messages": [
{"role": "system", "content": "你是客服助手"},
{"role": "user", "content": "怎么退款?"},
{"role": "assistant", "content": "退款流程如下……"}
]}多轮对话是 messages 数组里 user/assistant 交替;训练时只对 assistant 段计算 loss(user 段不参与损失),这是格式工程的关键细节。
格式之外的质量要素:样本要覆盖任务分布(指令多样性);output 是唯一学习信号——格式统一、事实正确、风格一致;配 5~20% 通用数据防遗忘。量级:几千条高质量可对齐行为(LIMA 结论),几万条是常见规模,质量 > 数量是铁律。
架构视角:SFT 数据管道 = 采集(业务日志/自蒸馏/人工)→ 清洗(去重、脱敏、质检)→ 格式化(统一 schema)→ 版本化,这个管道的工程成熟度决定微调业务能走多快。
💻 全栈开发专家
SFT(Supervised Fine-Tuning,指令微调):用「指令-回答」对监督训练,把只会续写的基座模型变成能听懂指令、按对话协议交互的助手。
数据格式主流两种:
Alpaca 格式(单轮为主):
json
{"instruction": "把下面句子翻译成英文",
"input": "今天天气很好",
"output": "The weather is nice today."}ShareGPT/OpenAI messages 格式(多轮,现在的事实标准,ChatML 模板):
json
{"messages": [
{"role": "system", "content": "你是电商客服"},
{"role": "user", "content": "退货流程是什么"},
{"role": "assistant", "content": "1. 在订单页申请..."},
{"role": "user", "content": "运费谁出"},
{"role": "assistant", "content": "质量问题我们承担..."}
],
"source": "faq_v3", "weight": [0,0,1,0,1]}weight 字段控制哪些 assistant 轮参与 loss 计算(多轮里通常全部 assistant 轮都算)。
工程要点:
- 训练时 messages 会被套 chat template(
<|im_start|>user\n...),模板必须和推理部署一致——模板不匹配是微调后效果崩的头号原因; - loss 只算 assistant 部分,user/system 部分不参与(pad 成 -100);
- 数据量:风格/格式 1k~10k,领域任务 1w~10w,质量优先于数量;
- 拒答样本、安全样本要有意识地配比(各 ~10%)。
工具链:Axolotl/LLaMA-Factory 直接吃这两种格式,转好 JSONL 即可开训。