nanochat 后半程 · 第 2 章 SFT 数据


nanochat 后半程 · 第 2 章 SFT 数据

章节摘要:SFT 的上限在动手训练之前就被数据决定了——这是后半程最值得花时间的一章。2.1 节定义指令数据的形态:从单轮问答到多轮对话再到带系统提示的完整消息结构,给出 JSONL 的标准样例与字段约定(这些约定将被第 4 章的 chat template 直接消费)。2.2 节讲开源路线:以质量、规模、许可证、语言四把尺子挑选 OpenHermes/UltraChat/SmolTalk 一类指令集,再过一遍去重与质量过滤的清洗管线(附可跑代码)。2.3 节讲自造路线:种子指令 → 强模型生成 → 质量过滤的蒸馏回环,这也是中文语料的主产线(第 8 章的前置)。两条路线殊途同归:产出一份数万条、干净、格式统一的 messages 列表。

学习目标

阅读完本章,你应当能够:

  1. 写出单轮、多轮、带 system 提示三种形态的标准 JSONL 样例,说出各字段的语义。
  2. 用质量/规模/许可证/语言四把尺子评估一份开源指令集。
  3. 跑通一条"去重 + 质量过滤"的清洗管线并解释每一步为什么存在。
  4. 描述蒸馏回环的三步(种子→生成→过滤)及其成本结构。
  5. 为自己的项目在"直接用开源集"与"自造蒸馏"之间做出选型。

核心概念速览

(文字流程图) B ──▶ 统一的 messages JSONL·约数万条 统一的 messages JSONL·约数万条 ──▶ 第 3 章 SFT 训练的燃料

一句话金句:模型只背它见过的答案——数据是 SFT 唯一真正的课程表。

子章节导航

2.1 指令数据的形态:单轮、多轮与系统提示

消息结构定义、三种形态的 JSONL 样例、字段约定与常见脏数据。

2.2 来源与清洗:开源指令集的挑选

四把尺子;主流开源集横向对比表;去重与质量过滤管线代码。

2.3 自造数据:用强模型蒸馏指令对

蒸馏回环三步走;管线示意代码与成本估算;中文语料方案预告(衔接第 8 章)。

子章节之间的逻辑关系

2.1 形态(定义"干净的数据长什么样") │ ├──────────────┐ ▼ ▼ 2.2 开源路线 2.3 自造路线 (两条互斥可并行的取数路径) │ │ └──────┬───────┘ ▼ 统一的 messages JSONL ──► 3.1 的掩码构造直接按 role 分界

前置知识与后续延伸

前置知识:第 1 章验收过的基座与分词器(本章脚本只用到分词器做长度统计);基本的 pandas/datasets 操作。

为后续奠定基础:2.1 的 messages 结构是第 4 章 chat template 的输入协议——模板只做"序列化",字段语义在本章定死;2.3 的蒸馏管线是第 8 章中文改造的数据主产线;本章产出的 data_sft/train.jsonl 是第 3 章训练脚本的直接输入。


作者与出处
原作者: 灏天文库
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 灏天文库 转发
评论区 (0)
U