2024年8月,Nous Research 发布了 Hermes 3,这是当时开源社区里最大胆的一步棋——直接对 Meta 的 Llama 3.1 405B 做全参数微调。要知道,405B 参数量的模型,光是推理就够呛了,居然还有人想把它完整训练一遍?
这篇文章就来好好聊聊,Hermes 3 的 405B 全参数微调背后到底做了哪些事情,以及为什么这件事对开源社区意义重大。
先搞清楚一个问题:为什么不用 LoRA?
做大模型微调,现在主流方案基本就两条路:全参数微调(Full Fine-tuning)和参数高效微调(PEFT),后者最常见的就是 LoRA。
LoRA 的好处很明显——省显存、训练快、部署方便。一个 7B 的模型用 LoRA 微调,一张消费级显卡就能跑。但问题在于,LoRA 本质上是在原始权重旁边挂了个”补丁”,它能调整的参数空间有限。当你的训练目标和原始模型的行为差距比较大时,LoRA 的表达能力就不够了。
Hermes 系列一直有个核心特点:它要改变模型的”人格”和”行为模式”。不光是让模型回答问题,还要让它遵循特定的系统提示格式、支持 ChatML格式 的多轮对话、在 function calling 场景下表现稳定。这些都是深层的行为变化,不是加个 LoRA adapter 就能搞定的。
Ryan Teknium 在技术报告里解释得比较直接:405B 的全参数微调,目标就是最大程度地释放基座模型的潜力,同时把 Hermes 的对齐理念(individual alignment)注入到每一层参数里去。
Lambda Cloud 提供的算力支持
训练一个 405B 的模型,算力需求是天文数字级别的。Nous Research 这次是和 Lambda Cloud 合作,使用了大规模 H100 集群来完成训练。
具体来说,405B 的全参数微调需要处理的参数量大约是 4050 亿个。即使用 BF16 精度,模型权重本身就占了约 810GB 的显存。加上梯度、优化器状态,训练峰值显存需求可以轻松超过 3TB。这意味着至少需要几十张 H100(每张 80GB 显存)做模型并行。
Lambda Cloud 在这个项目中提供的不仅是算力,还有分布式训练的基础设施支持。405B 的训练涉及到张量并行(Tensor Parallelism)、流水线并行(Pipeline Parallelism)等多种并行策略的组合使用,这对训练框架和网络拓扑都有很高的要求。
之前在 cocoloop 社区有人讨论过这个问题——为什么 Nous Research 选择 Lambda 而不是自己搭集群?答案很简单:灵活性。对于一个研究团队来说,按需租用 GPU 比长期维护硬件要经济得多,而且 Lambda 的 H100 集群在互联带宽上做了专门优化,特别适合大规模分布式训练场景。
训练数据和流程
Hermes 3 的训练数据延续了 Hermes 系列一贯的策略:大规模合成指令数据 + 精心策划的人类数据。
训练流程分为几个阶段:
第一阶段:监督微调(SFT)
这一步用的是经过筛选和清洗的指令数据集。数据来源包括 OpenHermes 数据集 的改进版本,加上针对 Hermes 3 新增的多轮对话数据、function calling 示例、以及各种角色扮演场景。
数据格式上,Hermes 3 全面采用 ChatML 作为对话模板。ChatML 的好处是结构清晰,对工具调用、系统提示的支持天然友好。这也是为什么 Hermes 系列在 agent 场景下表现一直不错的原因之一。
第二阶段:偏好优化
SFT 之后,Hermes 3 还做了偏好优化训练,具体使用的是 DPO(Direct Preference Optimization)方法。DPO 相比传统的 RLHF 流程更简洁,不需要单独训练 reward model,直接用偏好对比数据就能完成。
偏好优化的重点方向包括:减少不必要的拒绝回答(这个后来在 RefusalBench 上体现得很明显)、提升长文本生成的连贯性、以及改善多步推理的准确性。
第三阶段:安全对齐
Hermes 3 的安全对齐思路和主流商业模型有明显区别。它提倡的是”个体对齐”(Individual Alignment)——不是由模型开发者单方面决定模型该拒绝什么、该回答什么,而是把这个选择权更多地交给用户。
具体做法是通过系统提示(system prompt)来控制模型的行为边界。用户可以在系统提示中定义模型应该遵循的规则,模型则在这些规则的框架内尽可能地满足用户需求。
这个设计理念其实挺有争议的,cocoloop 社区里也讨论过好几轮。支持的人觉得这才是开源模型该有的样子——用户有完全的控制权;反对的人担心这会被滥用。但从技术角度看,Hermes 3 的做法确实让模型的可用性大幅提升了。
三个版本的差异:8B、70B 和 405B
Hermes 3 基于 Llama 3.1 发布了三个规模的版本:
8B 版本:最适合个人用户和小团队部署。在量化后可以在消费级硬件上流畅运行。它的优势在于速度快、成本低,但在复杂推理和长文本场景下会有明显短板。
70B 版本:平衡之选。在大多数任务上都能给出不错的表现,对硬件的要求也相对可控(2-4张 A100 或等效 GPU)。很多商业应用场景会选这个版本。
405B 版本:旗舰级。在几乎所有基准测试上都是开源模型中的最强水平。但部署成本也是最高的,推理时需要多机多卡协同。
有个经常被忽略的细节:这三个版本虽然基座都是 Llama 3.1,但训练数据和超参数是分别调过的。不是简单地用同一套数据训练三个不同大小的模型,而是根据每个规模的模型特点做了针对性的优化。
比如 8B 版本在训练时会更注重指令跟随的精确性,因为小模型本身容量有限,需要把有限的参数用在刀刃上。而 405B 版本则可以分配更多的训练预算在复杂推理和创造性任务上。
基准测试表现
Hermes 3 发布时给出了相当全面的基准测试数据。这里挑几个关键的说:
MMLU(多学科知识测试):405B 版本的表现接近 GPT-4 当时的水平。这个测试覆盖了从人文到理工的 57 个学科,能比较全面地反映模型的知识储备。
HumanEval(代码生成):在代码生成任务上,Hermes 3 的 pass@1 得分比原版 Llama 3.1 有显著提升。这说明微调过程中加入的代码相关数据确实起了作用。
MT-Bench(多轮对话评估):这个测试用 GPT-4 当裁判,评估模型在多轮对话中的表现。Hermes 3 在这项上得分很高,特别是在角色扮演和创意写作类别里,甚至超过了一些商业模型。
但也得说实话,Hermes 3 在数学推理上的表现不算特别突出。这也是后来 Hermes 4 重点改进的方向之一——引入混合推理模式,大幅提升数学和逻辑推理能力。
对开源社区的影响
Hermes 3 的 405B 版本是第一个公开发布的 Llama 3.1 405B 全参数微调模型。这个”第一”本身就够有分量了。
在此之前,社区对于超大模型的微调基本停留在 LoRA/QLoRA 的阶段。不是大家不想做全参数微调,是真做不起。Hermes 3 证明了一件事:只要有合适的算力合作伙伴,研究团队也能完成商业级别的大规模训练。
从下载量来看,Hermes 3 系列在 Hugging Face 上累积了数百万次下载。这个数字背后代表的是大量的个人开发者、创业公司和研究机构在实际使用这个模型。
Nous Research 通过 Hermes 3 也进一步巩固了自己在开源 LLM 社区的地位。从 2023 年的初代 Hermes 到 2024 年的 Hermes 3,Ryan Teknium 和他的团队一步步把 Hermes 做成了开源社区最受认可的微调模型品牌之一。截至目前,整个 Hermes 系列的下载量已经超过了 3300 万次。
几个值得关注的技术细节
ChatML 的全面采用:Hermes 3 彻底统一了 ChatML 作为对话模板。这让它在各种 agent 框架(比如 LangChain、AutoGen)里的接入变得很顺畅。
系统提示的深度支持:不同于很多模型对系统提示的”假装遵循”,Hermes 3 在训练时就把系统提示作为第一优先级来处理。你在系统提示里写的规则,模型会真的去执行。
多语言能力:虽然训练数据以英文为主,但由于 Llama 3.1 基座本身就有不错的多语言基础,Hermes 3 在中文、日文等语言上的表现也相当能打。
工具使用能力:延续了 Hermes 2 Pro 在 function calling 上的积累,Hermes 3 的工具调用能力在微调过程中得到了进一步强化。
写在最后
Hermes 3 405B 的全参数微调是一个标志性事件。它告诉整个社区:开源模型不只是”够用”,而是可以在顶级规模上和商业模型掰手腕。
当然,405B 的部署门槛确实很高,不是每个人都用得起。但 8B 和 70B 版本同样质量过硬,足以覆盖绝大多数使用场景。
如果你对 Hermes 系列的整体发展感兴趣,可以看看 Hermes 模型进化全记录,那里有从初代到最新版的完整时间线。而 Hermes 3 这次的 405B 全参数微调,无疑是这条进化线上最浓墨重彩的一笔。
延伸阅读:OpenClaw 社区资源
本文由 CocoLoop 中文社区出品。如果你在研究 AI Agent 与主流模型的工程化落地,姊妹站 OpenClaw 中文社区 也许会有帮助: