We are excited to announce the release of slime v0.3.2!
This release focuses on GLM-5 train/rollout alignment, community-driven correctness fixes, and continued codebase cleanup.
Some noteworthy improvements include:
-
Fully aligned GLM-5 training and rollout
- Added deterministic alignment between Megatron training and SGLang rollout for GLM-5, covering DeepEP, DeepGEMM, DSA sparse attention, and FP8 KV cache.
- The aligned path has been validated on large-scale GLM-5.3 training workloads.
-
Many community-contributed fixes and optimizations
- Fixed issues across fully-async rollout, PPO/OPD, tool-use tokenization, dataset processing, evaluation, distributed training, and logging.
-
Cleaner and easier-to-maintain codebase
- Continued refactoring and removing legacy/dead code across rollout, actor initialization, CI, and training utilities.
- Added a dedicated slime/observability module for logging, debugging, and tracing utilities.
-
CUDA 13 support
- Added an official CUDA 13 / cu130 environment for Blackwell systems.
What's Changed
- [docker] support cuda 13 by @zhuzilin in #2257
- feat(glm5): align Megatron DeepEP training with SGLang rollout by @zhuzilin in #2262
- fix: preserve consecutive tool responses in Qwen3 SFT tokenization by @HelanHu in #2264
- fix(rollout): restore partial continuation token budget by @Daucloud in #2261
- fix(tools): clamp block max in block_fp8 to avoid NaN weights from all-zero blocks by @hobostay in #2256
- docs: correct reverse KL definition in OPD guide by @XiXiphus in #2254
- fix: forward dual-clip PPO epsilon by @alexqdh in #2247
- fix: cast gpu_id to int in sort_key to prevent lexicographic ordering by @qq1243196045 in #2246
- fix: restore negative dataset slice bounds (path@[-100:]) by @keepkeen in #2241
- fix: keep dataset order in filter_long_prompt for mixed multimodal data by @keepkeen in #2237
- perf: vectorize REINFORCE++ discounted returns by @morluto in #2205
- docs(readme): add Dressage to Chinese ecosystem by @zhangdw156 in #2138
- docs(examples): list coding_agent_rl in examples/README by @aoshen02 in #2133
- [Doc] Clarify PPO/Critic docs after #1856 by @coding-famer in #2189
- fix(mtp): support multi-head MTP loss logging (mtp-num-layers > 1) by @ZiyiTsang in #2132
- Fix placement group crash for external engines under debug_rollout_only by @coding-famer in #2170
- fix: restore args.ckpt_step after load_other_checkpoint by @keepkeen in #2243
- fix: clear exec_and_wait's spawn lock between logical invocations by @keepkeen in #2239
- fix: pair --log-correct-samples rewards with the DP-local samples by @keepkeen in #2234
- fix: whiten advantages over the DP group that includes context parallel by @keepkeen in #2235
- fix: don't overwrite an explicitly set --start-rollout-id by @keepkeen in #2236
- Fix tau-bench token deltas for reasoning templates by @DongzhuoranZhou in #2213
- fix: stop the fully-async rollout dropping completed groups by @keepkeen in #2238
- fix: honor every eval.defaults key and restore per-dataset stop / min_new_tokens by @keepkeen in #2242
- fix(npu): bracket IPv6 hosts in distributed init methods by @EazyReal in #2199
- Refactor --save-debug-train-data by @zhuzilin in #2266
- fix transform_ue8m0 in fp8 convert by @lilei199908 in #2271
- [ROCm] Support the INT4 QAT kernel on ROCm by @LZ-QWQ in #2274
- Fix model convert when use latest megatron by @alexqdh in #2267
- Add args check for --save-debug-train-data by @zhuzilin in #2276
- fix: improve compatibility with older SGLang versions by @ForAxel in #2286
- feat: add backend-aware MUSA support by @ForAxel in #2216
- cleanup by @zhuzilin in #2294
- fix(train): skip optimizer and scheduler for eval-only by @EazyReal in #2296
- fix(ppo): preserve raw KL so rollout/kl logging is correct by @EazyReal in #2114
- fix(opd): score teacher logprobs at rollout temperature, not 0 by @EazyReal in #2085
- fix: reject non-positive rollout temperature at parse time by @EazyReal in #2297
- [NFC] Add observability subfolder by @zhuzilin in #2298
- docs: remove stale delta NCCL recommendation by @liuhao-labs in #2312
- Remove megatron_patch for memory optimization by @zhuzilin in #2316
- [ci] Clean up tests by @zhuzilin in #2317
- [ci] move fanout_test_helpers to tests/ by @zhuzilin in #2318
- [cleanup] remove dead code and merge never visited branches by @zhuzilin in #2320
- [cleanup] extract create_weight_updater to make actor's init func cleaner by @zhuzilin in #2321
- [cleanup] Remove rollout_validation.py by @zhuzilin in #2322
- [cleanup] Refactor rollout.py by @zhuzilin in #2323
- [doc] update doc by @zhuzilin in #2326
- feat: allow forcing UE8M0 FP8 scales by @zhuzilin in #2327
- [docs] fix out-dated doc by @zhuzilin in #2330
- [release] bump to v0.3.2 by @zhuzilin in #2334
New Contributors
- @HelanHu made their first contribution in #2264
- @hobostay made their first contribution in #2256
- @XiXiphus made their first contribution in #2254
- @alexqdh made their first contribution in #2247
- @qq1243196045 made their first contribution in #2246
- @keepkeen made their first contribution in #2241
- @morluto made their first contribution in #2205
- @zhangdw156 made their first contribution in #2138
- @ZiyiTsang made their first contribution in #2132
- @LZ-QWQ made their first contribution in #2274
- @ForAxel made their first contribution in #2286
- @liuhao-labs made their first contribution in #2312
Full Changelog: v0.3.1...v0.3.2