v1.0.0
馃殌 Key Highlights
Release Notes
Online RL Training
- Seamlessly train any agents by configuring a
base_urlandapi_key鈥攏o code changes required and no heavy dependencies. - Check out the OpenClaw RL training example for more details.
Archon Engine
- A fully working, PyTorch-native 5D parallel training engine.
- Includes features like:
- Automatic HF format conversion
- Zero-bubble pipelining
- torch.compile
- FSDP (Fully Sharded Data Parallel)
- Selective activation support
AI-Assisted Coding
- Official commands and skills to streamline development and enable easy customization.
Infrastructure Upgrade
- Transition from the previous SPMD architecture to a more efficient single-controller architecture.
uv Installation Support
- Easily set up training environments by running the simple command:
uv sync.
What's Changed
- feat: replace legacy math parsing with math-verify by @rchardx in #739
- Add installation instructions for Ascend NPU by @HwVanICI in #748
- [Bug Fix] Fix Tools compatibility, max_token restrictions, and EOS token issues in Proxy mode by @yulangz in #736
- refactor: modify engine and controllers to support the single-controller mode with the same trainer by @garrett4wade in #753
- VLM Training on NPU by @HwVanICI in #746
- refactor: move device utilities to platform classes and io_struct by @garrett4wade in #757
- Fix: Implement get_device_stats() for train_controller by @HwVanICI in #762
- refactor: single-source task_id generation in submit methods by @garrett4wade in #759
- [Bug Fix] Camel example with wrong and missing agent arguments by @HwVanICI in #766
- feat: use
name_resolvefor worker discovery and fix perf_tracer in the single-controller mode by @garrett4wade in #764 - [Feature] Implement Single-Controller XCCL Weight Update by @HwVanICI in #754
- feat: Implement slurm scheduler by @garrett4wade in #767
- Ray Scheduler Implementation for Single Controller by @HwVanICI in #741
- refactor: use callbacks to implement xccl weigh transfer and avoid busy waiting during rollout by @garrett4wade in #769
- [Testing] Update GCP image to accelerate CI testing by @nuzant in #772
- refactor: unifying launcher, scheduling spec, yaml configs, and training scripts by @garrett4wade in #770
- feat: improve logging by @garrett4wade in #771
- refactor: separate megatron imports and installation from FSDP by @garrett4wade in #773
- minor fix: vLLM LoRA request cleanup for issue #751 by @TinLongYu in #765
- fix: refactoring proximal logp recompute condition by @garrett4wade in #780
- [Feat] Add FP8 training support by @fishcrap in #758
- Enhance host IP detection in areal.utils.network by @HwVanICI in #778
- chore: remove the ad-hoc should_broadcast parameter in rpc servers by @garrett4wade in #774
- feat: support colocated engines in the single-controller mode by @garrett4wade in #779
- chore: update readme by @garrett4wade in #782
- docs: restructure AGENTS.md and add CLAUDE.md symlink by @rchardx in #783
- chore: Expose error when lauch sglang server by @ZiyiTsang in #781
- refactor: simplifying the implementation of customized workflow with context management by @garrett4wade in #785
- chore: Expose error when launching vllm server by @garrett4wade in #790
- refactor: allow dynamic batch size without the
dynamic_filteringfunction by @garrett4wade in #786 - fix: fix ray scheduler in the single-controller mode by @garrett4wade in #791
- fix inference engine addr resolving logic by @garrett4wade in #792
- chore: minor fix doc formula by @ZiyiTsang in #793
- doc: update docs for grpo and related algorithms by @garrett4wade in #794
- refactor: migrate grouped rollout from customized workflows to inference engines by @garrett4wade in #789
- Single-controller LoRA RL fine-tuning with vLLM by @gursimar in #735
- [Feature] Group-level data redistribution by @nuzant in #800
- critical fix: passing
is_evalandgroup_sizefrom rollout controller to engines by @garrett4wade in #801 - Update NPU doc by @HwVanICI in #803
- feat: add Archon Engine - PyTorch native FSDP2 training backend by @rchardx in #799
- [Feature] Tree training support (Megatron Engine) for agentic RL training by @nuzant in #804
- Add NPU RLVR example by @HwVanICI in #798
- [Bug Fix] XCCL weight synchronization fix for the single controller lora by @gursimar in #796
- [Bug Fix] Fix import error introduced by tree training PR by @nuzant in #808
- chore: remove legacy code, config, and documentation by @garrett4wade in #806
- fix: update tree_attn function name to patch_bridge_for_tree_training by @rchardx in #809
- fix: prevent fake PID killing in LocalScheduler tests by @rchardx in #810
- feat(archon): add torch.compile support and profiling tools by @rchardx in #807
- Add RayScheduler to sft.py by @HwVanICI in #814
- fix: add lm_head.weight into index when index file exists by @jwhj in #816
- feat: use subprocess to fork colocated workers by @garrett4wade in #815
- feat(archon): add Context Parallelism (Ulysses SP) support by @rchardx in #817
- refactor(data): simplify pad_mb_list alignment parameters by @rchardx in #820
- refactor: unify HTTP client management in workflow_context by @garrett4wade in #819
- feat(archon): enable TP + AC + compile compatibility with _WaitAsyncWrapper by @rchardx in #821
- [FEAT] Add direct TE FP8-PyTorch FP8 conversion by @fishcrap in #802
- refactor(core): simplify HTTP client lifecycle with event loop cleanup by @garrett4wade in #823
- feat: Add AgentWorkflow API and migrate workflow resolution to RemoteInfEngine by @garrett4wade in #825
- feat(scheduler): refactor fork_workers to public API with custom command support by @garrett4wade in #826
- [FIX] correct vLLM config defaults for chunked prefill and prefix caching by @fishcrap in #827
- refactor(openai): modularize proxy architecture and add inline mode by @garrett4wade in #829
- chore(doc): update readme by @garrett4wade in #830
- fix(test): Fix math-verify tests by @garrett4wade in #831
- feat(archon): add Expert Parallelism (EP) support for MoE models by @rchardx in #833
- fix(moe): correct histc max param by @rchardx in #835
- feat(archon): add explicit FSDP prefetching for EP by @rchardx in #834
- feat(archon): add EP-aware padding wrapper for MoE grouped_mm by @rchardx in #836
- testing: fix CI, skip tests that cannot run on A100 GPUs by @nuzant in #838
- feat(archon): add Expert Tensor Parallelism (ETP) support for MoE models by @rchardx in #839
- feat: support tree training for FSDP engine by @nuzant in #837
- fix: remove duplicate setup in gsm8k_rl by @v3nividiv1ci in #842
- refactor(archon): cleanup parallel dims and FSDP config for pipeline parallelism by @rchardx in #841
- refactor(tree_attn): decouple FSDP and Megatron implementations by @rchardx in #844
- feat(workflow): add Anthropic Messages API support for RL training by @fishcrap in #840
- Wht/fix/fix concat when end with eos and pad by @yulangz in #846
- [BugFix] VLM RLVR add reward func by @PopSoda2002 in #851
- [BugFix] Fix wandb bug by @PopSoda2002 in #852
- feat(archon): add DCP-based HF checkpoint save/load with MoE expert support by @rchardx in #849
- ci(docker): modernize dependency management and Docker build pipeline by @garrett4wade in #843
- Bump v0.5.2 by @garrett4wade in #855
- ci(fix): Fix the image tag upon release by @garrett4wade in #856
- Fix the loop exit condition in the agenerator by @yulangz in #858
- feat(launcher): auto-set OMP_NUM_THREADS based on cpus_per_task by @rchardx in #859
- feat(archon): use meta device + DCP for memory-efficient model init by @rchardx in #860
- feat(fsdp): add memory_efficient_load option for large model initialization by @rchardx in #862
- ci(docker): add DeepSeek-V3 kernels and modernize tooling by @fishcrap in #861
- feat(workflow): Add LangChain agent integration for training by @fishcrap in #865
- chore: add Claude Code configuration for AReaL by @rchardx in #866
- Bump v0.5.3 by @garrett4wade in #869
- fix(ci): use dev image for CI testing by @garrett4wade in #870
- feat(archon): add pipeline parallelism (PP) support for Archon engine by @rchardx in #864
- feat(utils): add dynamic PYTHONPATH in get_env_vars by @nuzant in #867
- chore(claude): refactor agent architecture and complete ecosystem by @rchardx in #873
- perf(tree_attn): Add lazy attention mask creation for tree training by @nuzant in #872
- chore(infra): consolidate infrastructure and add create-pr command by @garrett4wade in #875
- fix(scheduler): Fix SLURM scheduler
spec.imageandspec.additional_bash_cmdsarguments. by @nuzant in #876 - feat(archon): enable PP > 1 for RL training with XCCL weight sync by @rchardx in #877
- feat(tree_attn): implement Triton kernel by @alumkal in #874
- testing: update GCP image for CI by @nuzant in #881
- refactor(archon): extract runner and weight sync into separate modules by @rchardx in #882
- docs: streamline CLI usage and reorganize tutorials by @garrett4wade in #878
- fix(archon): enable torch.compile for attention_norm/ffn_norm by @rchardx in #886
- Revert "fix(archon): enable torch.compile for attention_norm/ffn_norm" by @rchardx in #887
- refactor(api): deprecate AgentWorkflow inheritance requirement by @garrett4wade in #883
- refactor: streamline CLI usage and remove unused files by @garrett4wade in #880
- refactor(archon): consolidate and simplify test suite by @rchardx in #888
- fix(tree_attn): Fix some bugs in tree training for FSDP and Megatron engines by @nuzant in #889
- fix(archon): skip output merge in PP schedule to halve memory usage by @rchardx in #890
- feat(workflow): add Anthropic Claude SDK integration for RL training by @fishcrap in #885
- docs: add checkpointing, metrics tracking, and workflow guides by @garrett4wade in #891
- docs: add agent workflow reference and update agentic RL docs by @garrett4wade in #893
- docs: add Important Metrics to Monitor section by @xssstory in #894
- feat(tau2): Add Tau2 agentic RL training example with proxy server by @nuzant in #892
- feat(archon): add Interleaved1F1B pipeline parallel schedule support by @rchardx in #895
- docs: add proxy architecture and dataflow diagrams by @fishcrap in #897
- build: migrate from setuptools to uv build backend by @garrett4wade in #899
- refactor(trainer): move trainer modules from experimental to areal/trainer by @garrett4wade in #896
- fix(datapack): use balanced greedy partition for equal DP batch splits by @garrett4wade in #898
- Fix update_weight_lora_xccl vllm 0.14.0 by @HwVanICI in #902
- docs: add Archon engine tutorial and AI-assisted development guide by @rchardx in #900
- docs: reorganize README and rename agent_workflow example by @garrett4wade in #903
- docs: add agent_workflow to table of contents by @fishcrap in #905
- Add qwen3-vl-dense support and example on Ascend by @HwVanICI in #868
- docs: improve grammar and clarity in debugging and OOM guides by @garrett4wade in #904
- feat(utils): add network filesystem validation for shared paths by @rchardx in #906
- docs: update roadmap to Q1 2026 and improve CI/CD documentation by @garrett4wade in #908
- feat(skills): add /add-archon-model skill for new model support by @rchardx in #914
- fix(ci): disable local scheduler test and docker install validation in CI by @nuzant in #913
- fix(scheduler): Set CUDA_VISIBLE_DEVICES in sbatch script before Python starts by @nuzant in #910
- fix(tree-attn): Handle dummy trie in Megatron and optimize attention mask memory by @nuzant in #911
- fix(ci): fix github release workflow by @garrett4wade in #909
- feat(archon): Add tree training support for Archon engine by @nuzant in #912
- feat(archon): add ZBVZeroBubble pipeline schedule support by @rchardx in #916
- docs: remove outdated design document by @garrett4wade in #917
- refactor(infra): move scheduler and rpc modules under areal/infra by @garrett4wade in #918
- refactor(infra): move launcher modules to infra/launcher subpackage by @garrett4wade in #919
- docs: update CLI reference examples to use train.py by @garrett4wade in #923
- refactor(tree-attn): simplify tree attention plumbing and restructure attention package by @rchardx in #920
- Empty cache in npu clear memory by @HwVanICI in #924
- refactor(utils): reorganize domain-specific utils into natural homes by @rchardx in #925
- feat(checkpoint): add async checkpoint saving for ArchonEngine by @rchardx in #926
- chore(agents): port agent infrastructure to OpenCode by @rchardx in #934
- fix(utils): correct initial log step to start from 0 by @fishcrap in #935
- fix(agents): Filter out max_turns from kwargs before API calls by @fishcrap in #937
- feat(archon): add InterleavedZeroBubble (ZB1P) pipeline schedule by @rchardx in #936
- docs: Add tree training documentation and tau2 example results by @nuzant in #938
- fix(engine): improve LoRA weight update with versioned naming by @garrett4wade in #928
- fix(archon): default score_before_experts to False for HF parity by @rchardx in #940
- feat(archon): add deterministic training mode for reproducibility by @rchardx in #943
- fix(proxy): use unique role names for proxy workers to fix rollout dump version=0 bug by @yulangz in #941
- VLM multinode training example and performance comparison with verl on Ascend NPU by @HwVanICI in #932
- refactor(tests): move tests from areal/tests to top-level tests directory by @garrett4wade in #944
- refactor(proxy): replace URL-path session isolation with API-key-based auth by @garrett4wade in #946
- feat(proxy): add proxy gateway and online RL training mode by @garrett4wade in #947
- feat: correct routed_experts from sglang(trick of routing_replay) by @ZiyiTsang in #884
- chore: rename online RL examples to make it more attractive by @garrett4wade in #952
- feat(archon): improve pipeline parallelism memory handling by @rchardx in #951
- Update README by @garrett4wade in #953
- feat(tau2): Add Tau2 MOE Model Training Configs and Update README by @GurrenLagann97 in #949
- chore: auto-configure adam_bf16 for Megatron and update documentation by @ZiyiTsang in #933
- fix(infra): convert config.rollout via to_structured_cfg in all launchers (#956) by @ZiyiTsang in #956
- refactor(archon): extract utility functions and simplify engine code by @rchardx in #954
- Bump v1.0.0 by @garrett4wade in #958
New Contributors
- @TinLongYu made their first contribution in #765
- @v3nividiv1ci made their first contribution in #842
- @PopSoda2002 made their first contribution in #851
- @alumkal made their first contribution in #874
Full Changelog: v0.5.1...v1.0.0