@dair_ai:NVIDIA 最新研究。他们刚刚发布了一个面向智能体强化学习的 PyTorch 原生训练框架。(收藏)论文摘…
摘要
NVIDIA 发布了 Molt,一个面向智能体强化学习、注重紧凑性和可读性的 PyTorch 原生框架,性能与基于 Megatron 的堆栈相当。该框架是开源的,并附有论文。
查看缓存全文
缓存时间: 2026/07/27 17:56
NVIDIA 发布新研究。他们刚刚推出了一个基于 PyTorch 原生的 agentic 强化学习训练框架。(记得收藏)论文摘要:Molt 是一个基于 PyTorch 原生的 agentic 强化学习框架,其设计目标不同寻常:代码库必须足够紧凑,让研究人员能整体把握,同时让 AI 编程助手能完整阅读并理解。Agentic 强化学习研究涉及不断的算法修改、新估计器、新管线阶段、新 rollout 方案。在主流框架中,每次修改都需要贯穿训练器、分布式后端和 rollout 胶水代码的多层调整,研究人员每轮迭代都要承担这一成本。Agent 仍然是一个普通程序。一个异步循环训练多模态和混合专家策略,同时绝不训练它未生成的 token,保持 token、策略版本和模型语义的一致性。精简并不以吞吐量为代价。在匹配的完全异步协议下,Molt 在统计上与基于 Megatron 的最先进栈具有可比性。可被 AI 编程助手阅读现在已成为研究基础设施的一项明确设计约束。配方和容器已开源:http://github.com/NVIDIA-NeMo/labs-molt… 论文:https://arxiv.org/abs/2607.21653 在我们学院学习如何构建有效的 AI 智能体:https://academy.dair.ai — # NVIDIA-NeMo/labs-molt 来源:https://github.com/NVIDIA-NeMo/labs-molt # 🦋 Molt 面向研究的、以 agentic 为先的强化学习框架。 Ray · vLLM · NVIDIA AutoModel — 用于 1T 级完全异步、多模态、多轮 agentic 强化学习的最小 PyTorch 原生栈。 许可证 Python PyTorch NVIDIA AutoModel vLLM Ray 强化学习代码 技术报告(https://www.researchgate.net/publication/409325071_Molt_A_Scalable_PyTorch-Native_Training_Framework_for_Agentic_Reinforcement_Learning) 在 DeepWiki 上提问(https://deepwiki.com/NVIDIA-NeMo/labs-molt) 论文(https://www.researchgate.net/publication/409325071_Molt_A_Scalable_PyTorch-Native_Training_Framework_for_Agentic_Reinforcement_Learning) · 架构 · 为什么选择 Molt · 快速开始 · Agent 合约 · 配方 · 扩展 | 包 | SFT | 强化学习 | 运行时 | |—|—|—|—| | molt | molt.cli.train_sft | molt.cli.train_rl_ray | vLLM | Molt 是 agentic 为先且 PyTorch 原生的。Agent 就是程序;训练器是一个单一的 actor;奖励可以是你在 Env 或 ChatAgent 中编写的任何 Python 代码——评分器、多轮工具、VLM 环境、LLM 作为评判者。三个组件承载其余部分——Ray 负责放置和异步队列,vLLM 负责 rollout,NVIDIA AutoModel + FSDP2 在纯 PyTorch 中负责训练。这就是整个栈:约 9.2K 行强化学习代码,可在 vLLM 上扩展到 1T 级 MoE,支持 TP / EP / CP——想想 DeepSeek-V3 使用 --fsdp.ep_size 256,以及针对最大 actor 的 Adam CPU 卸载。一个 agent API,一个可训练的 actor,足够简洁,可以端到端阅读。 ## 🧩 架构 三个盒子。一个异步循环。 Ray 拥有三个盒子之间的放置和异步队列——这就是整个运行时。合约是 token 优先的:token id、对数概率、动作范围、奖励和多模态张量从 rollout 到训练始终保持一致。任何可以用 Python 计算的东西都是有效的奖励,包括通过驱动 rollout 的同一 vLLM 引擎进行的 LLM 作为评判者的调用。 ## ✨ 为什么选择 Molt | | 你得到的 | 对研究为何重要 | |—|—|—| | 🤖 Agentic 为先 | 一个符合 Gymnasium 的 API——Env.step() 或 ChatAgent.run()——涵盖评分器、多轮工具、VLM 环境以及 OpenAI/Anthropic 兼容的服务器 | Agent 就是程序——用纯 Python 迭代环境,训练器保持不变 | | ⚙️ 完全异步运行时 | Ray 放置、异步 rollout 队列、vLLM 引擎、部分 rollout、权重同步 | Rollout、训练和权重同步重叠——无需定制基础设施即可让 DeepSeek-V3 级别的 actor 保持数据供应 | | 🔥 PyTorch 原生,AutoModel 优先 | FSDP2 + NVIDIA AutoModel,纯 PyTorch 端到端 | 用你熟悉的语言修改模型;无需后端仪式 | | 🎯 单一 actor 的简洁性 | 一个 actor,可选的 KL 参考——整个强化学习图可在一页内呈现 | 每个梯度都是显式的;每个损失项距离一个文件之遥 | | 🚀 前沿规模 MoE | AutoModel + FSDP2 + TP / EP / CP + Adam CPU 卸载,MoE 原生——例如 DeepSeek-V3 使用 --fsdp.ep_size 256 | 训练 8B 的同一脚本可扩展到 1T 级 MoE——不同规模之间无需重写 | | 🔗 Token 优先合约 | 对齐的 token id、对数概率、动作范围、奖励、多模态张量 | 多轮、VLM 和工具调用轨迹共享同一端到端格式 | | 🪶 小巧、可修改的表面 | 横跨 3 个薄层的约 9.2K 行强化学习代码 | 分叉一个层而不影响其他层——一个下午即可读完 | ## 📊 对比情况 强化学习生态系统优化广度。Molt 优化大规模 agentic 研究速度——在 vLLM 上以完全异步的方式驱动前沿 MoE 规模的 agentic 强化学习的最小 PyTorch 原生栈。 | | 🦋 Molt | OpenRLHF | verl | slime | |—|:-:|:-:|:-:|:-:| | 训练后端 | PyTorch / FSDP2 + NVIDIA AutoModel | DeepSpeed ZeRO-3 | FSDP / FSDP2 / Megatron | Megatron(FSDP 实验) | | Rollout 引擎 | vLLM (Ray) | vLLM (Ray) | vLLM / SGLang / TRT-LLM | SGLang 仅 | | 强化学习拓扑 | actor(+ 可选的 PPO critic) | actor + critic + RM | actor + critic + RM | actor + critic + RM | | 奖励来源 | agent Python | agent / endpoint / RM | agent / RM / endpoint | rollout fn / RM | | 并行度 | TP / EP / CP,MoE 原生 | ZeRO-3 / FSDP | TP / PP / EP / SP | TP / PP / DP / CP / EP | | 多模态 | VLM 强化学习,多轮工具调用 | VLM 强化学习(v0.10+) | Qwen2.5-VL, Kimi-VL | geo3k VLM | | 配置界面 | 仅 CLI 标志 | CLI + 脚本 | Hydra + YAML | CLI + YAML | | 强化学习代码量¹ | ~9.2K LOC | ~7.2K | ~62K | ~25K | | 设计中心 | agentic 为先的研究 | RLHF 覆盖 | 生产广度 | Megatron 吞吐量 | 一个框架,一个任务。 Molt 是最小的 PyTorch 原生栈,能将 NVIDIA AutoModel 从 SFT 带到 vLLM 上的前沿规模 agentic 强化学习。用纯 PyTorch 阅读影响你梯度的每一行代码。 > ¹ 强化学习代码 = 框架强化学习路径使用的每个 Python 文件——在线 > 训练器、rollout、Ray 编排、经验/优势/奖励/KL/损失、 > actor/critic/RM 推理,以及共享的模型、工具、并行度和 > 强化学习训练命令依赖的内核。排除纯 SFT、DPO/KTO/IPO > 训练器、奖励模型 训练、蒸馏、供应商的第三方 > 代码、测试、示例、脚本和文档。仅计算代码行(空白 > 和仅注释行排除)。通过跟踪每个强化学习入口点的导入图测量 > (molt.cli.train_rl_ray、 > openrlhf.cli.train_ppo_ray、verl.trainer.main_ppo);slime 延迟加载其 > Megatron/SGLang 后端,因此其核心 slime/ 包加上其 > slime_plugins/ 模型动物园(+~4.7K——其强化学习路径使用的 repo 内模型 > 代码,按与 Molt 的 models/ 相同的基础计数)被计数,减去 > SFT/蒸馏。Molt 于 2026-07-20 在此 repo 上测量;其他三个 > 于 2026-06-16 在各 repo 当时的 main HEAD 测量 > (verl 86e8123,slime 243773c,OpenRLHF b3d2927)。 ## 🎯 支持范围 ### 训练和运行时 | 领域 | 支持情况 | |—|—| | SFT | molt.cli.train_sft | | 强化学习 | 通过 molt.cli.train_rl_ray 的 vLLM 支持在线强化学习 | | 运行时 | Ray 放置、异步 rollout 队列、vLLM 引擎、部分 rollout 同步 | | 模型规模 | AutoModel + FSDP2 与 TP / EP / CP,MoE 原生——例如 DeepSeek-V3 使用 --fsdp.ep_size 256 | | 模型后端 | NVIDIA AutoModel 是主要路径——原生 CP / EP / TP,自定义 MoE+EP 并行化器,TE 融合注意力;模型端的一切与 AutoModel 自己的配方一致。HF transformers 路径是非优先的后备(仅当模型没有原生类时 AutoModel 才会降级使用),支持仅文本 + flash_attention_2 + packing——无 CP / EP / TP | | 优化器 | adam(默认),对最大 actor 使用 CPU 卸载(--fsdp.offload optimizer)。muon(通过 Dion: 对 2D 权重和分组 MoE 专家使用 Newton-Schulz Muon,对嵌入/头/归一化使用 AdamW)是实验性的——支持分布式运行(FSDP / EP),但到目前为止尚未显示出相对于 adam 的一致优势,因此 adam 仍然是推荐的默认选项 | ### Agent 和奖励 | 领域 | 支持情况 | |—|—| | Agent 接口 | --train.agent_path,使用 Env 或 ChatAgent 子类 + AgentRunner | | 奖励来源 | 从 Env.step 或 ChatAgent.run 返回的 Result(reward=...) | | 模态 | 文本和 VLM 提示,包括图像负载 | | 聊天模板 | 助手跨度(SFT 损失掩码 + 多轮 rollout 缝合)从模型自身的聊天模板派生——没有硬编码标记。已验证于 ChatML (Qwen3.x, Nemotron omni3), Kimi-K2.6, GLM, Gemma 和 DeepSeek | ### 算法 | 领域 | 支持情况 | |—|—| | 估计器 | reinforce, reinforce_baseline, rloo, grpo, dr_grpo, gae (PPO), on_policy_distill | | PPO critic | --algo.advantage.estimator gae 添加一个值模型:它自己的 Ray 组(CriticModelActor),默认与 actor 的 GPU 共置或可分离,GAE 优势(--algo.advantage.lam)+ 裁剪的值损失(--critic.value_clip),自己的优化器/学习率(--critic.adam.lr)和可恢复的 _critic 检查点。基于 NeMoAutoModelForCausalLM + 标量值头构建,因此保持原生 TP / EP / CP 路径 | | 蒸馏 | 在线策略蒸馏——对冻结教师模型的逐 token 反向 KL,通过 --algo.advantage.estimator on_policy_distill + --ref.model_name_or_path | | IS 修正 | 训练/rollout 对数概率不匹配修正,用于非策略 / 异步 rollout:is_correction_level {off,token,seq,geo} × is_correction_mode {mask,clip,trunc}(涵盖 TIS, IcePop, seq-mask-tis;参见下方 IS 修正) | | KL | 当 --algo.kl.init_coef > 0 时的可选参考工作器(参考同时充当蒸馏教师) | ### MoE 路由稳定性 | 领域 | 支持情况 | |—|—| | 路由重放(R3) | --train.routing_replay — vLLM 的逐 token top-k 选择在训练前向中重放;详见扩展旋钮下的 MoE 路由稳定性 部分 | | 路由冻结 | --actor.freeze_moe_router 固定门控/路由权重,使得 vLLM 和 actor 将 token 路由到相同的专家。稳定 MoE 强化学习 / 蒸馏,并缩小 IS 修正处理的同一 rollout vs 训练对数概率差距——在重新拟合之间漂移的路由器是该差距的一个主要来源 | ### IS 修正(训练/rollout 对数概率不匹配) 异步和部分 rollout 使得 FSDP actor 重新计算的 pi_train 与 vLLM 生成时的 pi_rollout 产生差异(不同的内核,加上 HTTP 路由器无法观察到的请求中权重交换)。Molt 使用逐 token 重要性比率 pi_train / pi_rollout(由两个旋钮控制)来修正由此导致的非策略更新: - --algo.advantage.is_correction_level {off, token, seq, geo} — 门控比率的粒度。off 禁用修正;token 门控每个 token 自身的比率;seq/geo 聚合一个序列的比率(exp(sum) / exp(mean))到一个每序列的拒绝过滤器中(保留的序列仍然携带其逐 token 的 IS 权重),因此它们需要 mode mask。 - --algo.advantage.is_correction_mode {mask, clip, trunc} — 处理带外单位的方式。mask 丢弃它(零梯度);clip 将其权重夹持到带内;trunc 仅夹持上尾。 - --algo.advantage.is_correction_threshold LOW HIGH — 比率的 [low, high] 带(配方使用严格的 0.99 1.01)。 命名的方案及其先例: | 标志 | 方案 | 先例 | |—|—|—| | level token mode trunc | 截断 IS | TIS | | level token mode mask | token 掩码 | IcePop | | level token mode clip | token 裁剪 | 逐 token 权重夹持 | | level geo mode mask | seq-mask-tis(配方默认) | MIS 风格的序列掩码重要性采样 | | level seq mode mask | 乘积比率拒绝 | 序列对数比率和 | 参考文献:TIS(训练/推理比率的截断重要性采样),IcePop(带外比率的 token 级掩码),以及 MIS(掩码重要性采样,Yingru Li——序列级掩码 IS,这激发了 seq/geo 拒绝过滤器)。 ## 📦 安装 首先克隆仓库——启动脚本、agent 和配方在此处,examples/scripts/docker_run.sh 将此检出挂载到容器中。对于本地(非容器)开发,添加可编辑安装:它会拉取此仓库已验证的精确 git 固定 AutoModel,因此 R3 路由重放和 Muon 开箱即用: bash git clone https://github.com/NVIDIA-NeMo/labs-molt.git cd labs-molt pip install -e ".[vllm]" # 仅限本地开发——容器已内置一切 推荐的路径是项目容器(dockerfile/Dockerfile)。它内置完整的 CUDA-13 栈——torch 2.11 · vLLM · TransformerEngine · flash-attn · mamba · DeepEP · NVIDIA AutoModel——为 A100 / H100 / H200 / B200·GB200 构建,因此无需处理本地依赖即可直接运行 SFT 和强化学习。从 Docker Hub 拉取预构建镜像: bash docker pull hijkzzz/molt:latest # 或固定版本:hijkzzz/molt:0.1.3 …或自己从 Dockerfile 构建(例如更改 CUDA / vLLM / AutoModel 固定版本): bash docker build -f dockerfile/Dockerfile -t hijkzzz/molt:latest . 发布的包也在 PyPI 上,无需检出即可安装: bash pip install "molt-rl[vllm]" > 注意:PyPI 禁止 git 固定依赖,因此 molt-rl 依赖 AutoModel 的 PyPI > 发布版本——它可能滞后于 requirements.txt 中的固定版本,并且 R3 路由重放需要 > 较新的固定版本(当安装的 AutoModel 过旧时,会快速失败并给出说明)。 ## 🚀 快速开始 ### SFT bash torchrun --standalone --nproc_per_node=8 -m molt.cli.train_sft \ --model.model_name_or_path /path/to/automodel \ --data.dataset /path/to/sft.jsonl \ --data.input_key input \ --data.output_key output \ --ckpt.output_dir ./ckpt/sft \ --fsdp.attn_implementation te SFT 使用与强化学习相同的 AutoModel/FSDP2 模型加载路径。 ### 强化学习 bash python3 -m molt.cli.train_rl_ray \ --actor.model_name_or_path /path/to/automodel \ --data.prompt_dataset /path/to/prompts.jsonl \ --data.input_key input \ --train.agent_path examples/python/agents/math.py \ --vllm.num_engines 2 \ --vllm.tensor_parallel_size 2 \ --rollout.batch_size 128 \ --train.batch_size 128 \ --train.micro_batch_size 1 \ --algo.advantage.estimator reinforce \ --algo.kl.init_coef 0 \ --fsdp.attn_implementation te \ --ckpt.output_dir ./ckpt/rl 常用强化学习开关: | 目标 | 标志 | |—|—| | 禁用参考工作器 | --algo.kl.init_coef 0 | | 启用 KL 正则化 | 将 --algo.kl.init_coef 设置为大于零,并用 --ref.num_nodes、--ref.num_gpus_per_node 或 --train.colocate_fsdp_models 放置参考工作器 | | 每个提示比较样本 | --rollout.n_samples_per_prompt 8 加上 reinforce_baseline、rloo、grpo 或 dr_grpo | | 解耦 rollout 和训练 | --train.async_queue_size 2 | | 在同步期间保持 rollout 存活 | --train.partial_rollout_enable | | 按 agent 分数过滤 | --algo.dynamic_filtering_enable --algo.dynamic_filtering_range 0.0 1.0 | | 修正异步 rollout 对数概率 | --algo.advantage.is_correction_level geo(seq-mask-tis;token 级添加 --algo.advantage.is_correction_mode clip/trunc/mask) | | 冻结 MoE 路由(稳定 MoE 强化学习) | --actor.freeze_moe_router | | 在线策略蒸馏 | --algo.advantage.estimator on_policy_distill --ref.model_name_or_path /path/to/teacher | | 独立评估采样 | --eval.temperature、--eval.top_p、--eval.max_new_tokens、--eval.n_samples_per_prompt(未设置的会回退到 rollout) | | 评估检查点(无训练) | --eval.eval_only --eval.dataset — 评估集评分一次后退出;vLLM 保持。
相似文章
Molt:一个可扩展的、基于PyTorch原生的智能体强化学习训练框架
Molt是一个基于PyTorch原生的智能体强化学习训练框架,设计简洁紧凑,易于修改,同时实现了与基于Megatron的框架相当的性能。
@dair_ai: Meta的新论文:Agentic Discovery of Neural Architectures。这是一个热门的新研究领域!请密切关注。
Meta的新论文介绍了一个智能体系统,它能在24小时的计算预算内自主发现神经架构,在350M、1B和3B规模上超越Llama 3.2。
@cwolferesearch: 我刚刚发表了一篇关于智能体强化学习的博客,涵盖了该领域10多个最新框架。以下是关键要点……链接……
一篇博客文章,总结了十个最新的智能体强化学习框架和最佳实践,涵盖模块化接口、轨迹结构、动作掩码、过程奖励、优势归一化、可扩展的 rollout、稳定性/探索以及任务课程。
@_akhaliq: LiteResearcher — 面向深度研究智能体的可扩展代理RL训练框架
LiteResearcher是一个可扩展的强化学习训练框架,专为深度研究智能体设计。
@TheTuringPost: 用于 Agent RL 栈的 10 个开源工具 ↓ OpenPipe ART verl-agent Agent Lightning Unsloth OpenRLHF SkyRL NVIDIA’s P…
精心整理的 10 个用于通过强化学习训练 AI Agent 的开源工具,涵盖 OpenPipe ART、verl-agent、Agent Lightning 和 Unsloth 等框架,并介绍了各工具的使用场景和优势。