Skip to content

v0.7.0

Latest

Choose a tag to compare

@samsja samsja released this 14 Jul 01:22
d334ea5

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)
#2868model.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 bare id (optionally with args) still runs a v0 env through the legacy bridge. Per-env num_workers moves to pool, group-level train/eval num_workers is removed, renderer configuration is required, and rollout-client timeout / connect_timeout fields are removed. #2742
  • Algorithm configuration: named algorithms replace the previous training-mode and advantage configuration. The GRPO length penalty is now a single linear shape with num_output_tokens_weight (default 0.25), num_input_tokens_weight (default 0.1), and num_turns_weight (default 0.1); the tokens/turns variants and gate_by_correctness are removed. #2746, #2901
  • Environment sampling: [[orchestrator.train.env]].ratio defaults to 1 (equal weight per env); the implicit dataset-size-proportional distribution and the all-or-none constraint are removed. Set ratio explicitly to restore a proportional mix. #2935
  • Trainer memory defaults enabled: ac, ac_offloading, compile, optim_cpu_offload, and fused_lm_head_token_chunk_size (default 1024) are now on by default; fused_lm_head_token_chunk_size = "auto" is removed (use an integer or "disabled"). Configs using max_concurrent_runs > 1 must set optim_cpu_offload = false. #2890
  • MoE defaults: model.ep defaults to "auto" (resolves to min(fsdp_island_size, 8) for MoE, 1 otherwise); trainer.model.moe_router_dtype defaults to "float32" and inference.enable_fp32_router_logits defaults to true, changing MoE numerics for existing runs. Restore with moe_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