用途
本技能用于指导大模型微调数据集的构建流程,适用场景包括:准备微调、后训练、蒸馏或 LoRA/QLoRA 调优;生成合成数据或指令训练数据。其核心主张是:一次微调的内容实质由数据集决定,超参数只决定训练是否收敛,而数据集决定模型变成什么。多数令人失望的微调,是配置正确却训练在编码了错误内容的数据上。
三道检查门
门一:这是否是知识问题。 如果目标中包含让模型知道产品名称、运维事实、当前库存、政策细节等内容,那属于检索问题,微调是错误的工具。模型在前训练阶段获得事实,微调教它使用已有知识。携带真正新事实的样本学习速度慢得多,且随着学习会线性增加模型幻觉倾向。应在开始前明确拆分:事实、文档、实体等变化信息走 RAG;格式、结构、风格、语气走微调;任务流程、工具调用语法、推理风格走微调;领域词汇与问句形态可在检索上下文上微调,但事实仍在推理时检索。
门二:选择哪种技术。 阶段与参数预算相互独立,需阅读参考文档后再决定。简要原则:能写出正确输出用 SFT;只能判断两个输出哪个更好用偏好优化;脚本可验证正确性且 SFT 已停滞用 RL。默认参数预算为 LoRA,显存受限时用 QLoRA。
门三:基座模型是否已经会做。 在生成任何能力或行为数据前,先探测基座模型,只保留可测量失败的样本。这有两个已记录的代价:一是浪费精力,有团队探测后发现某行为基座已达约 94% 通过且无可复现失败模式,于是丢弃了 150 行无教学价值数据;二是主动退化,同一约 750 行的窄行为微调导致四个推理基准出现可测量退步(小学数学下降约 10–16 个百分点),因为该次运行没有评估切分。探测不是可选的勤勉,它决定什么进入数据集。保留确认失败的案例,重采样模糊案例(三次中一次拒答属于采样噪声而非失败,单次拒答评估准确率仅约 92%),丢弃基座已会的部分。确认类别应以比率报告(如“2/3”“3/3”),而非二元结论。
交付物
一个微调数据集不是一份样本文件,它由八个部分组成,缺少任何一项都无法评估或复现:
eval/——留出评测套件,最先构建,只用真实样本,在生成前保留。含三个子集:task(目标行为的留出真实样本)、retention(基座已通过的通用能力探测)、behavior(需保持的拒答、安全、语气不变量)。baseline.json——基座模型在训练前对三个子集的得分。没有它就没有分母。taxonomy.md——数据需覆盖的维度轴,每格目标数量。多样性来自变化条件对象,维度须在生成前落到纸上,过滤后重新计数。空格是下一轮生成的目标,不是可接受结果。train.jsonl/val.jsonl/test.jsonl,messages 格式,按源文档切分以防合成兄弟样本跨越边界,三级去重(精确、近似重复、语义),并对所有拟报告的评测集做去污染。- replay 混合——任务数据与通用指令数据按明示比例混合,使模型不丢失原有能力。
- 已验证的格式契约——哪个损失掩码标志匹配数据集格式(messages 用
assistant_only_loss,prompt/completion 用completion_only_loss),聊天模板实际发出的 EOS 是什么,并通过解码一个训练批次确认两者。 card.md——溯源:种子来源、生成模型与版本、生成提示、过滤与阈值、去重与去污染方法、每格计数、许可与条款。config.yaml——训练配置,启用评估曲线以便实时看到过拟合。
先构建评测集,可防止数据集被优化成生成器碰巧产出的样子。所有散文类产物应先写骨架,每次编辑替换一个小节——单次工具调用输出约不超过一千 token,计划、分类、卡片都比较长,一次性写入会中途截断导致失败。
用脚本生成,而非手工
你写管线,管线写数据。逐条手工写入 JSONL 是错误形态:它不可扩展、不可复现、生成循环本来就是循环(生成进分类格 → 验证 → 过滤 → 去重 → 重计覆盖 → 对不足格再生成),且过滤本身需要代码(MinHash 近似重复、嵌入最近邻阈值、n-gram 去污染都不是肉眼操作)。你手工编写的产物是输入:分类、生成提示、种子样本、过滤阈值;下游全部由运行程序产出。本技能的 scripts/generate.py 和 scripts/curate.py 是可运行参考管线:前者按分类驱动生成、支持断点续跑并逐行记录溯源;后者做坏样本剔除、精确/近似去重、对评测文件去污染并输出每格覆盖报告(仅用标准库)。宜在其基础上扩展,而非从零重写。
工作顺序
拆分知识与行为 → 判断行为部分是否非空(空则走 RAG 并停止)→ 选择阶段与参数预算 → 用真实数据写评测套件 → 给基座打分得 baseline.json → 定义需覆盖的维度分类 → 宽生成 → 验证、过滤、去重、去污染 → 是否仍有覆盖缺口(有则针对空格再生成)→ 按比例混入 replay 数据 → 启用评估曲线训练 → 对照基座判断门限是否通过(否则诊断数据还是配置)→ 通过后连同 card.md 交付。
质量与数量
在固定预算内,精选的成百上千条胜过未过滤的数万条(LIMA、AlpaGasus、LIMO 的结论),但这不适用于覆盖基座先验(如安全拒答、强默认行为):那里行为需要最小数量和最小占比,少量场景的少量改写是最不利的情形。典型数量范围:格式/结构转换 100–1,000;风格、语气、声音 500–2,000;分类/抽取每类 50–500;通用指令遵循 1,000–10,000;推理蒸馏 800–10,000 条已验证轨迹。当运行不理想时,加倍数据通常是错误反应。有助于保持的举措是加入新的通用 replay,而非更多目标行为。检查顺序:先学习率(保持侧),再目标模块,再多样性,最后混合比例。
退化门限
在宣布微调成功前,对照 baseline.json 运行以下检查:任务(目标指标在留出真实样本上提升,否则检查学习率与目标模块);保持(高于运行间噪声,失败则先降学习率并加 replay 混合);事实性(幻觉率不高于基座,否则把未知事实移入 RAG);安全(拒答行为保持,安全对齐会因纯良性数据退化,需在混合中加入安全样本);格式(输出能终止并能解析,否则是 EOS 或聊天模板缺陷);多样性(输出未坍缩为一种说法,否则减少轮次、降低学习率或按 0.5 缩放 alpha)。只测任务指标,正是让“某方面提升 10 分、其他方面退步 15 分”的模型上线的方式。
参考文件
按需读取,不必全部加载:references/choosing-technique.md(RAG/提示替代方案、CPT/SFT/DPO/RL、DPO/KTO/ORPO/SimPO、全量 FT 与 LoRA/QLoRA、阶段顺序);references/synthetic-generation.md(质量/多样性/复杂度权衡、Self-Instruct、Evol-Instruct、Magpie、人格、文档锚定问答、自对话、轨迹、蒸馏、验证与评审偏差、模型坍缩、许可);references/data-quality.md(评测集构建、规模、去重层级、去污染、平衡、覆盖基座先验的占比、messages 格式、损失掩码、EOS、聊天模板、切分泄漏、数据集卡片);references/lora-configuration.md(rank、alpha、目标模块、学习率、调度、打包、dropout/验证作为回归杠杆、rsLoRA/DoRA/LoRA+/PiSSA、示例配置、症状到旋钮对照表、合并);references/avoiding-degradation.md(遗忘机制、replay 比例与来源、未知知识与未知能力检测、安全退化、过拟合与坍缩症状、门限阈值)。