题目
SFT 阶段数据该如何构造?多少条够用?质量与数量如何权衡?
参考答案
SFT 数据格式:指令-回答对,常见格式:
- Alpaca 格式:
{instruction, input, output}。 - ShareGPT 格式:多轮对话
{conversations: [{from, value}]}。 - OpenAI ChatML:
{role, content}角色-内容对。
数据来源:
- 人工编写:质量最高,但成本高(LIMA 1000 条人工数据为例)。
- Self-Instruct:用强模型(如 GPT-4)生成指令-回答对,量大但需过滤。
- 开源数据集:Alpaca、FLAN、ShareGPT、OpenAssistant 等。
- 业务数据:自家应用真实对话日志(脱敏后)——最贴近生产分布。
多少条够用:
- 少而精:LIMA 用 1000 条高质量数据 SFT 即可让 65B 模型表现接近 GPT-4,证明”质量 > 数量”。
- 中等规模:1 万–10 万条是常见区间,覆盖任务多样性。
- 大规模:FLAN v2 百万级,追求任务覆盖广度。
- 关键结论:1000 条高质量 >> 10 万条噪声。少而精往往优于多而杂。
质量要点:
- 多样性:覆盖任务类型(QA、写作、推理、代码、角色扮演)、难度、长度。
- 正确性:答案必须正确,错误答案会”教坏”模型。
- 风格一致:回答风格统一(如都用 Markdown、都简洁/详细),避免模型学到混乱模式。
- 指令清晰:指令部分明确,避免歧义。
- 拒绝样本:加入合理的拒绝数据(违规、超范围问题),教模型学会说”不”。
- CoT 数据:数学/推理任务要有思维链,而非只给最终答案。
训练技巧:
- epoch 控制:1–3 epoch,过多易过拟合(只会照搬 SFT 风格)。
- 学习率:比预训练小一个量级。
- 损失屏蔽:只对回答部分算损失,不对指令算(避免模型学”背指令”)。
- 数据配比:按任务类型加权,避免某类过多淹没其他。
面试加分点:
- LIMA 论文”对齐只需少量高质量数据”是 SFT 的关键认知——颠覆了”数据越多越好”的直觉。
- 强调 SFT 主要学的是格式与风格,而非知识(知识来自预训练)——这解释了为何少量数据即可。
- badcase 驱动的迭代:线上 badcase → 补 SFT 数据 → 重训 → 评测,是生产 SFT 的核心循环。
出处:LIMA 论文《Less Is More: Aligning the Data Quality Over Quantity》、SFT 面经。
内容来源
整理自大模型 SFT 面经与 LIMA 论文
本站内容整理自公开面经与开源仓库,仅供学习交流,严禁杜撰。