需先装与 Python 版本匹配的 flash-attn 预编译 wheel,否则会从源码编译;默认推理后端为 SGLang,改用 vLLM 需替换 pyproject.toml 与 uv.lock;训练脚本会自动下载 gsm8k 数据集和 Qwen2-1.5B-Instruct 模型,需保证网络与存储可用
AReaL
areal-projectApache-2.0活跃维护把强化学习接到 LLM Agent 应用上的训练框架,让 Agent 能在真实任务中通过 RL 持续优化策略,配置简单、扩展灵活。
The RL Bridge for LLM-based Agent Applications. Made Simple & Flexible.
uv pip install "https://github.com/mjun0812/flash-attention-prebuild-wheels/releases/download/v0.7.16/flash_attn-2.8.3+cu128torch2.9-cp312-cp312-linux_x86_64.whl"
uv sync --extra cuda
python3 examples/math/gsm8k_rl.py --config examples/math/gsm8k_grpo.yaml scheduler.type=localREADME 未明确给出显存要求;支持 CUDA GPU,另有 ascend 分支支持华为昇腾 NPU,示例脚本可在单节点运行,也支持 Ray 多节点集群
面向 LLM Agent 应用的大规模异步强化学习训练框架,替换 base_url 即可接入
把强化学习接到 LLM Agent 应用上的训练框架,让 Agent 能在真实任务中通过 RL 持续优化策略,配置简单、扩展灵活。
核心能力
- 全异步 RL 训练范式,稳定且速度领先
- 替换 base_url 即可为黑盒 Agent 应用做在线 RL
- 2.0 拆分为训练、推理、Agent、权重更新微服务
- 内置 GRPO、PPO、DAPO、GSPO 等多种算法示例
- 支持 SGLang 与 vLLM 两种推理后端
容易踩的坑
- v2.1.1最新正式版2026-11-04 · 2026-11-04 06:25 UTC
What's Changed
- ci: move Docker builder to us-central1-a by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1640
- fix(trainer): run initial evaluation before first update by @harooos in https://github.com/areal-project/AReaL/pull/1636
- gov: add Le8r0nJames to codeowned scopes by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1641
- feat(workflow): support multimodal agent trajectories by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1606
- fix(infra): prevent leaks after RTensor delete failures by @primorLee in https://github.com/areal-project/AReaL/pull/1633
- perf(engine): stream Megatron microbatches from CPU by @daihaowz in https://github.com/areal-project/AReaL/pull/1622
- fix(ppo): track trajectory truncation explicitly by @harooos in https://github.com/areal-project/AReaL/pull/1637
- feat: add Bailing V3 SWE SFT support by @dingzhiqiang in https://github.com/areal-project/AReaL/pull/1598
- fix(infra): bind forked workers to reserved ports by @yulangz in https://github.com/areal-project/AReaL/pull/1657
- perf: reduce duplicated VLM rollout processing and transfers by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1671
- feat: add MTP training with speculative decoding rollout by @HT-Yuan in https://github.com/areal-project/AReaL/pull/1659
- feat(trainer): add multi-objective policy distillation by @yulangz in https://github.com/areal-project/AReaL/pull/1592
- fix(dataset): align VLM SFT loss masks with responses by @CharlesXu-HQ in https://github.com/areal-project/AReaL/pull/1679
- docs: repoint doc links left behind by the bilingual docs split by @tonydzi in https://github.com/areal-project/AReaL/pull/1685
- feat(platforms): add ROCm platform support for AMD GPUs by @Vivicai1005 in https://github.com/areal-project/AReaL/pull/1677
- fix(recover): publish immutable checkpoints via latest pointer by @Le8r0nJames in https://github.com/areal-project/AReaL/pull/1616
- feat: harden Ray and SWE training workflows by @fishcrap in https://github.com/areal-project/AReaL/pull/1696
- feat(infra): publish inference metrics discovery targets by @daihaowz in https://github.com/areal-project/AReaL/pull/1700
- feat: add process rewards for agent training by @dingzhiqiang in https://github.com/areal-project/AReaL/pull/1701
- feat(engine): support Bailing V3 RL with NCCL weight updates by @dingzhiqiang in https://github.com/areal-project/AReaL/pull/1683
- feat: add Arena single- and multi-stream rollouts by @yulangz in https://github.com/areal-project/AReaL/pull/1702
- fix(utils): resolve test model paths lazily by @EazyReal in https://github.com/areal-project/AReaL/pull/1568
- fix(engine): make ragged transport padding objective-safe by @EazyReal in https://github.com/areal-project/AReaL/pull/1566
- feat: support Qwen3.5 hybrid AWEX training and SWE data by @dingzhiqiang in https://github.com/areal-project/AReaL/pull/1703
- build: remove unused blosc dependency by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1707
- fix(rollout): train safely on incomplete groups by @EazyReal in https://github.com/areal-project/AReaL/pull/1563
- feat(v2): enable multimodal processor in the data proxy by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1694
- fix(trainer): release evaluation RTensors after use by @zhuqiweigit in https://github.com/areal-project/AReaL/pull/1716
- fix(utils): handle time checks without distributed init by @Andrew9603 in https://github.com/areal-project/AReaL/pull/1715
- fix(workflow): account for thinking prefill in Geometry3K rewards by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1708
- fix(v2): preserve per-interaction agent rewards by @hsusul in https://github.com/areal-project/AReaL/pull/1662
- docs: document Qwen3.5 and Bailing V3 support by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1718
- test: align dispatcher and VLM tests with cur
- v2.1.02026-08-25 · 2026-08-25 10:23 UTC
查看更新说明
What's Changed
- chore(swe): remove unused SWE SFT dataset loader by @Le8r0nJames in https://github.com/areal-project/AReaL/pull/1467
- fix(docker): rename zeroclaw installer flag to --skip-quickstart by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1469
- fix(megatron): use dp_reshardable optimizer sharding and load optimizer state correctly by @Le8r0nJames in https://github.com/areal-project/AReaL/pull/1468
- fix(hermes): preserve singleton online reward signal by @jszzr in https://github.com/areal-project/AReaL/pull/1474
- fix(mcore): TP-shard GroupRMSNorm gate-norm weight for DCP checkpointing by @Le8r0nJames in https://github.com/areal-project/AReaL/pull/1470
- fix(rollout): stop controller-managed workers from dp-scaling staleness capacity by @Le8r0nJames in https://github.com/areal-project/AReaL/pull/1471
- fix(v2): export local workflow statistics by @jszzr in https://github.com/areal-project/AReaL/pull/1478
- docs: update NPU installation guide for ascend-v1.0.4 by @Adiactive in https://github.com/areal-project/AReaL/pull/1502
- Docs: Update README and cli docs by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1521
- fix(engine): route text-only VLM microbatches through the padded forward by @Adiactive in https://github.com/areal-project/AReaL/pull/1529
- fix: align CP metrics and TP grad norm metadata by @yulangz in https://github.com/areal-project/AReaL/pull/1497
- feat(infra): add HTTP-based Ray Scheduler by @HwVanICI in https://github.com/areal-project/AReaL/pull/1441
- fix(data_proxy): require admin key for /register_model to prevent SSRF by @sebastionoss in https://github.com/areal-project/AReaL/pull/1550
- test(inference-service): send admin key in data proxy register_model tests by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1556
- fix(inference): reject incomplete sampling evidence by @EazyReal in https://github.com/areal-project/AReaL/pull/1554
- fix(proxy): drop retry-orphan completions to prevent trajectory split by @yulangz in https://github.com/areal-project/AReaL/pull/1498
- fix(tests): assert all_gather_param passthrough by storage identity by @Le8r0nJames in https://github.com/areal-project/AReaL/pull/1562
- feat(rollout): add grouped reward normalization controls by @dingzhiqiang in https://github.com/areal-project/AReaL/pull/1516
- feat(vlm): add Qwen3.6 LoRA GRPO training support for 27B and 35B-A3B by @Lei00764 in https://github.com/areal-project/AReaL/pull/1444
- fix(engine): gate per-PP weight sync on SGLang backend by @koladefaj in https://github.com/areal-project/AReaL/pull/1564
- docs: allow ray scheduler in agent workflow compatibility notes by @wuallen57730 in https://github.com/areal-project/AReaL/pull/1567
- fix(rollout): attribute output tokens to the serving version by @Le8r0nJames in https://github.com/areal-project/AReaL/pull/1569
- fix(engine): engage Megatron deterministic mode before model build by @Le8r0nJames in https://github.com/areal-project/AReaL/pull/1544
- fix: emit PEFT-standard disk LoRA adapter keys so vLLM can load them (incl. #1577) by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1579
- feat(examples): add SGLang patch enabling Bailing hybrid radix cache by @Le8r0nJames in https://github.com/areal-project/AReaL/pull/1573
- fix(openai): align proxy tool schemas with sglang chat-completions rendering by @Le8r0nJames in https://github.com/areal-project/AReaL/pull/1499
- feat(mcore): apply fp32 lm head forward when enabled by @Le8r0nJames in https://github.com/areal-project/AReaL/pull/1574
- feat(ppo): report rejection-aware token and log-prob statistics by @Le8r0nJames in https://github.com/areal-project/AReaL/pull/1572
- fix(infra): fail fast when a local inference server dies during launch by @Le8r0nJames in https://github.com/areal-project/AReaL/pull/1545
- perf: reduce Megatron training memory peaks by @yulangz in https://github.com/areal-project/AReaL/pull/1555
- feat(col
- v2.0.02026-07-01 · 2026-07-01 16:23 UTC
查看更新说明
🚀 Key Highlights
Micro-service Architecture
Includes training, inference, agent, and weight update services.
Hermes Agent Example
End-to-end agent built on the agent service and wired into the 2.0 training loop. Check out the Hermes RL training example for more details.
CLI Commands
A unified
arealCLI to launch, manage, and operate each micro-service. See the per-service guides: training, inference, agent.What's Changed
- perf(infra): pipeline controller initialization with background threads by @garrett4wade in https://github.com/areal-project/AReaL/pull/1294
- ci: add nightly workflow for long-running tests by @garrett4wade in https://github.com/areal-project/AReaL/pull/1312
- feat: support pp for Sglang by @TaoZex in https://github.com/areal-project/AReaL/pull/1162
- perf(archon): parallelize inference controller initialization by @garrett4wade in https://github.com/areal-project/AReaL/pull/1314
- fix(archon): improve HTTP client reliability and reduce logging verbosity by @garrett4wade in https://github.com/areal-project/AReaL/pull/1315
- refactor(experimental): remove redundant capacity grant from inference service by @garrett4wade in https://github.com/areal-project/AReaL/pull/1318
- refactor(experimental): add unified group semantics to inference service session lifecycle by @garrett4wade in https://github.com/areal-project/AReaL/pull/1321
- chore: migrate repo references from InclusionAI to areal-project by @garrett4wade in https://github.com/areal-project/AReaL/pull/1325
- fix(proxy): refuse default admin API key on non-loopback bind by @sebastiondev in https://github.com/areal-project/AReaL/pull/1323
- refactor: consolidate admin key validation into shared helper by @garrett4wade in https://github.com/areal-project/AReaL/pull/1328
- fix: Add error detection function and test for ZeroDivisionError and other errors alike by @chenzhiyi021 in https://github.com/areal-project/AReaL/pull/1332
- docs: Add OpenSSF Best Practices badge to README 📛 by @mingcheng in https://github.com/areal-project/AReaL/pull/1348
- gov: add new maintainer by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1349
- fix(utils): mask 2d sequence advantages by @haoyang9804 in https://github.com/areal-project/AReaL/pull/1346
- feat(awex): add colocated CUDA IPC weight transfer by @garrett4wade in https://github.com/areal-project/AReaL/pull/1310
- fix(infra): correct staleness capacity inflation after recovery by @daihaowz in https://github.com/areal-project/AReaL/pull/1345
- fix(test): add missing colocate field to wu_controller connect tests by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1357
- refactor(infra): backport rl infra cleanup by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1353
- feat(megatron): implement async_save with AsyncCallsQueue by @dingzhiqiang in https://github.com/areal-project/AReaL/pull/1356
- feat: controller v2 refactor by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1354
- fix(fsdp): maintain fp32 master weights for AdamW (#1292) by @guozhihao-224 in https://github.com/areal-project/AReaL/pull/1369
- chore: add 0516 community meeting materials and update agenda for the next biweekly sync by @sitabulaixizawaluduo in https://github.com/areal-project/AReaL/pull/1371
- doc
- v1.0.42026-05-07 · 2026-05-07 08:30 UTC
查看更新说明
What's Changed
- fix: FSDP initialization for set-valued wrap class names by @Wangxiaoxiaoa in https://github.com/inclusionAI/AReaL/pull/1187
- chore: move figures into assets/figures/ and add community meeting folder by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1192
- feat(engine): lora support for MoE models (single node/ cross node) by @gursimar in https://github.com/inclusionAI/AReaL/pull/1159
- fix: handle integer device ids in ray rpc server by @Wangxiaoxiaoa in https://github.com/inclusionAI/AReaL/pull/1199
- chore: add @CormickKneey as maintainer and agent_service codeowner by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1201
- fix: serialize ray object refs in rpc payloads by @Wangxiaoxiaoa in https://github.com/inclusionAI/AReaL/pull/1198
- Fix:fix data service failures in IPv6-only environments with HTTP proxy by @TaoZex in https://github.com/inclusionAI/AReaL/pull/1208
- feat(service): add external model API support for inference service by @nuzant in https://github.com/inclusionAI/AReaL/pull/1183
- feat: add scaffolding rollout workflow by @WeiHaocheng in https://github.com/inclusionAI/AReaL/pull/1064
- feat(api): add unified RejectionSamplingConfig for async training by @guozhihao-224 in https://github.com/inclusionAI/AReaL/pull/1088
- feat(engine): Add Karmarkar-Karp algorithm by @TaoZex in https://github.com/inclusionAI/AReaL/pull/1151
- fix(infra): move data service seed to worker-level config by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1210
- docs(community): add first biweekly meeting record and news entry by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1215
- chore: update tencent meeting link by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1219
- chore: add new maintainers by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1220
- refactor(archon): extract inference bridge backends into sglang/vllm submodules by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1221
- gov: add maintainer and refine commit convention by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1227
- feat: add awex backend for weight update by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1214
- chore(deps): upgrade awex to 0.7.0 by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1228
- perf(trainer): reduce redundant offload/onload transitions in training loop by @yxs in https://github.com/inclusionAI/AReaL/pull/1163
- feat(eval): support for running eval before training by @gursimar in https://github.com/inclusionAI/AReaL/pull/1232
- gov: add new maintainer by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1234
- gov: add new maintainer by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1235
- feat: CP-local loss and configurable CUDA memory profiling by @yulangz in https://github.com/inclusionAI/AReaL/pull/1223
- feat: implement megatron weight update with awex by @ran-yan-hk in https://github.com/inclusionAI/AReaL/pull/1239
- feat: add disk-mode weight update flow to gateway by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1237
- feat(example): add Terminal Bench training example by @ActuallyEdward in https://github.com/inclusionAI/AReaL/pull/1224
- gov: update maintainer note by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1248
- feat: Implement Megatron PP and CP with Awex for Weight Update by @ran-yan-hk in https://github.com/inclusionAI/AReaL/pull/1246
- feat(trainer): add dpo by @HT-Yuan in https://github.com/inclusionAI/AReaL/pull/1190
- chore: add uv lock check in pre-commit hooks by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1259
- chore(deps): upgrade mbridge from 0.15.1 to 310e8fb by @Adiactive in https://github.com/inclusionAI/AReaL/pull/1258
- fix(docker): move venv out of /AReaL to avoid mount override by @sitabulaixizawaluduo in https://github.com/inclusionAI/AReaL/pull/1251
- v1.0.32026-04-16 · 2026-04-16 12:00 UTC
查看更新说明
What's Changed
- chore(docker): add openclaw, ironclaw, zeroclaw, and nanobot-ai to runtime image by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1051
- feat(agent-service): add Agent Service microservice infrastructure by @CormickKneey in https://github.com/inclusionAI/AReaL/pull/1048
- feat(gateway): Add rollout gateway infrastructure with controller, router, and data proxy by @nuzant in https://github.com/inclusionAI/AReaL/pull/1043
- feat: estimators for kl divergence by @NicolasArias in https://github.com/inclusionAI/AReaL/pull/1060
- test(infra): speed up inference service integration tests by @nuzant in https://github.com/inclusionAI/AReaL/pull/1068
- fix(infra): simplify RTensor serialization in data proxy by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1067
- fix(rpc): resolve connection reset during RTensor fetch with large payloads by @pratyush618 in https://github.com/inclusionAI/AReaL/pull/1075
- docs: add gitcgr code graph badge by @vitali87 in https://github.com/inclusionAI/AReaL/pull/1073
- fix(openai): handle streaming responses in chat/completions endpoint by @Zijun9 in https://github.com/inclusionAI/AReaL/pull/1053
- fix: add PIL image and processor serialization for VLM RPC by @Adiactive in https://github.com/inclusionAI/AReaL/pull/1070
- refactor(api): migrate allocation_mode to per-engine backend fields by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1044
- chore(agents): add Codex harness and align AI workflows by @rchardx in https://github.com/inclusionAI/AReaL/pull/1082
- feat(platform): add NUMA CPU affinity binding for training engines by @HT-Yuan in https://github.com/inclusionAI/AReaL/pull/1083
- feat(commands): add fork workflow support to create-pr skill by @guozhihao-224 in https://github.com/inclusionAI/AReaL/pull/1092
- fix(rpc): batch HTTP RTensor fetches for large multimodal batches by @Wangxiaoxiaoa in https://github.com/inclusionAI/AReaL/pull/1077
- fix(fsdp): stabilize Qwen-VL rope-index argument binding and dtype by @Adiactive in https://github.com/inclusionAI/AReaL/pull/1094
- Refactor(vllm): use pause_generation from vllm instead of abort_all_req in areal_vllm_server by @HwVanICI in https://github.com/inclusionAI/AReaL/pull/1091
- feat: add BailingMoeV2.5 support with Lightning Attention + MLA + MoE + CP by @dingzhiqiang in https://github.com/inclusionAI/AReaL/pull/1079
- feat:support model training in IPv6-only environment by @TaoZex in https://github.com/inclusionAI/AReaL/pull/1072
- fix: fix
pad_packed_tensor_dictby @HKAB in https://github.com/inclusionAI/AReaL/pull/1104 - feat: megatron bridge adaptation by @gursimar in https://github.com/inclusionAI/AReaL/pull/1056
- fix(engine): remove duplicate trust_remote_code kwarg in MegatronBridge init by @rchardx in https://github.com/inclusionAI/AReaL/pull/1107
- fix(dataloader): prevent data drop and padding during validation for accurate metrics by @Anguo-star in https://github.com/inclusionAI/AReaL/pull/1100
- fix(archon): add missing POST /data/batch endpoint to data proxy by @rchardx in https://github.com/inclusionAI/AReaL/pull/1105
- refactor(engine): abstract CUDA calls via current_platform in PerLayerOptimWrapper by @guozhihao-224 in https://github.com/inclusionAI/AReaL/pull/1108
- perf(fsdp): pipeline distributed weight sync with a single pending bucket by @HT-Yuan in https://github.com/inclusionAI/AReaL/pull/1074
- fix(engine): restore SGLang VLM training by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1098
- feat(archon): add FP8 blockwise training support by @rchardx in https://github.com/inclusionAI/AReaL/pull/1087
- chore(ci): update GCP CI image by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1115
- feat(inference-service): complete vLLM backend support in inference service by @garrett4wade in https://github.com/inclusionAI/AReaL/pull/1112
- fix(archon): harden FP8 blockwise training for TP and MoE scenarios by @rchard
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
AReaL is a reinforcement learning (RL) infrastructure designed to bridge foundation model training with modern agent-based applications. It was originally developed by researchers and engineers from Tsinghua IIIS and the AReaL Team at Ant Group.
Built on a fully asynchronous RL training paradigm, AReaL is optimized for efficiency and scalability, making it particularly well-suited for training large-scale reasoning and agentic models.
AReaL’s mission is to make building AI agents accessible, efficient, and cost-effective for a broad community of developers and researchers.
Like milk tea - customizable, scalable, and enjoyable - we hope AReaL brings both flexibility and delight to your AI development experience. Cheers!
AReaL Highlights
- ⚡ Flexibility: Seamless customization for
agentic RL and
online RL training for
black-box agent applications by simply replacing the
base_url. - 📈 Scalability: Stable fully asynchronous RL training with industry-leading speed.
- ✨ Cutting-Edge Performance: State-of-the-art math, coding, search, and customer service agents.
📰 News
[2026/07/01] 🎉 We release AReaL 2.0, a major architectural milestone. This release refactors AReaL into a microservice architecture with independent training, inference, agent, and weight-update services, and ships the Hermes online RL loop and end-to-end SWE RL training examples. Check out our technical report.
[2026/06/17] 🔬 Introducing KPop — bidirectional binary KL divergence token
masking. Configured via rejection_sampling.metric=binary_kl. Also adding an
IcePop config (importance-ratio-based token masking).
Check out gsm8k_kpop.yaml and
gsm8k_icepop.yaml to get started!
[2026/04/23] 🚀 We’re excited to release our integration with Scaffoldings for agentic RL training - now live in our examples! Huge shoutout to @narutolhy and @WeiHaocheng for making this happen 🙌. The modular design of the Scaffoldings enables it to achieve a thorough decoupling of agent execution, reward calculation, and trajectory acquisition. This enables developers to reuse existing modules when implementing an agentic RL method, allowing them to focus on their own innovative modules.
[2026/04/18] We are thrilled to announce that AReaL's first Community Biweekly Meeting was successfully held! Thank you to everyone who joined us. Meeting materials are now available here. Our next meeting is scheduled for 2026/05/01 and will also be conducted in Chinese; English-language meetings will be scheduled in the future. We warmly welcome everyone to participate! See Community for more details.
[2026/03/02] We provide a complete example to train your
own 🦞 OpenClaw agent by simply replacing the base_url and api_key with AReaL's RL
service - no complicated dependencies, no code changes, works with any agentic runtime!
[2026/02/06] We are delighted to introduce AReaL-SEA, a self-evolving data synthesis engine. Combined with RL training on AReaL, the 235B MoE model surpasses GPT 5 and achieves comparable performance with Gemini 3.0 Pro on $\tau^2$-bench! Check out the paper, model, data, and code.
[2026/01/15] Congrats to our friends at CAMEL-AI for open-sourcing SETA, their terminal agent RL project trained with AReaL! Check out their training workflow and the announcement on X.
[2026/01/01] Happy New Year! Thanks to the outstanding contribution from
@HwVanICI, we are excited to officially announce stable support for AReaL training on
Huawei Ascend NPU devices! The code is actively maintained and continuously updated
in the ascend branch. Check out
our documentation
to get started, and feel free to report any issues!
[2025/08/30] Introducing ASearcher, a state-of-the-art search agent built with AReaL's end-to-end asynchronous RL training. Check out the paper and the open-source repository!
[2025/07/31] (AReaL-lite) We introduce AReaL-lite, a lightweight version of AReaL designed specifically for AI researchers and rapid prototyping. AReaL-lite features an algorithm-first API design that prioritizes ease of use and algorithm development, while natively supporting fully asynchronous agentic RL. With 80% fewer lines of code, AReaL-lite maintains 90% of AReaL's performance and core functionality. Check out our documentation and the quickstart guide to begin your journey with AReaL-lite!
[2025/06/03] (v0.3, boba²) We release boba² (double-boba) for fully asynchronous RL training, which achieves 2.77× speedup while delivering comparable or superior training performance compared to synchronous systems. Furthermore, asynchronous RL significantly simplifies multi-turn agentic RL training setup! Check out our v0.3 overview blog and the research paper.
[2025/03/31] (v0.2, boba) Introducing our milestone release—boba! Please call it A-ReaL-boba! This release features significantly faster training with SGLang support and state-of-the-art 7B and 32B models for mathematical reasoning. Check out our v0.2 technical blog.
[2025/02/24] (v0.1) Our initial release includes reproducible results for 1.5B and 7B Large Reasoning Models (LRMs). Check out our v0.1 technical blog.
🚀 Getting Started
First, install the package:
git clone https://github.com/areal-project/AReaL
cd AReaL
pip install uv
# Install flash-attn pre-built wheel first to avoid compiling from source
# (pick the wheel matching your Python version; see https://github.com/mjun0812/flash-attention-prebuild-wheels/releases)
uv pip install "https://github.com/mjun0812/flash-attention-prebuild-wheels/releases/download/v0.7.16/flash_attn-2.8.3+cu128torch2.9-cp312-cp312-linux_x86_64.whl"
uv sync --extra cuda # installs training packages + SGLang (default inference backend)
# For vLLM instead: cp pyproject.vllm.toml pyproject.toml && cp uv.vllm.lock uv.lock && uv sync --extra cuda
Our training scripts automatically download the required dataset (openai/gsm8k) and model (Qwen/Qwen2-1.5B-Instruct). To run on a single node:
python3 examples/math/gsm8k_rl.py --config examples/math/gsm8k_grpo.yaml scheduler.type=local
If you prefer to run experiments on a Ray cluster, update paths in the YAML file to point to your shared storage, and run:
python3 examples/math/gsm8k_rl.py --config examples/math/gsm8k_grpo.yaml \
cluster.n_nodes=2 cluster.n_gpus_per_node=8 \
cluster.fileroot=/path/to/nfs \
scheduler.type=ray
For comprehensive setup instructions, see our quickstart guide.
For Megatron MoE router replay experiments, see the R3 Router Replay guide.
📚 Examples
Math & Reasoning
| Task | Description | Performance |
|---|---|---|
| Math | GSM8K math reasoning with GRPO, PPO, DAPO, REINFORCE, RLOO, LitePPO, DR-GRPO, GSPO, and more | - |
| Multi-Turn Math | Multi-turn math agent with reward discounting across turns | Training Curve |
| LoRA Math | Parameter-efficient math training with LoRA (SGLang/vLLM backends) | - |
| Countdown | Countdown numbers game with custom rewards | Training Curve |
Agentic RL
| Task | Description | Performance |
|---|---|---|
| General Agent | General agentic training with any agentic frameworks | Guide |
| Hermes Online RL | End-to-end Online RL loop with Hermes agent under AReaL 2.0 | Guide |
| Coding Agent RL | End-to-end coding-agent RL training with AReaL-SWEAgent/Claude Code Agent | Guide |
| Tau2 Customer Service | Customer service agent on Tau2-Bench (retail, airline, telecom) | Paper |
| Search Agent | End-to-end search agent with Tongyi-DeepResearch workflow | Training Curve |
| Tool-Integrated Reasoning | Multi-turn tool calling during reasoning (Python executor, calculator) | Training Curve |
| OpenAI Agents Integration | Integration with OpenAI Agents SDK for agentic workflows | - |
| CAMEL-AI Integration | Integration with CAMEL-AI framework for agentic RL | - |
Vision-Language Models
| Task | Description | Performance |
|---|---|---|
| VLM | Geometry3K and CLEVR Count 70K visual reasoning with GRPO | - |
| VLM on NPU | VLM training on Huawei NPU hardware | Benchmark Results |
Alignment & Infrastructure
| Task | Description | Performance |
|---|---|---|
| RLHF Reward Modeling | Bradley-Terry reward modeling on Anthropic HH-RLHF | Training Curve |
| SkyPilot Deployment | Cloud deployment with SkyPilot (GCP, AWS, Kubernetes) | Screenshots |
🔧 Support Matrix
🧠 Algorithms
All RL algorithms support both asynchronous and synchronous versions by setting
max_head_offpolicyness=0. See Asynchronous RL Guide.
| Algorithm | Documentation | Paper | Configuration |
|---|---|---|---|
| GRPO | 📖 Docs | 📄 Paper | 🔗 GSM8K Example |
| GSPO | 📖 Docs | 📄 Paper | 🔗 GSM8K Example |
| PPO | 📖 Docs | 📄 Paper | 🔗 GSM8K Example |
| DAPO | 📖 Docs | 📄 Paper | 🔗 GSM8K Example |
| LitePPO | 📖 Docs | 📄 Paper | 🔗 GSM8K Example |
| Dr.GRPO | 📖 Docs | 📄 Paper | 🔗 GSM8K Example |
| REINFORCE++ | - | 📄 Paper | 🔗 GSM8K Example |
| RLOO | 📖 Docs | 📄 Paper | 🔗 GSM8K Example |
| SAPO | 📖 Docs | 📄 Paper | 🔗 GSM8K Example |
| IcePop | 📖 Docs | 📄 Blog | 🔗 GSM8K Example |
| KPop | 📖 Docs | 📄 Blog | 🔗 GSM8K Example |
| M2PO | 📖 Docs | 📄 Paper | 🔗 GSM8K Example |
| DPO | 📖 Docs | 📄 Paper | 🔗 HH-RLHF Example |
| RLHF Reward Modeling | - | - | 🔗 RLHF Example |
| SFT | - | - | 🔗 GSM8K Example |
| Distillation | 📖 Docs | 📄 Paper | 🔗 GSM8K Example |
Models
| Model Family | Megatron | PyTorch FSDP | PyTorch Archon | Notes |
|---|---|---|---|---|
| Qwen2/3 | ✅ | ✅ | ✅ | - |
| Qwen3-MoE | ✅ | ✅ | ✅ | - |
| Qwen3.5 | ✅ | ✅ | ❌ | Vision-language model |
| Qwen3.5-MoE | ✅ | ✅ | ❌ | Vision-language model |
| Bailing V3 | ✅ | ❌ | ❌ | - |
| Qwen2.5-VL | ✅ | ✅ | ❌ | Vision-language model |
| Qwen3-VL | ✅ | ✅ | ❌ | Vision-language model |
| Gemma 3 | ❌ | ✅ | ❌ | Vision-language model |
| Other Hugging Face LLM | ❌ | ✅ | ❌ | Compatibility depending on the version of transformers |
Qwen2 and Qwen2.5 text models support RL weight updates with
actor.weight_update_mode=disk in both v1 and v2. XCCL weight updates require
actor._version=v1, rollout._version=v1, and actor.weight_update_mode=xccl. AWEX
weight updates are not supported for these models. This restriction does not apply to
Qwen2.5-VL.
Check the AI Coding Assistant Guide and Archon Reference for how to integrate new models into AReaL.
Training Backends
| Backend | DP | Tensor Parallel | Sequence Parallel within TP | Context Parallel | Pipeline Parallel | Expert Parallel | 1D Sequence Packing | LoRA |
|---|---|---|---|---|---|---|---|---|
| Megatron | ✅ (ZeRO-1) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (with vLLM inference backend) |
| PyTorch FSDP | ✅ (FSDP2) | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ |
| PyTorch Archon | ✅ (FSDP2) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
Inference Backends
| Backend | Tensor Parallel | Context Parallel | Pipeline Parallel | Data Parallel Attention | Expert Parallel |
|---|---|---|---|---|---|
| vLLM | ✅ | ❓ | ✅ | ❓ | ❓ |
| SGLang | ✅ | ❌ | ❌ | ✅ | ✅ |
📖 Resources
Tutorial
- Installation
- Quickstart
- AReaL CLI Guide
- Agentic RL
- Evaluation
- Large MoE with Megatron
- Large MoE with PyTorch Archon
Code Walkthrough
Best Practices
- Improving Algorithm Performance
- Agent Workflow Best Practices
- Debugging
- Handling OOM Issues
- Performance Profiling
Customization
Algorithms
Reference
- CLI Configurations
- LoRA RL
- Checkpointing
- Metrics Tracking
- Allocation Mode
- Rollout Workflow
- Agent Workflow
- AI-Assisted Development
🤝 Contributing
We warmly welcome contributions from the community! Whether you're fixing bugs, adding features, improving documentation, or helping others, your contribution is valued. Please check our Contributing Guide for detailed information.
# Fork and clone the repository
git clone https://github.com/YOUR-USERNAME/AReaL
cd AReaL
# Install uv and sync dependencies
pip install uv
# Install flash-attn pre-built wheel to avoid compiling from source
uv pip install "https://github.com/mjun0812/flash-attention-prebuild-wheels/releases/download/v0.7.16/flash_attn-2.8.3+cu128torch2.9-cp312-cp312-linux_x86_64.whl"
# Use `--extra cuda` on Linux with CUDA (installs training packages + SGLang)
uv sync --extra cuda --group dev
# For vLLM instead:
# cp pyproject.vllm.toml pyproject.toml && cp uv.vllm.lock uv.lock && uv sync --extra cuda --group dev
# Or without CUDA support
# uv sync --group dev
# Set up pre-commit hooks (formatting, linting, commit message checks)
pre-commit install --install-hooks
# Make changes
git checkout -b feat/gpt-o5
git add .
# `git commit` will automatically check your files and commit messages
git commit -m "feat: implement gpt-o5 training loop"
git push
🗺️ Future Roadmap
AReaL is under active development with planned minor releases weekly and major releases monthly. We warmly welcome community engagement and contributions. We are also actively hiring interns and full-time employees with open positions in both the US and China.
📢 Community
We warmly welcome everyone to join our community! We have a WeChat group for real-time discussions and a GitHub discussion board for asynchronous conversations.
Check out our Community Repository for more details and meeting materials.
🙏 Acknowledgments
We gratefully acknowledge that major contributors are from the AReaL Team at the Institute for Interdisciplinary Information Sciences (IIIS), Tsinghua University and Ant Group.
We have also received invaluable assistance from the following groups (listed alphabetically):
-
The Data Intelligence Lab at Ant Research for their data support
-
@HwVanICI for support on vLLM, LoRA, NPU integration, and more
-
The Relaxed System Lab at HKUST for seamless collaboration on numerous system-related aspects
-
The SGLang team for supporting custom weight update features and their contributions during AReaL-lite development
-
The Super Computing Technology (SCT) team at Ant Group for their expertise in large-scale cluster operations and maintenance
-
Special thanks to @Lyken17 for providing valuable suggestions throughout the API design process
We also deeply appreciate all pioneering work from the community, particularly the ReaLHF project from OpenPsi Inc. and other outstanding projects, including but not limited to DeepScaleR, Open-Reasoner-Zero, OpenRLHF, VeRL, SGLang, QwQ, Light-R1, and DAPO.
📜 License
This project is licensed under the Apache License 2.0.
📄 Citation
@inproceedings{mei2025real,
author = {Mei, Zhiyu and Fu, Wei and Li, Kaiwei and Wang, Guangju and Zhang, Huanchen and Wu, Yi},
title = {ReaL: Efficient RLHF Training of Large Language Models with Parameter Reallocation},
booktitle = {Proceedings of the Eighth Conference on Machine Learning and Systems,
MLSys 2025, Santa Clara, CA, USA, May 12-15, 2025},
publisher = {mlsys.org},
year = {2025},
}
@misc{fu2025areal,
title={AReaL: A Large-Scale Asynchronous Reinforcement Learning System for Language Reasoning},
author={Wei Fu and Jiaxuan Gao and Xujie Shen and Chen Zhu and Zhiyu Mei and Chuyi He and Shusheng Xu and Guo Wei and Jun Mei and Jiashu Wang and Tongkai Yang and Binhang Yuan and Yi Wu},
year={2025},
eprint={2505.24298},
archivePrefix={arXiv},
primaryClass={cs.LG},
url={https://arxiv.org/abs/2505.24298},
}