87 commits from 13 contributors since v0.6.0.
1. Verifiers V1
Prime-RL's V1 rollout path now uses Verifiers' task-centric Task / TaskData model end to end. V1 environments are configured with taskset and harness blocks, traces carry a nested task descriptor, and the environment catalog now comes from the unified Verifiers and research-environments packages. The release requires verifiers>=0.2.0.
#2742 — Verifiers V1 integration and Nano bridge
#2864, #2870 — Repoint and update V1 tasksets
#2917 — Enable the Verifiers Harbor extra for sandboxed evaluations
#2919 — Migrate V1 harness IDs
#2934 — Add S1 DeepResearch and ArxivMath V1
#2976 — Update Verifiers and research-environments
#2987 — Adopt the task-centric Task / TaskData split
#2995 — Bump research-environments and verifiers to 0.2.0
2. Algorithm
Training behavior is now selected through named algorithm configs instead of being spread across orchestrator and trainer flags. GRPO, OPD, SFT distillation, self-distillation, echo, and mixed per-environment algorithms share one routing layer, including inline frozen-model references. GRPO also gains a single linear length penalty over completion tokens, context tokens, and turns.
#2746 — Named algorithm abstraction and inline frozen-model references
#2901 — Linear length penalty (completion + context + turns) for GRPO
#2907 — Unified train/eval rollout metrics over the all/effective matrix
#2935 — Equal-weight per-environment sampling by default
#2983 — Save all rollouts, including filtered and ineffective ones
3. Performance & Trainer Efficiency
Memory-efficient trainer defaults are now on out of the box — activation checkpointing, activation offloading, torch.compile, optimizer CPU offload, and fused LM-head token chunking all default on, so a fresh config fits substantially larger models without hand-tuning. Expert parallelism auto-resolves for MoE models (model.ep = "auto"), fp32 MoE routing is enabled by default for cleaner numerics, and NCCL is now the default trainer→inference weight-broadcast transport, cutting weight-sync latency and filesystem churn.
#2890 — Memory-saving trainer defaults enabled by default (AC, activation offload, compile, optimizer CPU offload, fused LM-head chunking)
#2868 — model.ep defaults to "auto" for MoE models
#2952 — fp32 MoE routing (trainer gates + inference router logits)
#2982 — Make NCCL the default weight-broadcast transport
#2991 — Reduce filesystem churn during NCCL broadcast
#2861 — Raise activation-offload memory-warning threshold to 90%
#3022 — Support DeepGEMM FP8 training on SM100
4. vLLM 0.24 and Model Support
The inference stack moves through vLLM 0.23 to vLLM 0.24, with the corresponding MoE weight-sync and native LoRA reload changes. Custom model support expands with Qwen3.5 MRoPE VLM and dense Qwen3.5 attention, Laguna-XS-2.1 renderer support, and a 16-node GLM-5.2 prefill/decode configuration.
#2883 — vLLM 0.23 and GLM-5.2 16-node P/D configuration
#2921 — vLLM 0.24
#2819 — Qwen3.5 MRoPE VLM
#2984 — Dense Qwen3.5 custom attention
#2950 — Laguna-XS-2.1 renderer support
#2939 — Repair gated-delta backward on Hopper
Breaking Changes
See CHANGELOG.md for the complete configuration details.
- Verifiers V1 environment configuration: V1 environments use
taskset+harness; a bareid(optionally withargs) still runs a v0 env through the legacy bridge. Per-envnum_workersmoves topool, group-level train/evalnum_workersis removed, renderer configuration is required, and rollout-clienttimeout/connect_timeoutfields are removed. #2742 - Algorithm configuration: named algorithms replace the previous training-mode and advantage configuration. The GRPO length penalty is now a single
linearshape withnum_output_tokens_weight(default0.25),num_input_tokens_weight(default0.1), andnum_turns_weight(default0.1); thetokens/turnsvariants andgate_by_correctnessare removed. #2746, #2901 - Environment sampling:
[[orchestrator.train.env]].ratiodefaults to1(equal weight per env); the implicit dataset-size-proportional distribution and the all-or-none constraint are removed. Setratioexplicitly to restore a proportional mix. #2935 - Trainer memory defaults enabled:
ac,ac_offloading,compile,optim_cpu_offload, andfused_lm_head_token_chunk_size(default1024) are now on by default;fused_lm_head_token_chunk_size = "auto"is removed (use an integer or"disabled"). Configs usingmax_concurrent_runs > 1must setoptim_cpu_offload = false. #2890 - MoE defaults:
model.epdefaults to"auto"(resolves tomin(fsdp_island_size, 8)for MoE,1otherwise);trainer.model.moe_router_dtypedefaults to"float32"andinference.enable_fp32_router_logitsdefaults totrue, changing MoE numerics for existing runs. Restore withmoe_router_dtype = "bfloat16"/enable_fp32_router_logits = false. #2868, #2952 - Step numbering: user-facing training steps are now 1-indexed; policy versions remain 0-indexed. #2896
Bug Fixes
#2872 — Align gibberish and repetition filters with V1 branch streams
#2880 — Restore eval completion length on token-less relay rollouts
#2898 — Correct environment log discovery
#2899 — Use canonical orchestrator model-client URLs in templates
#2913 — Schedule tail eval rollouts before max-step draining
#2937 — Correct dispatch lead calculation
#2975 — Train shared sampled nodes exactly once across branches
#2980 — Update disaggregated examples to current node-count fields
#2911 — Fix EP grad-clip crash with empty ep_grads (torchtitan bump)
#2981 — Preserve explicit None config overrides across config write/re-parse
#3001 — Reset Nemotron-H CP state at packed boundaries
#3003 — Respect packed document boundaries in Qwen3.5 DeltaNet CP
#3004 — Broadcast resumed policy weights before the training loop
#3005 — Flush env server exception logs
#3010 — Count token batches by shipped sample payload
#3013 — Scope the train batch observation window to finalized groups
Misc
Weight sync, multi-node reliability, operations, and observability.
#2959 — Derive inference node counts
#2926 — Optional per-node uv sync for multi-node RL
#2922 — Harden weight sync
#2990 — Allow the final NCCL batch through the dispatch gate
#2992 — Atomic orchestrator checkpoint writes
#2863 — Configurable environment variables
#2938 — Dispatch-gate wait metrics
#2933 — Curated W&B overview views
#2866 — Resolve editable submodule versions in Docker
#2826 — Include the CUDA toolkit in the runtime image
#2906 — Repair Docker builds after uv's centralized project environments change
#2920 — Add LongPDFs V1
#2940 — Reduce CPU CI disk usage
#2924 — Bump dist_timeout_seconds default to 3600
#2874, #2875, #2876, #2877, #2881, #2928, #2929, #2930, #2931, #2932 — Remove obsolete utilities, fields, and configuration placeholders
#2989 — Export Verifiers V1 traces.jsonl as an SFT dataset
#2999 — Bump research-environments to latest main
#3019 — Make all envs uv workspace members, drop the envs extra
#3020 — Use filesystem weight broadcast for RL integration tests (temp NCCL workaround)
#3023 — Allow prime-rl weight conversions to be stored separately from the model (conversion_dir)
#3025 — Install vllm-router on aarch64
Contributors
@mikasenghaas, @hallerite, @samsja, @eexwhyzee, @faresobeid, @snimu, @S1ro1, @eligotts, @Rogan-Inglis, @hubert-marek, @anravich13-cloud, @peter941221, @xeophon