【大模型】大模型数据训练格式
1. SFT(有监督微调)
1.1 数据格式
- JSONL(每行一个 JSON 对象)最为流行;也可用 CSV/TSV,但 JSONL 更灵活。
- 字段设计
prompt
:用户输入或任务指令(通常以“系统指令+用户问题”拼接)completion
:希望模型生成的“黄金”回答- 可选
metadata
:如示例来源、类别标签、示例难度等
{"prompt": "<|SYSTEM|>你是一名法律顾问。\n<|USER|>合同纠纷如何处理?", "completion": "首先,应当……并在必要时咨询专业律师。"}
{"prompt": "<|SYSTEM|>你是一名旅游助手。\n<|USER|>去巴黎有什么推荐?", "completion": "巴黎的必去景点包括埃菲尔铁塔……"}
- 长度与拆分
prompt
+completion
合计 token 数一般不超过模型最大上下文长度(如 4K、8K)。- 对超长示例,可分段给出——比如把背景单独一个示例,把核心提问单独一个示例。
1.2 常见示例规模
- 小规模:几千条(用于快速验证思路)
- 中等规模:1–10 万条(可获得明显效果提升)
- 大规模:几十万–百万条(面向全功能对话/写作助手)
经验:对于 6B 量级模型,至少需要 2–5 万条高质量示例才能看到稳定的 SFT 提升;上不封顶,示例越多、越多样,微调效果越好。
2. RM(奖励模型训练)
2.1 数据格式
- 对比式偏好数据:每条记录包含一对或多组生成,模型学习去区分“好”与“差”回答。
- JSONL 格式示例:
{"prompt": "如何写一封求职信?","response_a": "尊敬的招聘经理……", "response_b": "你好,我想要这份工作……", "label": 0}
label
:通常用0
、1
表示哪个 response 更优(0
表示response_a
更好,1
表示response_b
更好)。- 可扩展
- 多选对比:
responses: ["A","B","C"]
+label: 2
- 打分式:
score_a: 4.5, score_b: 3.2
- 多选对比:
2.2 常见示例规模
- 中等规模:1–5 万对(可用人工标注或半自动筛选)
- 大规模:5–20 万对(用于更严格的排序和奖励信号)
建议:初期可先收集 2–3 万对,高质量人工标注;后期再扩充并加入模型自标反馈(例如用当前策略生成对比对,再由人审核)。
3. PPO(强化学习微调)
3.1 数据格式
PPO 环节并不存储单一固定的数据集,而是在每次训练迭代(rollout)中动态生成:
- Prompt Batch:事先准备的一批
prompt
(与 SFT 相同格式或专门设计的评测提示)。 - Policy Outputs:当前模型(Policy)对每个 prompt 生成的多条候选
completion
。 - Reward Scores:用 RM 或其它函数(如安全检测、相似度、算术准确度)对每条候选打分。
- Advantage / Return:根据 reward 及折扣率(γ)计算出的优势值,用于 PPO 更新。
rollout[0]:prompt: "如何写求职信?"responses: ["版本A", "版本B", ...]rewards: [1.2, -0.3, ...]advantages: [0.8, -0.5, ...]
rollout[1]:prompt: "巴黎旅游推荐?"...
- 存储方式:
- 训练过程中可按 epoch 暂存到内存或中间文件;
- 完成后可归档为带
rewards
、advantages
的 JSONL 或二进制格式,用于后续分析和复现。
3.2 常见示例规模
- Rollout 大小:每次迭代通常采集 1–5K 个 prompt,每个 prompt 下 1–4 条生成,共 5K–2W 条样本。
- 训练轮次:典型 100–500 个迭代,总样本量可达数十万条。
在 PPO 中,数据量并不是一次性全部收集好的,而是与训练进度交替生成并马上用来更新策略。
四、总结对比
环节 | 格式要素 | 常见规模 | 数据来源 |
---|---|---|---|
SFT | {"prompt","completion"} | 1e4–1e6 条 | 现有数据集+人工标注 |
RM | {"prompt","response_a","response_b","label"} | 2e4–2e5 条对 | 人工偏好/模型自标 |
PPO | Rollout(prompt + response + reward + advantage) | 每迭代 5e3–2e4 条,累计 1e5–5e5 | 动态生成+RM 评分 |
- SFT:打好「基本功」,让模型学会“如何回答”
- RM:教会模型“如何区分好坏回答”
- PPO:通过强化学习,最大化实际奖励信号,进一步提升模型在真实任务中的表现