Hermes 的训练数据揭秘:OpenHermes 数据集是怎么做出来的

讲解 OpenHermes 数据集的构建方法和设计理念,包括合成数据的生成策略、质量控制、数据清洗流程,以及 Hermes 4 如何将训练样本扩展到 5000 万条。

目录

  1. OpenHermes 数据集:300K 条合成指令
    1. 为什么是合成数据
    2. 数据生成的具体流程
    3. 开源的意义
  2. 从 300K 到 5000 万:Hermes 4 的数据扩展
    1. 数据来源的多样化
    2. 数据清洗的工业化
    3. 合成数据的”陷阱”
  3. 数据作为护城河
  4. 未来的数据趋势

在大模型领域有句老话:”模型好不好,七分靠数据,三分靠算法。” 这话可能有点夸张,但数据的重要性确实怎么强调都不为过。

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 模型进化全记录

参与讨论

对这篇文章有疑问或想法?cocoloop 社区有不少开发者在讨论 Hermes 相关话题,欢迎加入交流。

前往 cocoloop 社区 →