SuperAPI AI 工具集

torchforge-rl-training

智能体与模型

查看项目

更新于 10-30 06:45

技能介绍

torchforge 是 Meta 的 PyTorch 原生强化学习库,将基础设施关注点与算法关注点分离,使研究者只需聚焦算法,分布式训练、推理与权重同步由框架自动处理。本技能页面提供使用 torchforge 进行智能体 RL 的指导。

用途与适用场景:当需要 RL 算法与基础设施的清晰分离、PyTorch 原生抽象(无 Ray 依赖)、便捷的算法实验(GRPO、DAPO、SAPO 等约 100 行实现)、基于 Monarch actor 系统的可扩展训练,以及与 TorchTitan 的模型并行集成时,可选用 torchforge。若需要生产级稳定性,文档建议改用 miles 或 verl;若需要 Megatron 原生训练,建议用 slime。torchforge 为实验性项目,API 可能变化。

主要能力:算法隔离,实现 RL 算法无需触碰基础设施;可从单 GPU 扩展到数千 GPU(通过 Monarch);采用 TorchTitan(训练)、vLLM(推理)、TorchStore(同步)的现代技术栈;内置 GRPO、DAPO、CISPO、GSPO、SAPO 损失函数。架构自下而上分为分布式服务层(Monarch 下的 Trainer/TorchTitan FSDP、Generator/vLLM 推理、冻结的参考模型、奖励 Actor)、Forge API 层(Episode、Group 数据类与 async/await 服务接口)和应用层(用户代码:奖励模型、损失函数、采样)。

安装与快速开始:文档给出 conda 创建 Python 3.12 环境、运行 ./scripts/install.sh 安装(处理 PyTorch nightly 与依赖)、以 python -c "import torch, forge, vllm; print('OK')" 验证的方式;ROCm 环境使用 ./scripts/install_rocm.sh。SFT 训练(需 2+ GPU)用 python -m apps.sft.main --config apps/sft/llama3_8b.yaml;GRPO 训练(需 3+ GPU)用 python -m apps.grpo.main --config apps/grpo/qwen3_1_7b.yaml。

torchforge 内置三种工作流:其一,GRPO 数学推理训练,需 3+ GPU(分别用于 trainer、参考模型、generator),编写 YAML 配置(模型、数据集如 GSM8K、训练超参、GRPO 的 n_samples、clip、beta、temperature 及服务配置),定义奖励函数(可复用 forge.data.rewards 中的 MathReward、ThinkingReward,或自定义),启动训练并通过 W&B 观察损失、熵与 KL 散度。其二,自定义损失函数,编写 nn.Module 类实现前向计算(如带裁剪的策略梯度与 KL 惩罚),并接入训练循环。其三,多 GPU/多节点分布式训练,配置张量并行、数据并行等并行度与服务进程数,可用 SLURM 提交或本地多 GPU 启动。

API 要点:训练批次使用字典形式,inputs 为含 tokens 张量的列表,targets 含 response、ref_logprobs、advantages、padding_mask,trainer.train_step 返回 float 损失;Completion 数据类包含 text、token_ids、logprobs、metadata;forge.losses 模块提供 SimpleGRPOLoss 与 ReinforceLoss 等内置损失。

常见问题:GPU 不足时可减少服务进程或移除参考模型、将参考模型置于 CPU;生成阶段 OOM 可减小 n_samples 或序列长度;权重同步慢可启用 RDMA(TORCHSTORE_USE_RDMA=1)或降低同步频率;策略坍塌可提高 KL 惩罚系数或加入熵奖励。更多资源见官方文档、GitHub、Discord 及 TorchTitan、Monarch 仓库。