11a0e446创建于 1月12日历史提交

AgentRL

AgentRL 是面向 LLM/VLM 的分布式强化学习与监督微调训练栈,覆盖采样、训练、推理服务和数据库存储全链路,支持 FSDP2/TP/PP/EP、SGLang 推理和 MongoDB/MinIO 作为数据后端。

  • 快速上手:提供一键依赖安装与导入自检脚本。
  • 多训练范式:内置 SFT、GRPO/GSPO/MINIRL/CISPO,支持同步与异步采样。
  • 可扩展采样:通过任务/轨迹文档模型和 AsyncSampler 快速定制采样流程。
  • 分布式友好:训练、推理、采样均支持多节点多卡并行,带显存释放与服务热启逻辑。

核心特性 (Key Features)

🧩 极简代码设计 (Minimalist Codebase)

遵循极简代码哲学,核心实现仅 7 个文件、约 1000 行代码。代码结构清晰、逻辑直观,极大降低了认知负载,非常适合学术研究、二次开发及快速验证新想法(MVP)。

🔌 原生智能体接入 (Native Agent Integration)

将智能体构建抽象为 API 级可组合接口。用户可像调用服务一样灵活定义智能体的观测、动作与上下文管理逻辑,只需遵循标准 ChatCompletions 格式即可无缝接入 RL 训练。这种设计消除了繁琐的适配层,显著降低了多轮智能体的开发与迭代成本。

🏗️ 训推完全解耦 (Decoupled Architecture)

采用训练与采样完全解耦的设计。训练组件仅流式消费轨迹数据,不依赖采样过程的生命周期。采样端支持独立启动、停止、扩展和重启,为异构集群部署提供了极高的灵活性与可扩展性。

⚡ 全异步流水线 (Fully Asynchronous Pipeline)

支持在同一 GPU 上并发运行异步采样和训练管道,显著提升硬件资源利用率。可启用框架内置轨迹新鲜度控制和重要性权重约束机制,有效缓解全异步场景下的 Off-Policy 分布漂移,确保训练稳定性。

🚀 极致性能与并行加速 (Performance & Acceleration)

  • 前缀自动合并 (Auto-Prefix Merging):引入类似推理端 KV Cache 的训练侧计算复用机制。系统统一管理多轮轨迹中的共享上下文,将 ReAct 等逐步推理型智能体的多次计算压缩为单次前向传播,大幅减少冗余计算并提升训练效率。
  • 原生并行支持:全面支持 PyTorch 原生并行生态,兼容 FSDP2、Tensor Parallel (TP)、Context Parallel (CP) 等多种策略,具备 128K+ Tokens 的超长上下文训练能力。

构建可信的数据闭环,所有采样请求、模型响应、环境反馈及训练过程均以结构化格式持久化存储。支持开发者查询任意历史轨迹、回溯多轮交互决策并定位异常样本,显著降低大规模异步训练系统的调试成本。

目录导航

快速开始

  1. 安装依赖(必要,推荐使用 uv)
uv init
uv pip install -r requirements.txt --no-build-isolation
  1. 基础自检(无 GPU 亦可)
python -c "import sys; sys.path.insert(0, 'src'); import models, sampler; print('All dependencies working')"
  1. 可选验证
  • GPU:python tests/dtensor_bench.py --world-size 1 --warmup 1
  • 数据库:timeout 10 python tests/mongo_connection_test.py
  1. 最小化启动示例(单机多卡,需按环境填写模型/数据库)
torchrun --nproc_per_node=8 src/main.py \
  --model_name_or_path /path/to/model \
  --output_dir output/demo \
  --db_connection_string "mongodb://user:pwd@host:27017" \
  --enable_sampling true \
  --loss_calculater GRPO \
  --per_device_train_batch_size 1 --gradient_accumulation_steps 8 \
  --learning_rate 2e-6 --num_train_epochs 1

更多模式与参数见下文及子文档。

训练模式速览

  • 监督微调 (SFT):关闭采样、使用 CrossEntropy,支持从数据库或本地 JSON/JSONL 读取。docs/sft.md
  • 强化学习 / GRPO/GSPO/MINIRL/CISPO:开启采样,推理服务按 TP 组拉起,轨迹存入 Mongo/MinIO。docs/rl.md
  • 自定义采样策略:继承 AsyncSampler 自定义 runevaluate_record,或新增任务类型。docs/sampling.md

数据与流程

  • 任务/轨迹模型Task → DispatchedSamplingTask → Record → DBRecordData,均由 Beanie ODM 管理,定义在 src/databases
  • 采样流程:在训练中,TP 组主进程启动 SGLang 推理子进程,接受任务、生成响应并写回数据库;训练侧从 DBIterableDataset 动态拉取样本。
  • 动态批处理:可开启 dynamic_batching,按 max_prompt_tokens 合并样本以提高吞吐。

配置要点(节选)

  • 路径与模型:model_name_or_path, model_init_kwargs, processor_name
  • 并行与内存:tp_size, pp_size, ep_size, cp_size, inf_tp_size, inf_ep_size, inf_mem_ratio, cpu_ram_efficient_loading, loss_seq_chunk_size, activation_offloading
  • 采样:enable_sampling, sync_sampling, num_generations, max_new_tokens, target_concurrency, max_concurrent_samples_per_process
  • 数据:train_file, max_prompt_tokens, dynamic_batching, max_trained_count, retrained_interval, minimal_advantage, drop_zero_advantage
  • 优化与损失:loss_calculater(GRPO/GSPO/MINIRL/CISPO/CrossEntropy), learning_rate, epsilon, epsilon_higher, beta1, beta2, importance_weight_cap_ratio
  • 存储:db_connection_string, enable_oss, oss_connection_string

完整参数说明见 src/configs.py 注释。

开发与验证建议

  • 变更后优先跑导入自检;GPU/DB 可用时再跑相应测试。
  • 大模型训练前先用小步长或少量样本验证分布式配置。
  • 采样/训练长作业请预留充足超时(构建依赖 10+ 分钟、训练可达小时级)。

已知补丁与注意事项

  • SGLang 相关补丁集中在 src/training/inference.py,包含 tokenizer detokenize 及子进程管理等修复;如使用最新 SGLang,部分补丁可忽略但建议保持一致性。
  • 如果使用自定义 Task/Record 结构,请确保 Mongo 索引与文档模型同步更新。

许可证

本项目采用 Apache 2.0 许可证。详情请参阅 LICENSE 文件。