大模型学习笔记 · 第四篇 · 准备数据与对话模板
2026/7/1 14:27:17 网站建设 项目流程

微调效果好不好,多半先看数据。入门用 Alpaca 格式的 JSON 最省事:instruction 是问题,output 是你希望模型学会的回答。数据文件放进 data 目录,在 dataset_info.json 里注册名字,yaml 里写 dataset 引用即可。对话模板 template 必须和基座模型匹配,训练和推理要用同一个,否则效果会断崖式变差。模型主要学的是回答部分,output 写什么样,模型就学成什么样。


一、数据从哪来,比数据长什么样更重要

真实项目里的训练数据,往往来自业务现场:客服系统导出的历史对话,内部 FAQ 和知识库整理成的问答对,运营或专家人工标注的「标准问—标准答」,Excel 清洗后转成的 JSON,或者用 Easy Dataset、DataFlow 等工具半自动生成再人工抽检。

无论来源如何,有一条原则始终成立:质量比数量重要。五百条准确、风格统一、业务无误的问答,常常比五千条杂乱、矛盾、过时的样本更有用。微调不是把数据堆进模型里碰运气,而是在用样本塑造模型的行为边界。


二、Alpaca 格式:入门最该掌握的一种写法

每条数据由三个核心字段组成。instruction 是用户的问题或指令。input 是补充信息,没有可以留空字符串。output 是你希望模型学会的回答,这是整个样本里最关键的部分。

如果有多轮对话,可以加 history 字段,用「上一轮问题、上一轮回答」这样的二元组列表表示上下文。项目自带的 data/identity.json 是极好的小样本:它教模型「你是谁、谁开发的、怎么自我介绍」,条数不多,但非常适合第一次验证流程。

ShareGPT 格式适合更复杂的多轮对话和工具调用场景,结构是 conversations 消息列表。入门阶段先用 Alpaca 就够,等确实要做 Agent、function call,再读 data/README_zh.md 里 ShareGPT 的说明。


三、让框架认识你的数据,三步完成

第一步,把 JSON 文件放进 data 目录,比如 data/my_customer_service.json。

第二步,打开 data/dataset_info.json,增加一段注册信息,告诉框架文件名和字段映射关系。名称自取,比如 my_cs,file_name 指向你的文件,columns 里说明 instruction、input、output 分别对应 prompt、query、response。

第三步,在训练 yaml 里写 dataset: my_cs。如果有多个数据集,用逗号连接,比如 dataset: identity,my_cs,框架会把它们按配置合并使用。

练手阶段,建议先用内置 demo:dataset: identity,alpaca_zh_demo,再配合 max_samples: 500 限制条数,快速跑通。流程没问题之后,再换成自己的几千条业务数据。


四、对话模板:很多人忽略、但极关键的细节

不同模型的「说话格式」并不相同。同样一句「你好」,在 Qwen、LLaMA、ChatGLM 里,拼进模型的完整文本格式是不一样的。Template 的作用,就是把「用户说了什么、助手该回什么」包装成该模型认得的格式。

yaml 里的 template: qwen3_nothink 必须和基座模型匹配。README 里的模型表有 Template 列,照抄即可,不要凭感觉猜。

Qwen 模型用了 llama3 模板,轻则回答怪异,重则乱码复读。更隐蔽的一种错误是:训练用一种 template,推理换成另一种,试聊效果会突然变差,让人误以为是训练失败。记住一条铁律:训练用什么 template,推理就必须用什么 template。


五、模型到底在学哪一部分

监督微调时,用户问题部分通常不算 loss,模型不需要背问题;助手回答部分才算 loss,模型重点学这里。这意味着,output 字段里写的每一个字,都是在给模型立规矩:语气正式还是活泼,回答简短还是详尽,是否用礼貌用语,是否带必要免责声明。

如果你希望模型简短回答,训练数据里的 output 就要简短一致。如果样本里有的回答长篇大论、有的回答一句话,模型学到的也会摇摆不定。数据即产品规范,这句话在微调里非常 literal。


六、上线前,值得花半小时做数据自检

逐条抽检问答是否准确,有没有过时或错误的业务信息。看风格是否统一,正式和口语混用会让模型不知道听谁的。适当去重,大量重复样本会让模型只会复读。敏感信息要脱敏,手机号、工号、内部 ID 不应原样进入训练集。确认 instruction 和 output 成对出现,没有空 output。最后再次核对 template 是否与模型匹配。

偏好对齐所需的数据格式不同,需要「好回答 vs 差回答」成对出现,并在 dataset_info.json 里设 ranking: true。只做 SFT 的阶段,可以先完全不管这件事。


七、带走一个实用结论

数据放在 data 目录,注册在 dataset_info.json,引用在 yaml 的 dataset 字段。格式拿不准,对照 data/README_zh.md 和官方 demo 文件。效果怪,先查 template 是否配对,再查 output 是否真正代表了你想要的回答方式。


需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询