AI神功 KNOWLEDGE BASE
内功07 · 模型定制与算力量化·第 22 关 / 36 约 5 分钟

INNER 07 / MODEL / 02 · ENGINE v1

后训练数据集构建与对话模板映射(Scientist 3: Post-Training Datasets)

本关练习:将原始业务问答修正为标准 ShareGPT/ChatML 微调样本。

约 5 分钟·免费阅读·整理自 AI 现代必修课 · 内功07·来源精读 ↓·直接做题 ↓

30 SECONDS / 30 秒看懂

这一关只解决一件事:正如 mlabonne/llm-course 第 3‒4 章所言:“在微调中,数据质量永远比堆砌超参数重要十倍 (Always prioritize data quality over parameter optimization)。”新手做微调最常踩的两个致命大坑: 对话模板(Chat Template)错配与结束符(EOS Token)丢失:基座模型与指令模型遵循严格的特殊控制符格式(如 ChatML 的 <|im_start|>user...<|im_end|> 或 Llama 3 的 <|start_header_id|>... <|eot_id|>)。

  • 将该样本重构为包含 system、user、assistant 三角色的 ShareGPT/OpenAI 标准 JSON 数组格式(
  • 5 分);
  • 写出映射为 ChatML 模板后的完整纯文本字符串(必须显式包含 <|im_start|> 与 <|im_end|> 特殊标记) (

3 MINUTES / 3 分钟拆解

先看来源里的例子:PDF 本关任务(来源)

输入
你想把中医问诊记录转化为微调数据集,参照 LLM Fine-Tuning Hands-on Lab 的数据准备规范进行格式化与去重清洗。 待改造劣质样本:"问:最近总是失眠多梦、手脚心发热怎么办?答:这属于典型的阴虚火旺证,建议滋阴降火。"(直接按纯文本塞入训练器,无角色边界、无系统提示、无结束符。)

发生了什么

来源要求:将该样本重构为包含 system、user、assistant 三角色的 ShareGPT/OpenAI 标准 JSON 数组格式( / 5 分); / 写出映射为 ChatML 模板后的完整纯文本字符串(必须显式包含 <|im_start|> 与 <|im_end|> 特殊标记) (

输出

参考答案:参考答案:ShareGPT/ChatML 标准微调格式转换与清洗清单 // 1. 标准 ShareGPT / OpenAI Messages JSON 格式 { "messages": [ {"role": "system", "content": "你是一位严谨的中医辅助问诊助手,请根据患者描述的症状进行辨证分析并给出调理建议。"}, {"role": "user", "content": "最近总是失眠多梦、手脚心发热,舌红少苔,

术语拆开

ChatML
用特殊控制符标记对话角色的模板格式。
EOS
结束符;缺失会让模型不知道何时停止。
Completion-only Loss
只对 assistant 回复计算损失。

为什么有效

来源核心原理:正如 mlabonne/llm-course 第 3‒4 章所言:“在微调中,数据质量永远比堆砌超参数重要十倍 (Always prioritize data quality over parameter optimization)。”新手做微调最常踩的两个致命大坑: 对话模板(Chat Template)错配与结束符(EOS Token)丢失:基座模型与指令模型遵循严格的特殊控制符格式(如 ChatML 的 <|im_start|>user...<|im_end|> 或 Llama 3 的 <|start_header_id|>... <|eot_id|>)。如果在拼接训练样本时漏掉了助手回答末尾的 eos_token,微调后的模型在推理时永远不知道何时停下来,会一直自言自语直到填满最大长度! 未只对 Assistant 回复计算 Loss(Completion-only Loss Masking):如果把用戶提问(Instruction) 也算进交叉熵损失,模型会浪费算力去背诵用戶的问题,甚至学会模仿用戶的语气反问用戶。

结构长什么样

将该样本重构为包含 system、user、assistant 三角色的 ShareGPT/OpenAI 标准 JSON 数组格式(
5 分);
写出映射为 ChatML 模板后的完整纯文本字符串(必须显式包含 <|im_start|> 与 <|im_end|> 特殊标记) (
5 分);
列出将数据集送入 SFTTrainer 前必做的 3 项数据清洗检查(如近重复去重 MinHash、长度截断检查、 低质回复过滤)(
5 分)。 第二阶段:微调核心篇(第 3‒4 关)——LoRA/QLoRA 高效微调与训练曲线排障

如果漏掉 assistant 末尾的 EOS,推理时会发生什么?

SOURCE READING / 来源精读

正如 mlabonne/llm-course 第 3‒4 章所言:“在微调中,数据质量永远比堆砌超参数重要十倍 (Always prioritize data quality over parameter optimization)。”新手做微调最常踩的两个致命大坑: 对话模板(Chat Template)错配与结束符(EOS Token)丢失:基座模型与指令模型遵循严格的特殊控制符格式(如 ChatML 的 <|im_start|>user...<|im_end|> 或 Llama 3 的 <|start_header_id|>... <|eot_id|>)。

逐点读懂

  1. 将该样本重构为包含 system、user、assistant 三角色的 ShareGPT/OpenAI 标准 JSON 数组格式(
  2. 5 分);
  3. 写出映射为 ChatML 模板后的完整纯文本字符串(必须显式包含 <|im_start|> 与 <|im_end|> 特殊标记) (

怎么对应本关练习

先读 30 秒与 3 分钟拆解,再读本关原文与实验,最后做客观题和实操题;答案在下方。

例子在哪

本关任务与参考答案见页面下方;来源为本册 PDF 对应关卡。

本关先记住:将该样本重构为包含 system、user、assistant 三角色的 ShareGPT/OpenAI 标准 JSON 数组格式(

SOURCESPDF 第 2 关(用户提供)mlabonne/llm-course ↗

核心原理

正如 mlabonne/llm-course 第 3‒4 章所言:“在微调中,数据质量永远比堆砌超参数重要十倍 (Always prioritize data quality over parameter optimization)。

”新手做微调最常踩的两个致命大坑: 对话模板(Chat Template)错配与结束符(EOS Token)丢失:基座模型与指令模型遵循严格的特殊控制符格式(如 ChatML 的 <|im_start|>user...<|im_end|> 或 Llama 3 的 <|start_header_id|>... <|eot_id|>)。

如果在拼接训练样本时漏掉了助手回答末尾的 eos_token,微调后的模型在推理时永远不知道何时停下来,会一直自言自语直到填满最大长度!

未只对 Assistant 回复计算 Loss(Completion-only Loss Masking):如果把用戶提问(Instruction) 也算进交叉熵损失,模型会浪费算力去背诵用戶的问题,甚至学会模仿用戶的语气反问用戶。

第 2 关实操练习题:将原始业务问答修正为标准 ShareGPT/ChatML 微调样本

任务背景

你想把中医问诊记录转化为微调数据集,参照 LLM Fine-Tuning Hands-on Lab 的数据准备规范进行格式化与去重清洗。待改造劣质样本:"问:最近总是失眠多梦、手脚心发热怎么办?

答:这属于典型的阴虚火旺证,建议滋阴降火。"(直接按纯文本塞入训练器,无角色边界、无系统提示、无结束符。)

通关硬性要求(满分 12.5 分)

1. 将该样本重构为包含 system、user、assistant 三角色的 ShareGPT/OpenAI 标准 JSON 数组格式(

4.5 分);

2. 写出映射为 ChatML 模板后的完整纯文本字符串(必须显式包含 <|im_start|> 与 <|im_end|> 特殊标记) (

4.5 分);

3. 列出将数据集送入 SFTTrainer 前必做的 3 项数据清洗检查(如近重复去重 MinHash、长度截断检查、 低质回复过滤)(

3.5 分)。 第二阶段:微调核心篇(第 3‒4 关)——LoRA/QLoRA 高效微调与训练曲线排障

PRACTICE / 本关练习 · 本地规则 + 覆盖检查

将原始业务问答修正为标准 ShareGPT/ChatML 微调样本

本地检查在你的浏览器里完成,不上传。覆盖检查需要先登录(免费注册),并把这段答案发送到服务器计算一次,算完即弃、不存档,需你点同意;只核对本关评分项覆盖的方向,不在评分项里的题目不会被检查。

0 字未保存

评分项

评分项加载中…

结构分 — / 12.5 分

查看参考答案与得分点 先自己写,再打开+

参考答案与得分要点

参考答案:ShareGPT/ChatML 标准微调格式转换与清洗清单 // 1. 标准 ShareGPT / OpenAI Messages JSON 格式 { "messages": [ {"role": "system", "content": "你是一位严谨的中医辅助问诊助手,请根据患者描述的症状进行辨证分析并给出调理建议。"}, {"role": "user", "content": "最近总是失眠多梦、手脚心发热,舌红少苔,请问是怎么回事?"}, {"role": "assistant", "content": "根据您描述的失眠多梦、五心烦热及舌红少苔症状,中医辨证属于典型的【阴虚火旺证】。调理原则应以滋阴降火、养心安神为主。"} ] } // 2. 映射为 ChatML 模板后的底层训练文本(注意末尾必须包含 <|im_end|> 结束符!) <|im_start|>system 你是一位严谨的中医辅助问诊助手,请根据患者描述的症状进行辨证分析并给出调理建议。<|im_end|> <|im_start|>user 最近总是失眠多梦、手脚心发热,舌红少苔,请问是怎么回事?<|im_end|> <|im_start|>assistant 根据您描述的失眠多梦、五心烦热及舌红少苔症状,中医辨证属于典型的【阴虚火旺证】。调理原则应以滋阴降火、养心安神为主。<|im_end|> 数据清洗三步检查清单:1 使用 MinHash 或语义嵌入剔除相似度 > 0.95 的近重复样本;2 过滤超出 max_seq_length 的截断残缺样本与包含 “ 抱歉我无法回答 ” 的拒答废样本 ; 3 开启 DataCollatorForCompletionOnlyLM,将 User 与 System 部分的标签设为 -100,仅对 Assistant 输出计算 Loss。 得分要点拆解:规范构建三角色 JSON 结构(4.5 分);准确写出含 `<|im_start|>` 与 `<|im_end|>` 的 ChatML 展开文本(4.5 分);涵盖去重、截断过滤与 Completion-only Loss Masking(3.5 分)。 第 3 关

网页永久免费。完整 PDF 会按顺序发给留邮箱的读者,不转售、不群发广告。

留邮箱,获取完整 PDF ↗
← 上一关 下一关 →