We are excited to announce the release of slime v0.3.1!
Unlike previous releases, v0.3.1 does not focus on major new features. As increasingly capable AI agents further improve our engineering productivity, we are now able to revisit and remove many compromises that were previously difficult to address. This release brings improvements across memory efficiency, training performance, weight updates, rollout alignment, and system robustness.
Some noteworthy improvements include:
-
More memory-efficient colocated training
- Reduced Megatron offload overhead by optimizing world-group offloading.
- Added support for
PYTORCH_ALLOC_CONF, includingexpandable_segments:True. - Added
--release-trainto release and reload training workers between iterations, leaving more GPU memory available for rollout inference and HiCache.
-
Faster and more flexible weight updates
- Optimized the weight-update path and parallel
update_from_disk. - Added faster raw Hugging Face checkpoint saving with node-level writers.
- Fully supported
--rollout-external-engine-addrsand zero-GPU rollout-router startup. - Improved disaggregated rollout with disk-level delta weight synchronization and engine-side
/pull_weights.
- Optimized the weight-update path and parallel
-
Better rollout and training alignment
- Added top-p masking so training can reproduce the effective sampling distribution used during rollout.
- Improved prefill-decode disaggregation support for R3 routed experts.
-
Better training performance
- Fused PPO logprob and entropy computation and optimized the vocabulary-parallel operators to reduce memory usage.
- Added FLOPs-balanced micro-batching to better balance variable-length samples across microbatches.
- Overlapped data loading with SGLang initialization to reduce startup overhead.
-
Miscellaneous improvements
- Continued improving coding-agent RL, rollout hooks, CI, documentation, and distributed-training stability.
- Internalized the necessary model-conversion components and removed Megatron Bridge support to simplify the slime codebase. For broader model support, we recommend using radixark/miles.
What's Changed
- [docs] Add step-by-step debug tutorial by @liyc-ai in #2001
- fix(multi-agent): preserve rollout logprobs by @Jiang020609 in #1995
- Revert "rename rollout_ids to group_ids" by @zhuzilin in #2013
- Fully support --rollout-external-engine-addrs by @zhuzilin in #2016
- Accelerate raw HF save with node writers by @zhuzilin in #2020
- Support update_from_disk by @zhuzilin in #2021
- Add docs for external servers by @zhuzilin in #2022
- feat: add --balance-by-flops for FLOPs-balanced micro-batching by @HaoDong0027 in #2017
- remove abundant function by @zhuzilin in #2028
- use balance_by_flops as balance data across mbs by @zhuzilin in #2029
- [examples]: add qwen3.5-9b model config and fully_async example by @demouo in #2030
- Log progress while waiting for placement group by @luccabb in #2024
- Allow only set rollout_id for prompt that return multiple responses by @zhuzilin in #2031
- Only upload per sample stats to wandb by @zhuzilin in #2027
- [docs] Add AgentCore RL Toolkit to ecosystem list by @lyzustc in #2034
- Don't upload 'count' to wandb by @zhuzilin in #2035
- [docker] always re-register mooncake addr during offloading by @zhuzilin in #2041
- [docker] update sgl-router by @zhuzilin in #2042
- Revert "[docker] always re-register mooncake addr during offloading" by @zhuzilin in #2046
- docs: add vime to the ecosystem section in README by @CalvinXKY in #2045
- support rich image config for vlm by @demouo in #2044
- [docs] add Miles to slime ecosystem by @yueming-yuan in #2047
- Set RAY_USE_UVLOOP=0 for Ray actors by @zhuzilin in #2050
- [ci] clean up ci by @zhuzilin in #2055
- Use /v1/loads to re-abort server by @zhuzilin in #2056
- [docs] update miles description and chinese version by @yueming-yuan in #2058
- Allow zero-GPU rollout router startup by @zhuzilin in #2057
- [docker] expose sglang load inflight details by @zhuzilin in #2070
- fix(search-r1): stop generation at and by @yichuan-w in #2036
- [docker] upgrade sglang to v0.5.13 by @zhuzilin in #2072
- cleanup by @zhuzilin in #2080
- sync from internal and cleanup by @zhuzilin in #2081
- [algo] Add CISPO advantage estimator (MiniMax-M1) by @EazyReal in #2067
- Overlapping data loading and sglang initialization by @zhuzilin in #2082
- Add ci badge to readme by @zhuzilin in #2086
- Fix CI badge by @zhuzilin in #2087
- Add rollout_data_transport nixl by @zhuzilin in #2088
- Support GLM-5.2 by @zhuzilin in #2093
- [coding-agent-rl] Refactor coding-agent RL: turn-node TrajectoryManager + pluggable harness layer by @jingshenghang in #2005
- Remove bshd support by @zhuzilin in #2100
- docs: drop dangling Dr.GRPO custom-reducer example reference by @EazyReal in #2096
- Support top_p mask by @zhuzilin in #2102
- fix(examples/tau-bench): use RunConfig.agent_strategy in TAU_CONFIGS by @CalvinXKY in #2101
- Fix wrongly removed RouterArgs registry by @zhuzilin in #2107
- Extract append_response_tokens to Sample by @zhuzilin in #2108
- Extract append_response_tokens to Sample by @zhuzilin in #2110
- [codex] Add Dressage to ecosystem README by @huang3eng in #2111
- sync from internal by @zhuzilin in #2118
- Fix bug on non-float reward by @zhuzilin in #2121
- fix(agent) SWE coding-agent RL stability bugs (abort handling, session cleanup) by @jingshenghang in #2124
- feat(coding_agent_rl): select claude_code/codex harness+adapter pair via SWE_AGENT by @jingshenghang in #2125
- Fix parallel update_from_disk in megatron server by @zhuzilin in #2143
- [docker] fix top_p mask speed issue by @zhuzilin in #2145
- feat(gemma4): add Gemma4 dense and MoE support by @EazyReal in #2135
- fix: handle empty colocated weight buckets by @EazyReal in #2134
- perf: fuse PPO logprob entropy computation by @zhuzilin in #2144
- feat(examples/strands_sglang): update to strands-sglang 0.4.2 by @Lawhy in #2106
- Optimize memory usage for _VocabParallelLogProbEntropy by @zhuzilin in #2152
- bugfix by @zhuzilin in #2153
- Remove ctx.set_materialize_grads(False) which may cause issues by @zhuzilin in #2158
- Fix CI by @zhuzilin in #2160
- Fix training stuck on all-gather cp by @zhuzilin in #2123
- fix(update_weight): bracket IPv6 master address in tcp:// init_method by @realJaydenCheng in #2151
- feat(coding_agent_rl): env-selectable grading protocol + sandbox RPC robustness by @jingshenghang in #2161
- Always requires rollout_top_p_token_ids when rollout_top_p is not 1.0 by @zhuzilin in #2167
- [2/n] Disaggregated rollout: disk-level delta weight sync by @nanjiangwill in #2089
- Merging profiling info into router by @zhuzilin in #2169
- [docker] Update SGLang patch for PD R3 routed experts by @zhuzilin in #2173
- [docker] Update training side dependencies by @zhuzilin in #2172
- Fix R3 for allgather_cp by @zhuzilin in #2175
- [docker] Update dependencies by @zhuzilin in #2178
- Add --release-train by @zhuzilin in #2180
- cleanup by @zhuzilin in #2183
- sync source_names by @zhuzilin in #2184
- [3/n] Disaggregated rollout: engine-side /pull_weights by @nanjiangwill in #2181
- Support routed_experts_start_len by @zhuzilin in #2185
- Support reloading the default process group by @zhuzilin in #2208
- Optimize update weight by @zhuzilin in #2220
- Update qwen3-4B.md by @HelloWorldLTY in #2210
- Fix --save-hf by @zhuzilin in #2223
- [docker] upgrade sglang to v0.5.15.post1 by @zhuzilin in #2228
- Support PYTORCH_ALLOC_CONF by @zhuzilin in #2248
- Remove --train-memory-margin-bytes by @zhuzilin in #2249
- Add lightweight rollout hooks and sampling controls by @zhuzilin in #2250
- Internalize mbridge and remove megatron-bridge by @zhuzilin in #2251
- [release] bump to v0.3.1 by @zhuzilin in #2252
New Contributors
- @liyc-ai made their first contribution in #2001
- @Jiang020609 made their first contribution in #1995
- @HaoDong0027 made their first contribution in #2017
- @demouo made their first contribution in #2030
- @luccabb made their first contribution in #2024
- @lyzustc made their first contribution in #2034
- @CalvinXKY made their first contribution in #2045
- @yichuan-w made their first contribution in #2036
- @EazyReal made their first contribution in #2067
- @realJaydenCheng made their first contribution in #2151
- @HelloWorldLTY made their first contribution in #2210
Full Changelog: v0.3.0...v0.3.1