作者语:
如果把大模型比作一位天赋异禀的全能运动员,那预训练就是他的体能、柔韧性和基础技能训练。
而微调,就是为他量身定制的“专项训练计划”——让他从“通才”变成“百米飞人”或“跳高冠军”。
但再优秀的教练,如果训练计划错了——让短跑选手天天练游泳,
那运动员的天赋再高,也拿不到金牌。
今天这篇,咱们就来聊聊:怎么制定一份科学的“训练计划”——数据集。
一、为什么训练计划决定成绩?
想象你是一位短跑教练,要带一个天赋异禀的新人。
你有一套顶级的训练设施(模型),有最先进的训练方法(算法),但如果你的训练计划是:
- 每天练100公斤深蹲
- 每周只跑一次短距离
那这位选手能跑进10秒吗?大概率会变成“举重冠军”而不是“短跑冠军”。
在AI世界里,数据集就是你的训练计划。
你教什么,模型就学什么。
教得好,模型技能全面;教得差,模型“偏科”甚至“学歪了”。
🔍 专业术语解释:过拟合(Overfitting)
想象你让运动员死记硬背了100个起跑姿势,考试时刚好考这100种,他全对。
但换一种起跑方式,他就手足无措。
这就是“过拟合”——模型只记住了训练内容的“套路”,没学会“灵活应变”。
结果:在训练数据上表现好,遇到新问题就“翻车”。
二、训练计划长啥样?常见格式一览
训练计划不是一堆杂乱的动作,而是结构化的“任务+答案”,就像教练设计的课程表:
- 训练目标(Instruction)
- 任务内容(Input)
- 标准答案(Output)
下面介绍几种最常见的训练计划格式:
1. Alpaca 格式(最流行)
这是斯坦福大学提出的一种简单清晰的格式,适合大多数微调任务。
{
"instruction": "解释什么是光合作用",
"input": "",
"output": "光合作用是植物利用阳光、二氧化碳和水,制造氧气和葡萄糖的过程……"
}
- instruction:训练目标,比如“写一篇作文”、“翻译这句话”。
- input:任务内容,比如要翻译的原文。
- output:标准答案,教练希望运动员达到的效果。
✅ 优点:结构清晰,通用性强,适合大多数场景。
📚 参考链接:Stanford Alpaca
2. ShareGPT 格式(对话式训练)
如果你要训练一个智能客服,比如微信客服,那要用对话式训练。
[
{
"from": "human",
"value": "你好,今天天气怎么样?"
},
{
"from": "gpt",
"value": "你好!我无法获取实时天气,但你可以查一下天气预报哦~"
},
{
"from": "human",
"value": "帮我写个生日祝福"
},
{
"from": "gpt",
"value": "祝你生日快乐!愿你每天都开心,心想事成!"
}
]
这是一个完整的对话轮次(turn),像教练模拟真实客服场景。
human 是用户提问,gpt 是标准答案。
✅ 优点:适合多轮对话训练,模拟真实交互。
⚠️ 注意:数据通常来自网页爬取(如ShareGPT网站),需注意隐私和版权。
3. Dolly 格式(企业级训练)
由Databricks公司发布,强调任务多样性,结构类似Alpaca:
{
"instruction": "总结以下新闻:……",
"context": "2023年全球AI市场规模达到……",
"response": "该新闻指出,AI市场正在快速增长……"
}
- 多了一个 context 字段,用于提供背景信息。
📚 参考:Dolly Dataset
三、模型“听懂指令”的秘密:训练模板(Prompt Template)
你以为把训练计划喂进去,模型就能执行?
错!模型就像运动员,得用它“听得懂的语言”来交流。
不同模型家族有自己的“训练模板”(Prompt Template),就像不同运动员的训练术语:
1. LLaMA / LLaMA2 / LLaMA3 系列(Meta 出品)
这类模型喜欢用特殊的分隔符来区分角色:
<s>[INST] 你好,介绍一下你自己 [/INST]
我是Qwen,由阿里云研发的超大规模语言模型……</s>
<s> 表示训练开始
[INST] 和 [/INST] 包裹训练目标
AI的回答在后面,用 </s> 结束
🛠️ 微调时,你要把Alpaca数据转换成这种格式,模型才能“听懂”。
2. Mistral 系列(Mistral AI 出品)
Mistral 模型使用 <|start_of_turn|> 和 <|end_of_turn|> 来标记角色:
<|start_of_turn|>user
你好,帮我写个Python代码
<|start_of_turn|>assistant
<think>
好的,你想实现什么功能?
</think>
<|start_of_turn|>表示一个新角色的发言开始user是用户提问,assistant是模型回答- 每次发言都要用
<|start_of_turn|>开头
📚 参考:Mistral AI 官方文档
3. ChatGLM / GLM 系列(智谱AI)
使用 [gMASK] 和 sop 等特殊token:
[gMASK]sop
问:你好
答:你好,我是GLM模型。
- gMASK 是模型识别的特殊标记
- sop 表示对话开始
📚 参考:ChatGLM GitHub
四、数据集避坑指南:5大常见错误
❌ 坑1:训练内容太杂,模型“精神分裂”
比如你又教写诗,又教写代码,还教客服对话……
模型会混乱:“我到底该当诗人、程序员还是客服?”
✅ 建议:一次微调只专注一个任务,比如“只训练写代码”。
❌ 坑2:数据太少,模型“营养不良”
10条数据就想训练出一个专业模型?不可能。
模型就像小孩,得“反复教育”才能学会。
✅ 建议:至少准备 500~1000条 高质量数据。
数据少?可以用数据增强(Data Augmentation)生成更多变体。
❌ 坑3:格式不统一,模型“看不懂”
你一会儿用Alpaca格式,一会儿用ShareGPT,还不加模板……
模型:我裂开了。
✅ 建议:统一格式 + 使用正确的Prompt Template。
❌ 坑4:答案太长或太短,模型“学偏了”
答案太长:模型容易“啰嗦”,抓不住重点。
答案太短:模型“敷衍了事”,比如总是回答“好的”。
✅ 建议:答案长度适中,保持一致性。可以加长度限制。
❌ 坑5:数据有错误,模型“以讹传讹”
如果你的数据里有错别字、错误知识、逻辑混乱……
模型会把这些当成“正确答案”学下去。
✅ 建议:人工清洗数据,去重、纠错、标准化。
五、如何准备你的“训练计划”?3步走
- 1、明确目标
- 你想让模型干什么?写周报?写SQL?当客服?先定好“职业方向”。
- 2、收集/生成数据
- 自己写:人工编写高质量问答对(最推荐)
- 爬取数据:如论坛、客服记录(注意隐私)
- 使用开源数据集:Alpaca、Dolly、OpenAssistant等
- 3、格式转换 + 模板注入
把原始数据转换成目标模型能理解的格式,比如:
# Alpaca 数据
instruction: 写一首关于春天的诗
output: 春风吹绿江南岸,柳絮飘飞花自开……
# 转成 Mistral 格式
<|start_of_turn|>user
写一首关于春天的诗
<|start_of_turn|>assistant
<think>
春风吹绿江南岸,柳絮飘飞花自开……
六、推荐工具 & 开源数据集
| 工具/数据集 | 用途 | 链接 |
|---|---|---|
| Alpaca Data | 高质量指令数据 | GitHub - alpaca_data |
| OpenAssistant | 多语言对话数据 | OpenAssistant.io |
| Hugging Face Datasets | 海量开源数据集 | huggingface.co/datasets |
| easy-dataset | 一键转换数据格式 | GitHub - easy-dataset |
结语:好模型,从好数据开始
微调就像养运动员,模型是选手,数据是训练计划。
再好的选手,吃垃圾训练计划也飞不高。
再普通的选手,吃优质训练计划也能展翅高飞。
下期预告
第三篇:显卡算力精算师:你的电脑会不会"爆仓"
——聊聊显存、参数、batch size这些“烧钱”指标,怎么省钱又高效地训练。
评论区