你以为「给模型喂一堆对话」它就会聊天了——真正让 MOSS 学会对话的,是 SFT 这步,而不是预训练
很多刚接触大模型训练的人会把「预训练」和「微调」混为一谈:以为模型之所以能聊天,是因为它在预训练阶段读了足够多的网页。事实是,预训练只让模型「有知识和语言」,真正教它「按人类指令好好回答」的,是监督微调(SFT,Supervised Fine-Tuning)这一段。MOSS-SFT 就是复旦 OpenMOSS 开源出来的、用于这一步的指令数据集合。
一句话认识它:MOSS-SFT 是 OpenMOSS 项目开源的监督微调指令数据集[1],核心内容是大量「指令—回答」配对样本,用来把预训练好的基座模型从「会续写」教成「会对话、会遵循格式」[2]。它解决的是「对话能力」,不是「知识量」,也不是「语气讨喜」。
先说最反直觉的一点:SFT 不负责「知识」,只负责「样子」
一个常见误解是「模型在 SFT 阶段学到了新东西」。其实 SFT 阶段的数据量,相比预训练那 TB 级语料只是零头。它真正做的,是用高质量「指令—回答」样本,把模型已经具备的能力对齐成人期望的对话形态:该用什么格式回答、什么时候列清单、怎么拒绝不合理请求。下面把三段训练各自管什么拆开讲。
新手最容易搞混的三件事
- 以为 SFT 能补知识:基座没见过的领域事实,SFT 几句样本补不上,知识在预训练。
- 以为数据越多越好:SFT 过载会让模型变「套话」,泛化下降,质量比数量关键。
- 以为有 SFT 就够自然:语气、安全、拒答边界通常还要 RLHF 再打磨一轮。
把三段关系理顺的三句话
- 预训练给底座:从海量无标注文本学语言与常识,模型「有货但不会聊」。
- SFT 给形态:用指令样本教「怎么答」,模型从续写变成对话。
- RLHF 给分寸:用人类偏好让回答更顺人意、更稳边界,语气更自然。
务必说明:下文描述的是训练阶段的通行分工与 MOSS-SFT 的公开定位,具体数据规模、字段格式与许可证以 OpenMOSS 仓库 https://github.com/OpenMOSS/MOSS-SFT 的实时说明为准;科研数据集常有使用范围限制,商用前请先核对许可。
三阶段对照:预训练、SFT、RLHF 各管一摊
把「一个能聊天的中文模型是怎么炼出来的」拆开,背后是三段相对独立、前后衔接的训练。理解每一段,你才知道 MOSS-SFT 到底落在哪一格。
① 预训练 Pretrain
目标:从网页、书籍、代码等无标注语料学语言与常识。数据量 TB 级、数千亿 token。结果:基座「有知识但不会聊天」,只会续写。MOSS 的基座通常来自开源权重,这一步不是 MOSS-SFT 的重点。
② 监督微调 SFT
目标:用「指令—回答」配对样本教模型按格式对话。数据量万到百万级对话对。结果:模型从续写变成能正常问答、遵循指令。MOSS-SFT 就处在这一段,是本文主角。
③ 人类反馈 RLHF
目标:用人类对回答的偏好排序,让输出更合人意、更安全。数据量较小但标注贵。结果:语气更自然、拒答更稳。通常接在 SFT 之后,MOSS 多沿用既有对齐流程。
MOSS-SFT 数据长什么样:四类样本撑起「对话能力」
SFT 数据不是单一形态,MOSS-SFT 公开样本大致可归为四类。它们共同把「会续写」的基座,校准成「会按指令回答」的对话模型。
① 真实多轮对话
由标注或模型生成的多轮问答,覆盖闲聊、知识、任务执行等类型,让模型学会承接上下文、而不是一句答完就断。
② 结构化指令
翻译、摘要、改写、代码等任务,配对标准输出,强化「看到指令就走格式」的遵循能力。
③ 插件调用样本
搜索、计算等工具调用的示例,训练模型判断「何时该触发外部能力」而非硬编答案,提升可靠性。
④ 中英混合与清洗
中文占比高,缓解纯英文 SFT 带来的中文不顺;再去重清洗,降低噪声对对齐的干扰。
一套可照抄的流程:SFT 数据怎么从零造出来
如果你也想给自己的基座做一轮中文对齐,下面四步是可复用的通用链路。MOSS-SFT 的公开做法也基本落在这四步里。
- 定任务覆盖:先列出你希望模型会做的任务清单(问答、摘要、翻译、代码、拒答等),保证样本覆盖度,避免偏科。
- 造指令-回答对:用人工标注、强模型合成或二者混合,产出「指令 + 标准回答」配对;关键回答要高质量、格式一致。
- 去重与质检:剔除低质、重复、矛盾的样本,对长回答做事实核对,必要时人工抽检,保住数据底座的干净。
- 训练与回看:在基座上跑 SFT,用留出集评估格式遵循与泛化;过载就减量或加权,直到对话能力达标再进 RLHF。
质量还是数量:SFT 数据怎么选最划算
重质量更适合谁
- 垂直小模型:参数不大时,几万条精标样本比百万条噪声更能拉开差距。
- 强格式任务:摘要、抽取、代码这类要稳定输出结构的,样本准比多重要。
- 资源有限团队:人工贵,把钱花在刀刃上,精标覆盖核心场景最划算。
盲目堆数量的风险
- 过拟合套话:重复样本太多,模型学会背模板而非理解指令,泛化变差。
- 噪声放大:合成数据若不经质检,错误会被 SFT 固化进模型行为。
- 成本虚高:为凑量做低质标注,训练与存储都浪费,边际收益递减。
三个最容易踩的坑:SFT 数据就是这么废的
把预训练当 SFT 用。直接拿网页续写语料去微调,模型仍不会对话;SFT 必须是「指令—回答」结构,而非无序文本。
忽视中文占比。中文 SFT 对稀缺,纯英文样本训出的模型中文发「洋腔」、格式别扭;MOSS-SFT 刻意拉高中文覆盖。
忘了许可证边界。科研数据集常限研究用途,直接商用可能踩合规红线;上线前先核对 OpenMOSS 的授权范围。
常见问答
SFT 和预训练到底哪个更重要?
都不可少:预训练给知识底座,SFT 给对话能力,缺一个都不会「好用」。预训练决定模型知道什么,SFT 决定它怎么把知道的说给你听。
MOSS-SFT 能直接拿来训我自己的模型吗?
可以当起点,但需匹配你的基座与任务分布;更要看许可证,科研数据常限研究用途,商用前请先核对 OpenMOSS 授权。
SFT 数据量多大合适?
取决于基座与目标,几万到百万级都常见。垂直小模型几万精标往往够用,关键是任务覆盖度与答案质量,而非单纯堆量。
为什么 SFT 里要有插件调用样本?
教模型识别「该调工具」的时机,而不是每次都硬编答案。这能显著提升复杂任务下的可靠性,是 MOSS 早期插件探索的一部分。
SFT 之后还要做 RLHF 吗?
想要更自然的语气、更稳的安全边界通常加一轮 RLHF,但成本更高、标注更贵。很多开源模型用 SFT 就达到可用,RLHF 是锦上添花。
中文 SFT 最难的点是什么?
高质量中文「指令—回答」对稀缺,且易带洋腔与幻觉。MOSS-SFT 的做法是拉高中文占比、做合成与清洗兼顾,再用人工抽检兜底。
参考资料
- 来源:OpenMOSS 开源 MOSS-SFT 指令微调数据集仓库(样本格式、规模与许可证说明):https://github.com/OpenMOSS/MOSS-SFT
- 来源:OpenMOSS 项目主页(MOSS 模型、基座与训练链路总览):https://github.com/OpenMOSS/MOSS
- 来源:MOSS 项目演示页(能力定位与中文对话示例):https://moss.fastnlp.top
- 来源:监督微调(SFT)与大模型对齐的通行方法综述(以各家公开技术报告为准):https://arxiv.org
- 来源:HuggingFace 数据集社区(同类中文指令数据集的字段范式参考):https://huggingface.co
- 来源:大模型训练阶段划分——预训练 / SFT / RLHF 的通用分工(以官方文档与论文为准):https://en.wikipedia.org/wiki/Instruction_tuning
青衣网络 AI 观察团队 · 最后更新 2026-08-25 | 本文基于 OpenMOSS 公开的 MOSS-SFT 信息与业界通行训练范式整理,旨在帮助读者理解监督微调在模型训练链路中的角色;具体数据规模、字段格式与许可证随时可能调整,实际研究或接入请以仓库最新说明为准。