INTELLECT-2: A Reasoning Model Trained Through Globally Decentralized Reinforcement Learning
1. 引言
文章介绍INTELLECT-2,这是一个拥有320亿参数的语言模型,通过全球分布式强化学习进行训练。与传统的集中式训练不同,INTELLECT-2采用完全异步的强化学习方式,在一个动态、异构的无许可计算节点群中进行训练。为此,研究团队从零开始构建了多个组件,包括PRIME-RL训练框架、SHARDCAST策略和TOPLOC验证器。这些组件使模型能够在独特的基础设施上进行训练,并成功学习训练目标,超越了320亿参数范围内最先进的推理模型QwQ-32B。研究团队开源了INTELLECT-2模型及其代码和数据,旨在鼓励和促进去中心化训练领域的研究。
2. 训练基础设施
文章详细介绍了训练INTELLECT-2所需的基础设施组件,包括PRIME-RL框架、SHARDCAST库和TOPLOC验证方案。
2.1 PRIME-RL:分布式异步强化学习框架
PRIME-RL是一个专为去中心化训练设计的异步强化学习框架。它将训练和推理组件完全分离为不同的可执行文件,仅在数据和检查点交换时进行通信。这种分离消除了对集中式协调器的需求,并有效隐藏了数据传输通常相关的延迟,创建了高效的分布式强化学习管道。
训练
在训练过程中,使用PyTorch FSDP将模型权重、梯度和优化器状态分片到多个GPU上,以减少GPU内存需求。训练数据从远程存储加载,推理工作者和训练器之间的rollout数据使用Parquet文件交换。
推理
为了生成rollout,使用vLLM加载模型,并在bfloat16精度下运行。每个批次的输入问题使用确定性种子随机采样,以防止推理工作者选择简单的样本。为了支持TOPLOC证明构建,在logits处理器中添加钩子以捕获最终隐藏状态。这些优化将证明生成的开销限制在仅降低约1%的每秒处理令牌数。
验证器
PRIME-RL使用GENESYS模式,便于实现新的奖励环境。在初始实验中,支持数学的符号验证器和基于单元测试执行的Python编码竞赛问题验证器。
2.2 SHARDCAST:高效的策略权重广播
SHARDCAST是一个通过HTTP基础树状网络分发大文件的库,能够将更新的模型权重高效地传播到去中心化的推理工作者。该网络使用中继服务器将检查点从主训练服务器分发到客户端推理工作者,类似于内容分发网络(CDN)。
速率限制与防火墙
使用nginx作为HTTP服务器,并配置每个IP的速率限制,以防止恶意推理工作者发送过多请求。此外,在中继服务器上动态配置UFW防火墙规则,仅接受来自计算池中当前活跃推理节点的流量。
最大化客户端吞吐量与负载均衡
为了避免客户端总是选择最快的中继服务器导致的带宽争用和流量激增,客户端基于预期吞吐量从一组中继服务器中进行采样。预期吞吐量与成功率和带宽的乘积成正比。客户端使用指数移动平均(EMA)不断更新这些估计值,并纳入愈合因子以鼓励定期探索未充分利用的服务器。
组装模型权重完整性检查
为了确保推理工作者使用的模型权重的完整性,每个推理工作者在下载并重建检查点后计算SHA-256校验和,并与训练节点生成的参考校验和进行比较。如果不匹配,推理节点将丢弃损坏的检查点并尝试下载下一个可用的检查点。
2.3 TOPLOC:实现无信任推理
TOPLOC是一种基于局部敏感哈希的方案,用于高效且可验证的推理。它能够检测模型推理中的篡改或精度变化,并且在非确定性GPU硬件上可靠工作。
计算检查
为了确认推理是使用正确的模型权重进行的,每个推理工作者为生成的每个序列生成TOPLOC证明。这些证明作为解码期间产生的最终隐藏状态的密码学承诺。信任的验证节点随后使用预填充重建这些激活,并与提交的承诺进行比较以确认一致性。
采样检查
终止检查:生成的序列有两个有效的终止标准:达到模型的最大上下文长度或生成结束序列(EOS)令牌。为了防止推理提供者过早终止序列,检查序列是否达到最大模型长度或以EOS令牌结束。如果是由于生成EOS令牌而终止的序列,则确保EOS令牌的概率超过0.1,以防止通过不太可能的EOS生成进行操纵。
令牌采样检查:从logits中正确采样应产生类似于指数分布,模式在1附近。如果使用较小模型生成令牌,仅使用较大模型进行预填充(以通过TOPLOC检查),则结果分布将呈现双峰分布,模式接近1和0。通过检查logit分布来检测此类不一致性。
理性检查
固定数据采样:允许推理工作者选择自己的样本可能导致选择简单或已完成的示例。为了防止这种情况,每个节点基于种子确定性地选择样本,该种子计算为:种子 = 节点地址·步骤 + 本步骤的提交次数。通过从种子重现采样过程来验证使用了正确的样本。
值范围检查:所有报告的标量值(如奖励和优势)必须落在预定义的范围内,以确保它们是合理的,并与预期结果一致。
Parquet格式检查:确保Parquet文件具有正确的架构,并且可以被训练数据加载器加载。这确保不会接受任何会在训练器中引发异常的文件。
2.4 Prime Intellect协议
Prime Intellect协议通过模块化、去中心化的协调层协调无许可节点。它使模型训练者能够检查所有节点的健康状况、查看日志,并分发新任务,类似于去中心化的SLURM。
系统架构
系统由多个组件组成,所有组件(除了工作节点和去中心化账本)都托管在Kubernetes集群中。所有API端点都受到Cloudflare的保护。
去中心化账本:用于存储有关当前训练运行的信息,包括训练运行的所有权和工作节点的贡献。这些工作负载被组织成“计算池”,所有计算池都属于更广泛的“计算域”。账本维护每个池的详细信息,包括所有权详细信息和工作节点的贡献。每个贡献者以及计算池所有者都有一个加密地址,用于签名交易和证明所有权,从而保护API交互并确保正确归属计算资源。
工作软件:工作软件的核心任务是向中央协调器通信心跳和指标,并配置和管理本地Docker环境以执行任务。其他功能包括导出日志和重新启动正在运行的容器的能力,以及Docker容器本身和工作节点之间的基于Unix套接字的连接。后者可用于触发工作软件上的操作,例如从Docker卷中上传文件。
发现服务:发现服务是一个简单的API,允许节点上传工作元数据信息。它将这些数据存储在Redis数据库中,并允许其他授权组件(如协调器)检索有关已注册节点的信息。这确保了工作IP只对协调器可见,从而降低了拒绝服务攻击的风险。
协调器:协调器的核心任务包括分发任务和基于工作节点的心跳观察其生命周期。它使模型训练者能够通过网络API与基础设施交互。它公开了有关所有当前活动节点的信息、创建和调度新任务的API,以及每个节点的当前指标和日志的见解。此外,由于每个节点上的容器可能会失败,因此可以重新启动每个节点的工作负载。
操作流程
节点注册与发现:工作软件由计算贡献者在他们的机器上安装和启动。它自动检测系统组件(GPU、可用RAM和存储空间)并检查这些组件的兼容性。完成系统硬件和软件确认后,节点自动将元数据上传到发现服务。同时,节点还向去中心化账本发送注册调用。成功注册后,工作节点启动一个网络服务器并等待邀请。协调器定期检查发现服务以查找新创建的节点,并向工作者的HTTP服务器发送邀请,以开始贡献。邀请包含结合节点地址以及当前计算池ID和域的加密签名。邀请在去中心化账本上进行验证,使工作者成为活跃的计算贡献者。发送邀请后,协调器将节点信息存储在本地Redis存储中,并等待传入的心跳。
节点健康与心跳:每个节点维护一个连续的心跳循环,以与协调器保持通信。这些心跳作为从节点发送回协调器的简单信号,允许协调器跟踪节点是否仍然活跃。协调器使用Redis存储这些心跳,并设置过期时间,因此它可以自动检测节点何时停止响应。一个单独的状态更新循环定期检查每个节点的健康状况,通过计算错过的心跳次数。如果错过的心跳过多,节点将被标记为死亡,其工作者将从去中心化账本中移除。如果节点重新上线,它将尝试重新注册并更新发现服务,以便被邀请回到池中。
任务调度与执行:任务由协调器通过POST API创建,并在所有健康节点上异步调度。协调器不是推送任务,而是响应节点的心跳请求分发任务,允许采用反应式和容错的拉取模型。一旦收到任务,工作者与Docker守护进程通信,将任务规范转换为正在运行的容器。这包括设置卷、管理容器生命周期,并应用特定于任务的设置,如环境变量和自定义启动命令。在开发过程中,一个关键的见解是引入共享卷,用于存储持久数据,如模型权重。没有这个共享卷,重新启动任务将触发冗余下载,减慢执行速度并增加资源使用。
推理验证:如图5所示,推理工作者将生成的rollout上传到远程文件夹,并使用协调器提供的签名URL生成链上事件,从而触发验证器开始对新文件进行验证。基于检查结果,文件要么被接受,要么被拒绝。接受的文件随后由训练节点数据加载器读取。被拒绝的文件将导致创建它们的节点被削减并从计算池中驱逐。
设计权衡与局限性
协调器和发现服务目前是集中式的,这简化了协调,但也创建了潜在的单点故障,并限制了水平扩展能力。这种设计还引入了信任假设,可能不适合更分布式或无许可的环境。为了解决这个问题,研究团队计划转向使用分布式哈希表(DHT)的完全对等架构,这将消除对中央协调的需求,并实现更具弹性的去中心化节点发现。
另一个关键限制在于工作者的部署方式。目前,它仅在具有直接Docker守护进程访问权限的裸金属机器或虚拟机上运行。这排除了如Kubernetes等环境,在这些环境中Docker访问被抽象化或不可用。为了解决这个问题,研究团队正在开发一个可以作为容器本身运行的工作者版本,使其与容器编排平台兼容。
3. 训练配方
INTELLECT-2的目标是训练一个具有推理能力的模型,特别是在数学和编码领域。此外,该模型旨在通过允许用户在任务提示中指定所需的思考令牌数量来控制模型的思考预算。基础模型使用QwQ-32B,并在很大程度上遵循Deepseek-R1的基于GRPO的训练方法,并使用可验证的奖励。
3.1 训练数据与奖励
INTELLECT-2使用双重目标进行训练:纳入任务奖励,鼓励模型在数学和编码任务上提高推理能力;以及长度奖励,以教导模型遵循提示中提供的思考预算。
任务奖励
文章从NuminaMath-1.5和Deepscaler中选择了高质量的数学和编码任务,这些任务可以通过符号验证/字符串匹配和单元测试执行进行验证。数学和代码奖励函数都实现二元奖励,正确回答奖励1,错误回答奖励0。
长度奖励
为了实现用户在任务提示中指定INTELLECT-2的思考预算,文章很大程度上遵循了L1的方法。具体来说,对于训练批次中的每个问题,采样一个目标长度ltarget,并通过模板“在回应之前思考ltarget个令牌”将其包含在提示中。随后,长度惩罚表示实际回应长度与目标长度之间的差异,乘以加权因子α,并与任务奖励结合。总奖励可以计算为: rtotal(y, ltarget) = rtask(y) − α ∗ | ltarget − ly | 与L1设置不同,文章从一个小的离散目标长度集合(例如,2000、4000、6000个令牌)中进行采样,以简化目标并使模型更容易学习。
3.2 异步强化学习
文章采用异步强化学习,使用专用的推理和训练节点,以最小化GPU空闲时间。这种方法在先前工作中被证明是有效的,并且也被用于大型LLM训练运行。
3.3 离线和在线数据过滤
在消融实验中,文章发现过滤数据集的难度对训练性能有显著影响。文章采用了离线过滤和在线过滤,以从rollout中选择性地选择训练样本。
离线数据过滤
在使用DeepSeek-R1-Distill-Qwen-7B训练时,发现从训练集中过滤掉太简单或太困难的问题非常重要。文章使用DeepSeek-R1-Distill-Qwen-7B预过滤INTELLECT-2的训练数据集。
在线数据过滤
像GRPO和RLOO这样的训练算法依赖于基于组的相对奖励来计算优势。如果单个问题的所有完成项都获得相同的奖励(对于二元奖励来说,要么都是0,要么都是1),则这些样本的所有优势都为零,除了辅助损失(如KL或熵损失)之外,没有提供任何训练信号。为了缓解这个问题,文章采用了在线过滤,并继续从推理工作者那里采样响应,直到获得一个完整的批次的非零优势样本,然后才执行训练步骤。这增加了每个训练步骤所需的推理量,允许接入和利用更多的去中心化推理工作者。
3.4 双向GRPO裁剪以提高训练稳定性
在训练过程中,文章遇到了导致模型崩溃的损失和梯度范式尖峰,特别是在模型变大时。文章发现GRPO和PPO类训练目标中使用的一侧令牌概率比率裁剪是导致不稳定的主因之一。
文章引入了一个额外的超参数δ,为负优势情况下的令牌概率比率添加了上限,以仍然允许大型更新远离不良rollout,但避免出现高达一百或更高的巨大令牌概率比率。这一变化显著提高了训练的稳定性。
3.5 缓解大规模训练的不稳定性
尽管上述双向GRPO裁剪机制显著减少了大型损失和梯度尖峰,但在使用更大模型时,文章观察到了额外的训练不稳定性。
梯度范式升级
随着训练的进行,文章观察到梯度范式逐渐但持续地增加,即使没有立即出现尖峰。这种现象似乎与模型大小相关,在更大的架构中更为明显。文章发现,使用激进的梯度裁剪(低至0.05-0.1的阈值)可以有效缓解稳定性问题,而不会显著影响收敛速度,提供了稳定性和训练效率之间的有利权衡。虽然这种方法并不能完全消除不稳定性问题,但它大大延迟了梯度增长阶段,并推迟了潜在的稳定性崩溃,延长了模型的可行训练期。
令牌概率裁剪比率升级
除了梯度范式和熵不稳定性外,文章还观察到训练期间令牌概率裁剪比率的稳步增加。这一增长直接与上升的梯度范式相关,因为裁剪比率有效地跟踪了连续优化步骤之间logits的差异。
熵损失模式
在训练期间,文章识别出一个独特的熵损失模式。在最初下降之后,熵损失开始再次上升。这种熵的 resurgence 通常预示着灾难性的训练失败,导致模型全面崩溃。增加KL惩罚的加权因子能够延迟这种崩溃,但也导致学习速度变慢,因此并不是一种有效的缓解策略。
4. 实验
文章报告了使用QwQ-32B作为基础模型进行的多次训练运行的实验结果,这些实验使用了经过修改的GRPO,并采用了双向异步。文章还报告了模型在推理时的计算利用情况和奖励轨迹。
4.1 实验设置
在实验中,文章使用了QwQ-32B作为基础模型,并在Huggingface上实现了Qwen,使用Flash Attention 2。文章采用了序列打包技术,以最大化计算效率,并使用FSDP对模型进行分片,启用了激活重计算,并设置了最大序列长度为32K。
4.2 结果
文章进行了两个主要实验:TARGET-SHORT,目标长度为{1000, 2000, 3000, 4000},旨在训练一个高效的推理模型;TARGET-LONG,主要运行,目标长度为{2000, 4000, 6000, 8000, 10000}。
计算利用
在两个实验设置中,通过异步强化学习成功地将通信与计算重叠。SHARDCAST广播到所有节点平均耗时14分钟,带宽吞吐量约为590 Mb/s。
奖励轨迹
在整个训练过程中,任务奖励显著提高,表明模型在数学和编码问题上的表现有所提升。长度惩罚也有所减少,但减少速度比消融实验中的小型模型慢得多。因此,在给定的实验时间内,模型未能严格遵循指定的思考预算。
基准测试性能
使用evalchemy测试模型在推理基准测试上的性能。文章报告了INTELLECT-2与其他模型在多个基准测试上的性能比较,发现在数学和编码基准测试上提高了QwQ-32B的性能,但在仅使用数学和编码任务进行训练的IFEval上略有下降。
5. 讨论:去中心化训练在推理时计算范式中的应用
文章讨论了去中心化训练在推理时计算范式中的潜在优势,特别是在减少协调需求和将计算需求转向推理方面,使更广泛的参与者能够利用异构设备进行贡献。
异步RL隐藏了大部分通信开销
通信是去中心化训练的主要瓶颈。文章提出了一种有前景的策略,即将通信与计算重叠。与延迟梯度应用并影响收敛的ZeRO-offload等方法不同,文章认为延迟RL中的rollout可以带来更好的权衡。即使模型略有off-policy,它仍然可以生成有用的推理轨迹,这些轨迹可以带来积极的奖励,这是有效的训练信号。
推理将消耗大部分计算资源
在INTELLECT-2中,训练与推理的计算比约为1:4。文章预计,随着推理时推理的扩展,这一比例将更加偏向推理。这种趋势为在全局分布式异构计算资源上训练具有数千亿参数的模型打开了大门。
推理将消耗大部分计算资源
模型能力随着训练专注于更具挑战性的样本而提高。然而,并非所有在推理期间生成的数据都是有用的。随着模型处理更难的任务,积极奖励变得越来越稀疏,推理将需要比训练更多的计算资源。在这种情况下,生成高质量的rollout成为主要的计算成本。由于只有少量这些rollout包含强大的学习信号,因此大部分计算资源被分配给探索而非模型更新。
6. 结论与未来工作
文章介绍了INTELLECT-2,这是第一个全球分布式强化学习运行的320亿参数语言模型。研究团队开源了训练的模型、任务和验证环境,以及所有基础设施组件,包括PRIME-RL训练框架。文章希望这份报告和伴随的开源组件将支持更广泛的研究社区探索去中心化训练,并推动全球分布式强化学习作为构建前沿开源模型的基础。
尽管INTELLECT-2是迈向以去中心化方式训练的开源前沿推理模型的第一步,但仍有多个未来工作的方向:
增加强化学习中推理与训练计算的比例
由于推理是无限并行化的,并且不需要工作者之间的任何通信,因此相对于训练而言在推理上花费更多计算资源的RL训练方法非常适合去中心化训练。VinePPO等方法花费额外的时间进行推理以计算基于Monte Carlo的价值估计,而不是利用如PPO中的价值网络,因此是一个有趣的研究领域。此外,各种形式的在线数据过滤对于基于推理的课程学习方法是纯粹基于推理的,如果被证明是有效的,那么对于去中心化设置来说是非常有利的。
推理模型的工具调用
最新一代的专有推理模型可以访问工具调用,如网络搜索或Python解释器,作为其推理链的一部分。开源研究工作已经在这方面取得了一些初步的有希望的结果,为扩展这些方法并训练更大的能够利用这些工具的开源推理模型打开了大门。
群众外包RL任务和环境
为了教授模型新技能,必须构建各种RL环境。这归结为一个传统的软件工程问题,高度并行化,并且需要具有各种领域专业知识的贡献者,因此非常适合开源、社区驱动的努力。文章邀请每个人为PRIME-RL贡献RL环境,并旨在使其尽可能容易进行强化学习环境的群众外包。
模型合并和DiLoCo
模型合并已成为最近工作中的有效后训练技术。多个在不同推理领域训练的模型是否能够合并,这将标志着在并行计算资源上扩展异步强化学习的重要一步。在这种设置中,多个模型可以独立训练,然后在训练结束或在训练期间使用DiLoCo等技术连续合并成一个统一的模型。将合并应用于RL将使去中心化训练能够再扩展一个数量级的计算资源。