Molt 是一个 agentic-first、面向研究的强化学习框架,由 NVIDIA-NeMo 发布,采用 PyTorch 与 HuggingFace 原生设计,整体约 9.2K 行 RL 代码。其定位是尽可能小的 PyTorch / HuggingFace 原生技术栈,用于驱动 1T 级完全异步、多模态、多轮智能体强化学习,并可在 vLLM 上扩展到前沿 MoE 规模。
【用途与设计理念】 Molt 以智能体为核心:agent 就是程序,trainer 是单一 actor,奖励是你在 Env 或 ChatAgent 中编写的任意 Python 代码,可为评分器、多轮工具、VLM 环境、LLM-as-judge。框架由三个组件承载:Ray 负责放置与异步队列,vLLM 负责 rollout,NVIDIA AutoModel + FSDP2 负责纯 PyTorch 训练。整个运行时即“三个盒子 + 一个异步循环”。契约是 token-first:token id、logprobs、动作范围、奖励和多模态张量从 rollout 到训练始终保持对齐。任何可在 Python 中计算的东西都可作为有效奖励,包括通过驱动 rollout 的同一批 vLLM 引擎调用 LLM-as-judge。
【主要能力】 训练与运行时方面,支持 SFT(molt.cli.train_sft)和基于 vLLM 的在线 RL(molt.cli.train_rl_ray);运行时包括 Ray 放置、异步 rollout 队列、vLLM 引擎、部分 rollout 同步;模型规模上通过 AutoModel + FSDP2 支持 TP / EP / CP 与 MoE 原生,例如 DeepSeek-V3 在 --fsdp.ep_size 256 下运行;模型后端以 NVIDIA AutoModel 为主路径,支持原生 CP / EP / TP、自定义 MoE+EP 并行器、TE 融合注意力,HF transformers 路径为非首选回退(仅支持文本 + flash_attention_2 + packing,无 CP / EP / TP)。优化器默认 adam,可为最大 actor 启用 CPU offload(--fsdp.offload optimizer);muon 为实验性(通过 Dion 的 Newton–Schulz,2D 权重与分组 MoE 专家用 Muon,embedding / head / norm 用 AdamW),已在分布式(FSDP / EP)下运行,但尚未显示相对 adam 的稳定优势,adam 仍为推荐默认。
智能体与奖励方面,estimators 支持 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 checkpoint,基于 NeMoAutoModelForCausalLM 和标量 value head,保留原生 TP / EP / CP 路径。蒸馏方面支持 on-policy distillation:逐 token 对冻结 teacher 的反向 KL,通过 --algo.advantage.estimator on_policy_distill + --ref.model_name_or_path 开启。IS 校正用于 off-policy / 异步 rollout 的训练/rollout logprob 不一致校正,支持 is_correction_level {off,token,seq,geo} × is_correction_mode {mask,clip,trunc},覆盖 TIS、IcePop、seq-mask-tis。KL 方面,当 --algo.kl.init_coef > 0 时可启用可选 reference workers(reference 同时充当蒸馏 teacher)。
2026-09 起,Molt 支持 FlashREINFORCE,即无 critic 的单 rollout RL,训练在超过 6,000 步后仍稳定。
【使用方式】 安装提供两种路径:推荐使用容器,dockerfile/Dockerfile 内置完整 CUDA-13 技术栈(torch 2.13、vLLM、TransformerEngine、flash-attn、mamba、DeepEP、NVIDIA AutoModel),适配 A100 / H100 / H200 / B200 / GB200,SFT 与 RL 可直接运行;自 0.1.9 起标签为 multi-arch(amd64 + arm64),同一 pull 可用于 x86 与 Grace-Blackwell 主机。本地安装面向容器外开发,会拉取本仓库验证过的 git-pinned AutoModel(见 setup.py、AUTOMODEL),要求 CUDA 13(torch==2.13.0+cu130),CUDA-12 环境不可用;若宿主机驱动低于 580,应使用容器(其内置 CUDA 前向兼容层并自动启用)。PyPI 上的 molt-rl 包因无法携带 git-pinned AutoModel,落后于 pin,当前不是受支持的安装路径。可选后端 AutoModel-Slim 是 molt 自己维护的 pinned AutoModel 副本,包名(nemo_automodel)、导入路径与 API 均相同,切换时 molt 代码无需改动,保留 molt 训练所用模型家族与训练栈,文件与代码量由 758 文件 / 282k 行缩减至 252 / 约 97k;默认仍为上游 NVIDIA AutoModel。
Agent 契约方面,每次 RL 运行指向一个 Python 模块,该模块必须导出 AgentRunner,可选两条路径:Env(框架掌控 LLM 循环,Gymnasium 风格 step/reset,框架驱动 vLLM、tokenization、多模态记账与每轮预算,step() 返回 Result,框架串联轮次直至 terminated 或 truncated);ChatAgent(通过 OpenAI 或 Anthropic SDK 自行掌控循环)。服务器同时支持 OpenAI /v1/chat/completions 与 Anthropic /v1/messages,两者解码为同一 token 精确累积;当请求重写前缀而非扩展时,服务器自动封存当前分段并从重新模板化的对话开始新的 token 精确分段,因此一次 rollout 可产生多个分段轨迹,它们共享 reward 与 rollout_id,组基线(GRPO/RLOO 等)会将其去重为每个 rollout 一个奖励,同时各分段仍贡献自身生成的 token 用于策略梯度,无需 agent 侧改动。
长度惩罚方面提供两个可选惩罚,默认关闭且互斥:--reward.overlong_buffer_len B 在 --data.max_len 的最后 B 个 token 上按 DAPO 风格将惩罚线性增至 --reward.overlong_penalty_factor(默认 1);--reward.stop_properly_penalty_coef C 对截断 rollout 的奖励乘以 C(C 在 [0,1] 内),或当 C 为负时替换为 C。截断覆盖生成长度限制、上下文耗尽与 agent 轮次上限。两者均以 rollout 的峰值分段衡量,而非求和。
参考启动脚本位于 examples/scripts/,全部基于 AutoModel + FSDP2 后端端到端运行。geo3k VLM 脚本(rl_qwen3_6_35b.sh / sft_qwen3_6_35b.sh)首次运行时会通过 examples/python/utils/prepare_geo3k.py 自动准备数据集,也可手动预置或指向自己的 PROMPT_DATASET / EVAL_DATASET。多轮 Python 工具环境示例见 examples/python/agents/geo3k.py,模型发出 <tool_call> 调用 python_executor(code=...),环境在沙箱子进程中运行代码并将 stdout 作为 <tool_response> 返回,循环最多运行 MAX_AGENT_TURNS(agent 默认 5;Qwen3.6 快速开始设 4,Slurm 上设 10),最终 <answer>ANSWER</answer>(或旧版 \boxed{ANSWER})与真值比对作为奖励。
【适用场景与限制】 Molt 面向 agentic 强化学习研究,追求在大规模前沿 MoE 上的 agentic 研究速度,而非生态广度。适合需要在 vLLM 上进行完全异步 agentic RL、多轮与多模态智能体训练、SFT 到 RL 全流程以及可读性强的 PyTorch 原生栈的研究场景。限制方面:本地安装要求 CUDA 13,CUDA-12 环境不可用;muon 优化器仍为实验性且未显示相对 adam 的稳定优势;HF transformers 回退路径不支持 CP / EP / TP;PyPI 上的 molt-rl 包当前非受支持安装路径。具体收费与价格信息暂未提供。