在大模型领域有句老话:”模型好不好,七分靠数据,三分靠算法。” 这话可能有点夸张,但数据的重要性确实怎么强调都不为过。
Hermes 系列能从一众微调模型中脱颖而出,训练数据的质量是最关键的因素之一。今天就来聊聊 Hermes 背后的数据工程——从最早的 OpenHermes 数据集到 Hermes 4 的 5000 万样本,这些数据到底是怎么做出来的。
OpenHermes 数据集:300K 条合成指令
OpenHermes 是 Ryan Teknium 在 2023 年发布的开源数据集,包含超过 300,000 条合成指令数据。这个数据集不仅是 Hermes 系列的训练基础,也成为了开源社区最被广泛使用的指令微调数据集之一。
为什么是合成数据
首先解释一下为什么要用合成数据。
指令微调(Instruction Tuning)需要大量的”用户指令→模型回答”配对数据。获取这类数据有两种主要途径:
人工标注:雇人写指令和对应的高质量回答。优点是质量可控,缺点是成本极高、速度慢。OpenAI 在 InstructGPT 论文中披露的标注成本是每条数据几美元到几十美元不等。30 万条数据按这个价格算,成本在百万美元级别。
合成生成:用已有的强模型(比如 GPT-4)来生成训练数据。优点是成本低、速度快、可以大规模生产。缺点是可能引入源模型的偏差,以及存在”模型训模型”的质量衰减问题。
对于 Nous Research 这样的独立研究团队来说,百万美元级别的人工标注预算不现实。合成数据是唯一可行的大规模数据获取方式。
但合成数据不是随便生成就能用的。Ryan 在 OpenHermes 的构建上花了大量精力来确保质量。
数据生成的具体流程
OpenHermes 数据集的生成流程大致分为这么几步:
第一步:多样化的种子指令设计
合成数据最怕的就是”同质化”——如果种子指令的模式单一,生成出来的数据也会千篇一律。模型用这样的数据训练后,只会在某些特定模式上表现好,一遇到没见过的指令类型就傻眼。
Ryan 的做法是设计了几十个不同类别的种子指令模板,覆盖:
- 开放式问答(”解释量子纠缠的原理”)
- 创意写作(”写一个关于时间旅行的短故事”)
- 代码生成(”用 Python 实现一个链表”)
- 数据分析(”分析这组销售数据的趋势”)
- 角色扮演(”假设你是一个中世纪骑士,描述你的一天”)
- 多步推理(”如果所有鸟都会飞,企鹅是鸟,那企鹅会飞吗?解释你的推理过程”)
- 格式化输出(”把以下信息整理成一个 Markdown 表格”)
每个类别下又有多个变体,确保足够的多样性。
第二步:使用 GPT-4 生成回答
种子指令设计好后,用 GPT-4(以及其他强模型)来生成对应的高质量回答。这一步的关键在于提示工程——通过精心设计的系统提示来控制生成回答的风格、深度和格式。
比如,对于技术类问题,系统提示会要求模型给出详细的技术解释、必要的代码示例、以及潜在的注意事项。对于创意写作,则要求有完整的叙事结构、生动的描写和合理的情节发展。
第三步:质量过滤
不是 GPT-4 生成的每条回答都能用。质量过滤是整个流程中最关键的一步。
过滤的维度包括:
- 完整性检查:回答是否完整,有没有截断
- 格式检查:如果指令要求特定格式(JSON、表格、列表),回答是否符合
- 一致性检查:回答和指令是否对应,有没有”答非所问”
- 去重:剔除语义高度相似的样本
- 毒性过滤:排除含有有害内容的样本(但不是简单的关键词过滤,而是语义级别的)
这个过滤过程淘汰了相当比例的生成数据,最终留下来的 300K+ 条都是质量较高的样本。
第四步:人工抽检
在自动化过滤之后,Ryan 和团队还做了人工抽检——随机抽取一定比例的样本进行人工审核。这不是为了审核每一条数据(那不现实),而是为了发现自动化过滤中可能遗漏的系统性问题。
比如,如果某一类指令的生成质量系统性地偏低,人工抽检可以发现这个趋势,然后针对性地调整该类别的生成策略。
开源的意义
Ryan 选择把 OpenHermes 数据集完全开源,这个决定的影响超出了 Hermes 本身。
开源意味着:
- 其他研究者可以用这个数据集来训练自己的模型
- 社区可以分析数据集的构成,发现问题并提出改进建议
- 成为了合成数据研究的一个重要参考基准
事实上,OpenHermes 数据集后来被几十个其他开源项目引用和使用。在 Hugging Face 上,它是下载量最高的指令微调数据集之一。
cocoloop 社区里也有人基于 OpenHermes 做了自己的实验——比如过滤掉其中的中文样本重新训练,或者补充特定领域(法律、医学)的数据来做垂直场景的微调。这种社区驱动的二次创新,正是开源的价值所在。
从 300K 到 5000 万:Hermes 4 的数据扩展
如果说 OpenHermes 的 300K 样本是”精品小店”,那 Hermes 4 的 5000 万样本就是”工业化量产”。这中间的跨度不只是数量上的——整个数据工程体系都做了重大升级。
数据来源的多样化
5000 万样本不可能全靠一种方式生成。Hermes 4 的训练数据来自多个渠道:
扩展的合成指令数据:在 OpenHermes 的基础上,进一步扩大了指令模板的覆盖面和多样性。使用了多个不同的强模型(不只是 GPT-4)来生成回答,降低了对单一源模型的依赖。
推理链数据:Hermes 4 的一大特色是 混合推理能力。为了训练这个能力,需要大量的”思考过程→最终答案”格式的数据。这类数据的生成更复杂——不光要生成正确的答案,还要生成合理的推理过程。
具体做法是:给强模型一个问题,要求它在 <think> 标签中展示完整的推理过程,然后在标签外给出最终答案。生成后需要验证推理链的逻辑一致性和最终答案的正确性。数学题可以通过程序验证答案,但推理链的质量检查更多依赖于规则化的启发式方法。
Function Calling 数据:延续了 Hermes 2 Pro 的工作,但数据量和覆盖面大幅扩展。包括更多种类的工具定义、更复杂的多步调用链、以及更多的错误处理场景。
多轮对话数据:真实的用户交互很少是单轮的。Hermes 4 的训练数据中包含大量的多轮对话样本,让模型学会在长对话中保持上下文一致性。
代码数据:大量的代码生成、代码解释、代码 debug 数据。来源包括合成生成和从开源代码库中提取的代码片段及其文档。
数据清洗的工业化
300K 数据的清洗可以半手动地完成,5000 万数据就必须要有一套成熟的自动化管线了。
Hermes 4 的数据清洗管线包括:
去重管线:使用 MinHash + LSH(局部敏感哈希)算法来检测和去除语义重复的样本。不是简单的字符串匹配,而是在嵌入空间(embedding space)中计算相似度。
质量评分模型:训练了一个专门的质量评分模型(本身也是一个小型 LLM),对每条样本打分。分数低于阈值的直接丢弃。这个评分模型会考虑回答的完整性、准确性、格式规范性等多个维度。
毒性检测:使用多个毒性检测模型做交叉验证。只有所有检测模型都通过的样本才会保留。
领域平衡:确保不同领域的数据量大致平衡,避免模型在某些领域过度训练而忽略其他领域。这需要统计各领域的样本分布,然后做上采样或下采样。
格式标准化:所有数据统一转换为 ChatML 格式,确保对话模板的一致性。不同来源的数据可能有不同的格式约定,这一步把它们全部统一。
合成数据的”陷阱”
大规模使用合成数据也有一些需要警惕的问题,Hermes 团队在实践中也遇到过:
模式坍缩(Mode Collapse):当大量数据都来自同一个源模型时,生成的数据可能过度集中在某些表达模式上。Hermes 4 通过使用多个不同的源模型来缓解这个问题。
错误放大:如果源模型在某个知识点上有错误,合成出来的数据也会包含这个错误。训练后的模型就会”学到”这个错误。对于事实性知识,需要额外的验证步骤。
分布偏移:合成数据的分布和真实用户请求的分布可能不一致。用户的真实请求往往更零散、更口语化、更不规范。如果模型只见过”完美”的合成指令,遇到真实用户的”不完美”输入时可能表现不佳。
为了缓解分布偏移,Hermes 4 的训练数据中也掺入了一些从真实用户交互中收集的数据(经过脱敏处理)。这些数据的质量可能不如合成数据那么”干净”,但它们更接近真实的使用场景。
数据作为护城河
在开源模型领域,架构和训练代码大家都可以复制,真正难复制的是高质量的训练数据。
Nous Research 通过多年积累建立起来的数据工程体系——从数据设计、生成、清洗到质量验证的整套管线——是 Hermes 系列的核心竞争力之一。即使他们开源了 OpenHermes 数据集,这套不断迭代的数据管线本身仍然是一个很大的技术壁垒。
从社区的角度看,OpenHermes 的开源已经极大地推动了指令微调领域的研究。而 Hermes 4 的 5000 万样本级别的数据集,虽然没有完全开源,但它的存在本身就证明了:独立研究团队在数据工程上是可以和大公司掰手腕的。
未来的数据趋势
从 Hermes 的数据演进中,可以看到几个明确的趋势:
合成数据将越来越重要:人工标注的成本天花板决定了,大规模训练数据的主要来源只能是合成。关键在于如何提升合成数据的质量和多样性。
推理链数据是新刚需:随着模型推理能力成为竞争焦点,高质量的推理过程数据(而不只是问答对)会越来越稀缺和珍贵。
数据质量 > 数据数量:5000 万样本不是终点,但盲目追求数量没有意义。一条高质量的推理链数据可能比一百条低质量的指令数据更有价值。
多模态数据的加入:虽然目前 Hermes 还是纯文本模型,但多模态训练数据(图文配对、视频描述等)的加入只是时间问题。
如果你想了解 Hermes 各版本的整体进化脉络,包括数据之外的架构和训练方法变化,可以查看 Hermes 模型进化全记录。