📝 Blog
Optimizing Non-Colocated Refit for Asynchronous RL
Cross-Tokenizer and MOPD: Latest Advancements in Knowledge Distillation in NVIDIA NeMo-RL
✨ Highlights
Container
Both linux/amd64 and linux/arm64 Docker containers are available on NGC as nvcr.io/nvidia/nemo-rl:v0.7.0.
Here are the major software components included in the container:
| Software Component | Version |
|---|---|
| NeMo-RL | 0.7.0 |
| NeMo-Gym | 0.4.0+d67ad66 |
| NeMo-Automodel | 0.3.0+24b47e8 |
| Megatron-Bridge | 0.5.0+554c7b9 |
| Megatron-Core | main (editable via Megatron-Bridge) |
| PyTorch | 2.11.0 |
| vLLM | 0.20.0 |
| SGLang | 0.5.12.post1 |
| Ray | 2.55.1 |
| Transformers | 5.8.1 |
The NeMo-RL container is built on top of nvcr.io/nvidia/cuda-dl-base:26.03-cuda13.2-devel-ubuntu24.04. Starting with this release, CUDA 13 is the primary supported CUDA version.
If you would like to build this container, or nightly containers, yourself, we provide the exact instructions we use at https://docs.nvidia.com/nemo/rl/latest/docker.html#release-image.
Nemotron 3 Super Post-Training
In v0.6, the Nemotron 3 Super recipe lived on the separate super-v3 branch. NeMo RL v0.7 brings the full Nemotron 3 Super RL post-training recipe to main, covering all three phases used to train the released model:
- RLVR (3 sub-stages): reinforcement learning with verifiable rewards on math, code, science, and agentic tasks, driven through NeMo Gym environments.
- SWE RL (2 sub-stages): long-context, multi-step agentic RL on software engineering tasks (SWE-bench-style rollouts).
- RLHF with length penalty: reward-model-based preference training with a length penalty to control verbosity.
The training data blends are published on Hugging Face at nvidia/Nemotron-RL-Super-Training-Blends, and each stage is launched with a single super_launch.sh invocation:
# Run Nemotron 3 Super's Stage 1.1 - RLVR 1 recipe
EXP_NAME=stage1.1-rlvr1 \
CONFIG_PATH=examples/nemo_gym/nemotron-3-super/stage1_rlvr.yaml \
bash super_launch.shSee the Nemotron 3 Super guide for the end-to-end workflow, including data preparation, per-stage launch commands, and a Dockerfile snippet that prebakes the NeMo Gym environment venvs into the container to reduce launch time.
Nemotron 3 Ultra Post-Training
Nemotron 3 Ultra post-training recipes currently live on the ultra-v3 branch, and is actively being merged into main.
PPO (Proximal Policy Optimization)
NeMo RL v0.7 adds first-class PPO support (#2530, #2837). PPO is an actor-critic algorithm that jointly trains the policy alongside a value model (critic) that predicts per-token state values, enabling Generalized Advantage Estimation (GAE) for lower-variance advantage signals than the reward-only group baselines used in GRPO.
The implementation reuses GRPO's data, environment, and generation infrastructure and adds a ValueInterface worker group for the critic. Policy, value model, and vLLM generation are colocated on the same GPUs, with models offloaded to CPU between stages to manage memory. Both the Megatron-Core and DTensor (Automodel) backends are supported for policy and value training, and the Megatron path includes:
- An in-model value head so the critic runs as a single fused model rather than a separate head pass (#2825)
- Sequence packing and context parallelism for the value model (#2839)
uv run examples/run_ppo.py --config examples/configs/ppo_math_1B.yamlExample recipes:
- DTensor: ppo-qwen2.5-1.5b-gsm8k-1n8g-automodel-valuetp2sp.yaml
- Megatron (dynamic batching): ppo-qwen2.5-1.5b-gsm8k-1n8g-megatron-valuetp2sp-dynbatch.yaml
- Megatron (PP2/CP2 + sequence packing): ppo-qwen2.5-1.5b-gsm8k-1n8g-megatron-valuetp2sp-pp2cp2-pack.yaml
- 7B math: ppo-dsr1-7b-math-8n8g-megatron.yaml
For the full walkthrough (value model configuration, GAE, the PPO training loop, and loss), see the PPO guide.
Router Replay (R3) for MoE Models
For MoE models, two valid router implementations can pick different experts for the same token, so the experts vLLM routes a token through during rollout may differ from those Megatron routes it through during training. This introduces train-vs-rollout logprob mismatch that has nothing to do with the policy update itself and degrades importance-sampling corrections.
NeMo RL v0.7 introduces Router Replay (R3) (#2590): vLLM records the routed expert indices for every generated token during rollout, and Megatron replays those exact expert assignments in its logprob and training forward passes, keeping expert assignment consistent across rollout, logprob computation, and training. R3 is supported for Megatron MoE policy training with vLLM rollouts across Sync RL and Async RL.
Enabling it is a single switch (it is disabled by default and not needed for dense models):
policy:
router_replay:
enabled: trueR3 was validated with matched R3-on/R3-off training pairs measuring train/token_mult_prob_error and train/js_divergence_error; see the W&B validation report.
Example recipes:
- Sync: grpo-qwen3-30ba3b-8n8g-megatron-cp2-r3.yaml
- Async: grpo-qwen3-30ba3b-10n8g-megatron-cp2-r3-async.yaml
- Async + NeMo Gym: grpo-qwen3-30ba3b-thinking-swe1-16n8g-megatron-cp2-r3-async-gym.yaml
See the Router Replay guide for the validation methodology and trace-checking tooling.
Multi-Teacher On-Policy Distillation (MOPD)
NeMo RL v0.7 introduces Multi-Teacher On-Policy Distillation (MOPD) (#2780), following the approach in the MiMo-V2-Flash Technical Report. MOPD runs on top of the async GRPO trainer and replaces the reward-based advantage with a per-token distillation advantage — the stop-gradient teacher-minus-student log-probability gap:
Maximizing this advantage is reverse-KL minimization toward the teacher, but unlike forward-KL logit distillation it only needs the teacher's log-probability for the sampled token rather than the full vocabulary distribution — so it composes naturally with multi-turn / multi-step NeMo Gym rollouts. Teachers run inference-only on the Megatron backend in dedicated non-colocated worker groups, and each rollout is routed to a teacher by its NeMo Gym agent name, so different agents in a blend can distill from different teachers.
grpo:
async_grpo:
enabled: true
adv_estimator:
name: opd
on_policy_distillation:
enabled: true
teacher_model_by_agent_name:
default_teacher: Qwen/Qwen3-1.7B
default_teacher_alias: default_teacher
non_colocated_teachers:
enabled: trueExample recipe: mopd-qwen3-1.7b-3n8g-megatron-pack.yaml. See the MOPD algorithm page for the full configuration, teacher routing, and resourcing details.
Cross-Tokenizer (X-Token) Distillation
NeMo RL v0.7 supports off-policy distillation between a student and teacher that do not share a tokenizer — for example, distilling a Qwen3-4B teacher into a Llama-3.2-1B student (#2508). Tokenizer vocabularies typically overlap only partially, so x-token distillation routes student logits through a precomputed projection matrix that maps each student token to the teacher tokens it most plausibly corresponds to, projecting the student into the teacher's vocab space so the two distributions can be compared. The projection matrix is built once per (student, teacher) pair with small offline CLI tools and saved as a single .pt file.
v0.7 extends the initial support with:
- Multi-teacher distillation — distill from several teachers with different tokenizers at once (#2797)
- TP/CP and mismatched-DP sharded training for larger students and teachers (#2745)
- An optional next-token CE + H-KL gold loss combination (#2757)
uv run examples/run_xtoken_off_policy_distillation.py --config examples/configs/xtoken_off_policy_distillation.yamlExample recipes:
- Single teacher: distillation-xtoken-off-policy-qwen3-4b-to-llama3.2-1b-1n8g-dtensor-tp4cp2.yaml
- Multi-teacher: distillation-xtoken-off-policy-multiteacher-qwen3-4b-llama3.2-3b-to-llama3.2-1b-1n8g-dtensor-tp4cp2.yaml
See the X-Token distillation guide and the accompanying technical blog.
SWE Recipe
NeMo RL v0.7 adds a two-stage SWE RL recipe (#2624) that post-trains Qwen3-30B-A3B-Thinking-2507 (30B total, 3B active) into a software-engineering agent. End-to-end agentic RL on SWE tasks is expensive, since each rollout is a multi-turn trajectory in a sandbox, and a thinking model that discards its reasoning between turns loses the chain of thought it depends on. This recipe addresses both.
Training runs in two stages, each starting from the previous checkpoint. SWE1 is a single-step PivotRL warm-start that applies RL to informative decision points from expert trajectories with an argument-matching reward and no sandbox, teaching well-formed tool calls before the costly stage. SWE2 is full multi-turn agentic RL in a per-instance Apptainer sandbox, rewarded on hidden-test-suite pass. A custom serving chat template preserves each turn's reasoning (truncate_history_thinking: false) for interleaved thinking, and the NeMo Gym swe_agents environment trains on a mix of three harnesses (Codex, OpenCode, OpenHands/CodeAct). Both stages use Async GRPO (non-colocated) on Megatron. On SWE-bench Verified (pass@1), the pivot stage lifts the base model from 23.6% to 30.4%, and end-to-end RL reaches 31.2%.
uv run --frozen ./examples/nemo_gym/run_grpo_nemo_gym.py --config examples/nemo_gym/grpo_qwen3_30ba3b_thinking_swe1.yaml {overrides}Example recipes:
- Stage 1 (pivot): grpo_qwen3_30ba3b_thinking_swe1.yaml
- Stage 2 (e2e agentic): grpo_qwen3_30ba3b_thinking_swe2.yaml
See the Two-Stage SWE RL guide for the chat template, multi-harness setup, and full results.
CISPO: Clipped Importance Sampling Policy Optimization
NeMo RL v0.7 adds CISPO (#2531), a GRPO-family policy-gradient objective. Standard PPO/GRPO-style hard ratio clipping zeroes out the gradient contribution of any token whose importance ratio leaves the clip range — which can drop exactly the low-probability "fork" tokens that matter for reasoning. CISPO instead clips the importance-sampling weight as a detached (stop-gradient) coefficient:
so the gradient always flows through log π_θ for every token, and only the magnitude of each token's contribution is bounded. This makes it well-suited to high off-policy settings (multiple updates per rollout, async generation lag). CISPO reuses the GRPO training path and is enabled through the loss_fn block:
loss_fn:
use_cispo: true
token_level_loss: true
ratio_clip_min: 1.0
ratio_clip_max: 5.0The nightly recipe validates the objective in a high-off-policy setting with repeated updates per rollout and non-colocated async vLLM generation: grpo-cispo-mm1-async-lag1-highoffpolicy-qwen3-30ba3b-3n8g-megatron-cispo.yaml. See the CISPO guide.
Model Support
Nemotron 3 Super
Full RL post-training recipe (RLVR, SWE RL, RLHF) on main — see the Nemotron 3 Super highlight above and the Nemotron 3 Super guide.
Multimodal (VLM / Audio / Video)
- Qwen3-Omni GRPO training with the AudioMCQ dataset (#2073, #2356)
- Nemotron Nano v3 Omni on the Automodel path (#2362)
- Qwen2.5-omni-7B Video + audio understanding GRPO recipe (#2823)
Additional Models
- Gemma 4 (#2224)
- GLM 5.1 GRPO (#2489)
- MiniMax M2.7 (#2685)
- Mistral Medium 3.5 (128B) text-only DAPO (#2875)
- Qwen3.5 context parallelism on the Megatron path (#2312)
For the full model support matrix, see our model support documentation.
⚡ Performance Optimizations
- MXFP8 rollout support: generation can run in MXFP8 on the vLLM side while training stays in higher precision, increasing rollout throughput (#1887).
- HybridEP for MoE expert parallelism: enables Megatron-Core's HybridEP communication path for expert-parallel MoE training (#1942).
- MoE GroupedGEMM and selective activation checkpointing: batches per-expert GEMMs into grouped kernels and recomputes only the memory-heavy layers instead of full layers (#2278, #2280).
- Chunked Linear Fusion for GRPO: extends v0.6's chunked linear cross-entropy fusion (which computes loss from hidden states chunk-by-chunk without materializing full logits) from SFT/DPO to the GRPO logprob path, significantly extending trainable sequence length (#2833).
- Split-API Megatron train step: decomposes the Megatron train step into a state machine so the SingleController can stream micro-batches and overlap compute with communication (#2683, #2700).
- Overlapped NeMo Gym and vLLM initialization: NeMo Gym server startup now overlaps with vLLM engine init (with deferred model load), and the release image caches the Gym server venvs, cutting multi-minute startup stalls (#2741, #2750, #2771, #2793).
- Topology-aware placement and NUMA-aware binding: places worker groups by NVLink domain and binds processes to local NUMA nodes for better multi-node scaling (#2612, #2613).
- Async checkpointing for Megatron policy workers: checkpoint writes proceed in the background so training resumes immediately after the snapshot (#2828).
- Reduced logprob memory: reduced selected-token logprob memory (#3124) and top-k fp32 chunk memory (#2883).
- Startup and scale-out tuning: pooled per-node worker initializers (#2739), batched worker port discovery (#2920), Ray GCS tuning for large-scale init bursts (#3089, #3158), and reduced srun overhead in
ray.sub(#2827). - MFU reporting for Megatron training workers, so recipe efficiency is visible directly in training logs (#2790).
View the v0.7.0 performance numbers from our published recipes at https://docs.nvidia.com/nemo/rl/latest/about/performance-summary.html .
Notable Additions
- Quantization-Aware Training (QAT/QARL) with ModelOpt: quantization-aware GRPO and distillation via NVIDIA ModelOpt, including real NVFP4 rollout (W4A4 and W4A16) and MoE/Mamba support (#1756, #2442, #2592). See the Quantization-Aware RL guide.
- TransferQueue data plane: a high-throughput data plane for moving rollout data between generation and training, with simple and mooncake backends (#2439).
- Native async per-prompt rollouts: a new
AsyncRolloutManagerplus a unifiedRolloutManagerabstraction for per-prompt streaming rollouts (#2566, #2567), with a staleness-window replay buffer to bound off-policy lag (#2458). - WeightSynchronizer ABC: a refit-transport abstraction with IPC, HTTP, and NCCL implementations for synchronizing weights from training to generation workers (#2466).
- MTP (multi-token prediction) training for Nemotron models on the Megatron backend (#2801).
- GRPO training-stability and reward-shaping options: overlong-response advantage filtering (#2686), penalties for invalid tool calls / malformed thinking and other behaviors with violation-rate logging (#2656, #2885, #2800), a TIS lower bound for importance-sampling correction (#2886), masking of environment-flagged samples from the policy loss (#3163), and sequence-level logprob error metrics (#2559).
- Checkpoint interoperability: restore from Megatron-LM / Megatron-Bridge pretrained checkpoints (#2329), export LoRA adapters to HF without merging (#2234), and a GPU variant of the Megatron→HF converter (#2581).
- Fault-tolerance checkpoint retention:
ft_save_period/ft_keep_latest_kkeep a separate rolling window of fault-tolerance checkpoints independent of the best-metric retention policy (#3157). - Custom vLLM reasoning parser plugins for structured extraction of reasoning traces during rollout (#2569).
- SGLang rollout refactor for DTensorPolicyV2 backend (#2267). Megatron backend support coming soon.
- New benchmarks and datasets: AIME-2026 benchmark (#2469), AIME 2025/2026 response dataset variants (#2841), and the OpenR1-Math-220k response dataset (#3131).
grpo-smokerecipe for quick install validation (#2842).- Major dependency upgrades: PyTorch 2.11.0, vLLM 0.17.1 → 0.20.0, CUDA 13 as the primary supported version, Transformers 5.8.1, Ray 2.55.1, SGLang 0.5.12.post1, and NeMo-Gym 0.3 → 0.4 (#2384, #2332, #3076).
Notable Fixes
- Made MoE forward passes deterministic by defaulting
moe_permute_fusion=true, fixingtrain/probs_ratiodeviating from 1.0 in on-policy GRPO for MoE models (#2258). - Fixed KL backward in GRPO, including when clamping is active (#2506, #2958).
- Fixed dynamic sampling to run on unshaped rewards (#2478).
- Fixed port contention between Ray/vLLM/Gym and sandbox workers (#3103) and vLLM cross-node model-parallel port assignment (#3159).
- Fixed async GRPO starvation diagnostics, gym logging, and dataloader exhaustion (#2917).
- Fixed FP8
hf_config_overrides(#2904) and FP8 memory fragmentation (#2670). - Fixed PPO optimizer state restore on checkpoint resume (#3171).
- Fixed handling of non-contiguous tensors in IPC weight refit (#2418) and a zmq race in async vLLM sends (#2513).
- Fixed
convert_dcp_to_hf.pyto load the tokenizer saved in the DCP checkpoint when present (#2210). - Addressed security vulnerabilities and CVEs (#2560, #2663, #2752, #2773, #3085, #3230).
🛠️ Known Issues
- Qwen3.5 vLLM random hang: Qwen3.5 generation with the vLLM backend may intermittently hang after several training steps and eventually raise
RayChannelTimeoutError, caused by an upstream vLLM + Ray compiled DAG (CGRAPH) issue. See vllm-project/vllm#36237 for details. Will be resolved after the next vLLM bump in #3280.
📊 Release Runs
Release runs are now available as a wandb report!
What's Changed
- feat: Adding quantization aware training support with Model-Optimizer by @mxinO in #1756
- feat: MXFP8 rollout support by @guyueh1 in #1887
- feat: Add HybridEP support for MoE expert parallelism by @seonjinn in #1942
- feat: use ray.put to reduce overhead of repeated arguments by @guyueh1 in #1944
- fix: address deprecation warning for using a non-tuple sequence by @ananthsub in #2032
- feat: support qwen-omni grpo training recipe by @yuekaizhang in #2073
- fix: remove mlm workspace by @kajalj22 in #2136
- fix: Set VIRTUAL_ENV and UV_PROJECT_ENVIRONMENT to venv dir by @terrykong in #2149
- fix: Fix crashes seen with nsys profiling on vLLM workers when TP > 1 by @snivertynv in #2156
- fix: aggregate rollout metrics by semantic type (min/max/sum/mean) by @yfw in #2175
- fix: use prompt token length for advantage group extraction and fix token mask by @yfw in #2176
- docs: fix typos, grammar, and table issues from QA by @anwithk in #2193
- feat: Support aux loss normalization in RL SFT by @pthombre in #2194
- fix: convert_dcp_to_hf.py correctly loads saved tokenizer from DCP if detected by @trias702 in #2210
- feat: add Gemma4 support by @sharonyu-115 in #2224
- feat: support convert_lora_to_hf without merge by @RayenTian in #2234
- build: drop rc0 pre-release tag and add dynamic git versioning by @ko3n1g in #2235
- fix: fix gpt oss export + bump mbridge by @yuki-97 in #2249
- refactor: unify GDPO to use math_hf_data_processor by @NolenLiang in #2256
- fix: set moe_permute_fusion default to true for deterministic MoE forward by @zpqiu in #2258
- chore: update version and references for r0.6.0 release by @kajalj22 in #2261
- feat: add nvidia-resiliency-ext as nvrx optional extra by @terrykong in #2264
- ci: add sync-skills workflow by @ko3n1g in #2265
- feat: Sglang Rollout Refactor by @xiuhu17 in #2267
- ci: retry apt-get installs to handle mirror sync failures by @ko3n1g in #2275
- ci(action): surface launch info and pass/fail banner; fix exit_code capture by @ko3n1g in #2277
- perf: enable MoE GroupedGEMM for MoE models by @seonjinn in #2278
- perf: selective activation checkpointing feature support by @seonjinn in #2280
- ci: add step summary when CI quality gate fails due to missing label by @kajalj22 in #2282
- docs: add yarn doc by @RayenTian in #2283
- fix: fix OOM by @yuki-97 in #2285
- docs: fix typos and errors in training-backends.md by @terrykong in #2287
- fix: symlink to skills for claude and other agents by @chtruong814 in #2289
- ci: Run nemo gym unit tests on Github by @chtruong814 in #2292
- perf: Perf test scripts update for v0.6 by @guyueh1 in #2300
- docs: Fixing docs for Muon optimizer by @adityavavreNVDA in #2301
- ci: rename performance_h100.txt to performance.txt by @kajalj22 in #2302
- fix: install logsage transitive deps for ft_launcher by @terrykong in #2304
- ci: lower distillation seqpack validation accuracy threshold by @kajalj22 in #2306
- fix: loosen memory threshold for sft-llama3.1-70b-8n4g-tp2pp2-long-megatron by @yuki-97 in #2310
- feat: add Qwen3.5 CP support for MCore path by @zpqiu in #2312
- docs: add SECURITY.md by @chtruong814 in #2316
- refactor: async generation code refactoring by @youngeunkwon0405 in #2318
- fix: enable TE FusedAdam for Qwen3.5 MoE & GLM-4.7-Flash automodel recipes by @zpqiu in #2320
- ci: add base_sha to codecov/codecov-action upload step by @ko3n1g in #2323
- refactor: update TypedDict to BaseModel (MasterConfig & ClippedPGLossConfig) by @yuki-97 in #2325
- feat: Support restoring from MLM/Mbridge pretrained checkpoints by @ashors1 in #2329
- feat(nrl-k8s): Kubernetes infrastructure and CLI tooling by @terrykong in #2330
- chore: Enable cuda-13 build by @chtruong814 in #2332
- fix: fix the blocking env issue by @youngeunkwon0405 in #2335
- fix: store mm_token_type_ids as plain tensor in get_formatted_message_log by @chtruong814 in #2337
- fix: Ensure code coverage report is uploaded by @chtruong814 in #2339
- docs: add NVIDIA-Nemotron-3-Super-120B-A12B to model support page by @terrykong in #2340
- perf: Benchmark tuning by @guyueh1 in #2341
- ci: shard tests to run more in parallel by @chtruong814 in #2345
- docs: Perf page update for v0.6 by @guyueh1 in #2346
- feat: Update Megatron Inference by @tdene in #2355
- feat: support Qwen/Qwen3-Omni-30B-A3B-Instruct and Audiomcq dataset. by @yuekaizhang in #2356
- fix(ci): align nightly concurrency group with Automodel and Megatron-Bridge by @kajalj22 in #2358
- feat: Support Nemotron-nano-v3 Omni AutoModel Path by @yuekaizhang in #2362
- fix: use tied embedding for linear CE fusion output weight by @jthomson04 in #2363
- fix(nemo-gym): plumb max_new_tokens into row-level max_output_tokens by @jthomson04 in #2365
- fix(nemo-gym): bind default_host to actor node IP for multinode by @jthomson04 in #2366
- feat(nrl-k8s): deployment sidecar and segmentSize by @terrykong in #2369
- docs: use @file-path notation for file references in skills by @ko3n1g in #2370
- fix: filter out unschedulable head nodes in venv creation by @terrykong in #2374
- feat: change SFT YaRN recipe from 64k to 128k by @bg51717 in #2375
- feat: Expose dp_replicate_size for hybrid FSDP in Automodel DTensor v2 by @vigneshwaran in #2376
- docs: update README with v0.6.0 release notes by @terrykong in #2379
- fix: configure port ranges to avoid TOCTOU port contention by @terrykong in #2380
- refactor: update skills frontmatter by @ko3n1g in #2381
- docs: add CI/CD documentation and fix broken link checks by @kajalj22 in #2383
- chore: Upgrade vLLM from 0.17.1 to 0.20.0 by @kajalj22 in #2384
- feat(infra): simplify KAI queues, fix YAML interpolation, add --manifests-only by @terrykong in #2396
- ci: Major refactor of release-workflows by @ko3n1g in #2397
- ci: add maintainers by @thomasdhc in #2409
- fix: handle non-contiguous tensors in IPC weight refit by @jlcanta in #2418
- feat: Auto research skill by @vinhngx in #2419
- chore: bump transformer-engine to 2.14.1 by @zpqiu in #2434
- feat: data plane transfer queue integration by @ZhiyuLi-Nvidia in #2439
- feat: MoE and Mamba support for QARL by @mxinO in #2442
- fix: fix skip_reference_policy_logprobs_calculation and skip_prev_logprobs by @jinglinglingling in #2443
- refactor: refactor async utils by @yuki-97 in #2448
- fix(nrl-k8s): rewrite
--configin entrypoint to honor CLI RECIPE arg by @hemildesai in #2449 - fix(infra): dev pod RBAC, macOS install scripts, helm fixes by @terrykong in #2450
- feat: support staleness-window in ReplayBufferNew by @yuki-97 in #2458
- feat: Add advanced nsys options to the wrapper by @zswerth in #2461
- feat: [NemoRL] Introduce WeightSynchronizer ABC with IPC/HTTP/NCCL transports by @saumishr in #2466
- feat: add AIME-2026 benchmark. by @xxman-google in #2469
- perf: Performance script tuning by @guyueh1 in #2473
- fix: run dynamic sampling on unshaped rewards by @ashors1 in #2478
- fix(rm): raise clear error when CP is used with DTensor RM training by @terrykong in #2483
- ci: Skip sglang build and test for now by @chtruong814 in #2486
- ci: seed uv cache from registry to skip CUDA recompilation on ephemeral runners by @kajalj22 in #2488
- feat: Add support for GLM 5.1 GRPO by @slikhite-1 in #2489
- feat: Discard weight when finish generation in the main loop by @guyueh1 in #2495
- fix: KL backward in GRPO by @smahdavi4 in #2506
- feat(xtoken): cross-tokenizer off-policy distillation by @avenkateshha in #2508
- fix(vllm): serialise AsyncMPClient input_socket sends to prevent zmq race by @kaloyan-inherent in #2513
- fix(nemo-gym): clamp max_new_tokens to prompt + output <= max_model_len by @yuki-97 in #2514
- fix: fix preserving dataset merge by @yuki-97 in #2515
- feat(sft): make only_unmask_final configurable in SFTConfig by @yuki-97 in #2516
- fix: reset dataloader index when dataset changes on resume by @jinglinglingling in #2519
- refactor(dpo): migrate DPOConfig, DPOSaveState, DPOValMetrics to Base… by @NolenLiang in #2524
- refactor(sft): migrate SFTConfig, SFTSaveState to BaseModel by @NolenLiang in #2525
- refactor(rm): migrate RMConfig, RMSaveState, RMValMetrics to BaseModel by @NolenLiang in #2526
- feat: add AsyncNemoGymRolloutManager for gym per-prompt rollouts by @yuki-97 in #2528
- fix: set PackedSeqParams.total_tokens for mamba seq packing by @yfw in #2529
- feat: PPO with MCore by @bg51717 in #2530
- feat: Add CISPO loss by @pengdurice in #2531
- ci: skip sglang build and tests for external contributors by @kajalj22 in #2532
- ci: Skip sglang prefetch for Lfast CI label by @chtruong814 in #2534
- ci: switch sglang to prebuilt PyPI wheels (v0.5.11) by @kajalj22 in #2535
- docs(fp8): fix YAML key names for pow2 scaling factors by @achartier in #2536
- fix(data): add 'aime2026' to AIMEEvalDataConfig literal (#2469 follow-up) by @qiaochuz-nv in #2541
- ci: validate release branch-rules by @ko3n1g in #2546
- feat(grpo): add sequence-level logprob error metrics by @macandro96 in #2559
- fix(security): bump mlflow and urllib3 for CVE remediation by @kajalj22 in #2560
- chore: move contributor-facing skills to .agents/contributor-skills/ by @terrykong in #2561
- fix: Fix the performance page by @guyueh1 in #2563
- build: Update deps for Megatron Inference by @tdene in #2565
- feat: add AsyncRolloutManager for native async per-prompt rollouts by @yuki-97 in #2566
- refactor: unify per-prompt rollout to RolloutManager by @yuki-97 in #2567
- feat(vllm): support custom reasoning parser plugins by @macandro96 in #2569
- fix: pass weight shape instead of tensor to should_use_deepgemm_for_fp8_linear by @kajalj22 in #2574
- ci: Remove GHA workflow to update skills symlink by @chtruong814 in #2575
- fix: move session-memory back to skills/ with auto-research group by @terrykong in #2577
- feat: add GPU variant of Megatron to HF converter by @macandro96 in #2581
- fix: lower mooncake memory in functional test by @yuki-97 in #2584
- fix(docker): set LD_LIBRARY_PATH for AWS EFA OFI plugin discovery by @ko3n1g in #2585
- fix: Make moe_backend triton to fix refit issue with moonlight by @guyueh1 in #2586
- feat: add router replay (R3) support by @zyzhou5 in #2590
- feat(modelopt): support real NVFP4 QAT rollout by @HollowMan6 in #2592
- ci: add NVSkills CI workflow for skill signing by @terrykong in #2594
- refactor: handle GDPO multi-reward by dict instead of positional list by @NolenLiang in #2597
- fix(grpo): handle seq logprob metrics in sync trainer by @macandro96 in #2600
- ci(auto-research): NVSkills signing — license, evals, secrets baseline by @terrykong in #2601
- ci(brev-etiquette): NVSkills signing — license, evals, secrets baseline by @terrykong in #2602
- ci(docs): NVSkills signing — license, evals, secrets baseline by @terrykong in #2603
- ci(launch-nemo-rl): NVSkills signing — license, evals, secrets baseline by @terrykong in #2604
- ci(session-memory): NVSkills signing — license, evals, secrets baseline by @terrykong in #2605
- fix: update ray executor import for vLLM 0.20 by @achartier in #2609
- feat: Topology aware placement by @youngeunkwon0405 in #2612
- feat: Numa aware binding by @youngeunkwon0405 in #2613
- test: add TQ nightly coverage set (simple + mooncake_cpu backends) by @ZhiyuLi-Nvidia in #2616
- docs: add two-stage SWE RL guide and recipes for Qwen3-30B-A3B-Thinking by @binhu-nv in #2624
- ci: guard coverage combine against empty coverage glob in fast shards by @achartier in #2630
- fix: fix fp8_params by @ashors1 in #2633
- fix: Fix nanov3 mcore test by @yfw in #2635
- fix: Fix nanov2 nightlies for new vllm by @yfw in #2636
- fix(vllm): selectively port NeMo Gym/vLLM cherry-pick fixes by @macandro96 in #2639
- chore: Remove unused converter type by @MyviordDjaja in #2640
- feat(data): support dotted import paths in dataset_name by @lonexreb in #2642
- fix: lazily import megatron-core in model_utils by @RayenTian in #2648
- docs: update docs for TypedDict → BaseModel/dataclass by @yuki-97 in #2650
- fix(grpo): ReplayBuffer checkpointing and fix reservation leaks by @macandro96 in #2651
- fix(grpo): penalize invalid tool call and malformed thinking by @macandro96 in #2656
- refactor: rename docs skill to nemo-rl-docs by @terrykong in #2657
- revert: Discard weight when finish generation in the main loop (#2495) by @terrykong in #2658
- refactor: rename session-memory skill to nemo-rl-session-memory by @terrykong in #2659
- refactor: rename brev-etiquette skill to nemo-rl-brev-etiquette by @terrykong in #2660
- refactor: rename auto-research skill to nemo-rl-auto-research by @terrykong in #2661
- fix(security): bump deps for CVE remediation (June 2026) by @kajalj22 in #2663
- fix(test): increase timeout for grpo-llama3.2-1b-1n4g nightly test by @kajalj22 in #2664
- fix: Fix fp8 memory fragmentation by @ashors1 in #2670
- feat: Add script to re-initialize near-zero HF embeddings by @ashors1 in #2671
- fix(grpo): improve non-colocated refit handling by @macandro96 in #2672
- chore: bump
_code_freezeworkflow tov1.4.2by @ko3n1g in #2675 - fix: lower DPO Qwen2.5-Math-7B accuracy threshold after torch 2.11 up… by @NolenLiang in #2676
- feat: Enable tqdm configuration for vllm generation by @louisfaury in #2677
- ci: bump _release_library.yml to v1.4.3 by @ko3n1g in #2678
- feat(megatron): split-API train-step state machine on MegatronPolicyWorker by @mehraakash in #2683
- feat: add MiniMax M2.7 support by @jQizhang in #2685
- feat: grpo advantage clip overlong filter by @arnavk-nvidia in #2686
- ci: Bump Megatron-Bridge to 4bb6330 by @svcnvidia-nemo-ci in #2688
- feat(algorithms): SingleController streaming train_pump (split-API consumer) by @mehraakash in #2700
- fix: fix qwen3-235b deepseek-v3 h100 perf tests by @yuki-97 in #2703
- build: add managed = true to [tool.uv] by @kajalj22 in #2704
- docs: Add ultra news item by @yfw in #2731
- fix: fix grpo-gptoss-20b-8n8g-megatron by @yuki-97 in #2734
- ci: Bump Megatron-Bridge to 823b951 by @svcnvidia-nemo-ci in #2735
- fix(flops): count Qwen3 attention FLOPs with num_heads*head_dim by @joyang-nv in #2736
- perf: pool IsolatedWorkerInitializer per node instead of per worker by @ananthsub in #2739
- feat: overlap NeMo Gym init with vLLM init by @yfw in #2741
- feat(xtoken): support TP/CP/diff-DP sharded cross-tokenizer distillation by @RayenTian in #2745
- feat: expose
use_gloo_process_groupstoggle for megatron policy workers by @ananthsub in #2746 - chore: drop duplicated text field in x-token by @yuki-97 in #2747
- feat(vllm): add deferred model load for overlapped NeMo Gym init by @yfw in #2750
- feat: add [GPU_DIAG] memory diagnostics logging during worker init by @arnavk-nvidia in #2751
- fix(security): bump PyJWT and mlflow for CVE remediation by @kajalj22 in #2752
- feat(xtoken): combine next-token CE with H-KL gold loss by @avenkateshha in #2757
- feat: Enable NeMo Gym rollouts for distillation by @mxinO in #2759
- fix: stable mooncake test with backend reuse by @ZhiyuLi-Nvidia in #2760
- feat: Pass use_fused_weighted_squared_relu argument to megatron config by @guyueh1 in #2761
- ci: add ray.sub sandbox sidecar support by @macandro96 in #2763
- fix: Set step_finished=True in async GRPO logging by @pjin-nvidia in #2766
- fix(vllm): respect external VLLM_CACHE_ROOT for per-DP-group cache by @yfw in #2767
- ci: increase Slurm time limits by +5 min for 5 nightly tests by @kajalj22 in #2769
- feat: add effort levels to nemo gym by @ashors1 in #2770
- feat: cache NeMo Gym server venvs and apptainer in the release image by @yfw in #2771
- fix(distillation): offload student optimizer before teacher inference by @pthombre in #2772
- fix(security): bump diffusers, upgrade rsync, remove ffmpeg by @kajalj22 in #2773
- fix: increase nightly test time 1820 -> 1890 by @yuki-97 in #2777
- fix: fix rollout metric name in RolloutManager unit test by @yuki-97 in #2778
- perf: Update the dsv3 perf recipe by @youngeunkwon0405 in #2779
- feat: Multi-Teacher On-Policy Distillation (MOPD) by @yfw in #2780
- docs: add dedicated LoRA page with backend schema comparison by @RayenTian in #2781
- fix(ppo): restore offload_after_refit semantics by @bg51717 in #2782
- fix(distillation): use _spinup instead of removed health_check for NeMo-Gym by @yfw in #2786
- fix(grpo): materialize advantages before message penalties by @macandro96 in #2787
- fix(vllm): pass ignore_eos to vLLM SamplingParams in _build_sampling_params by @achartier in #2788
- fix(vllm): fix FP8 MoE kernel initialization for CUDA graph mode by @achartier in #2789
- feat(megatron): add MFU reporting for Megatron training workers by @achartier in #2790
- feat: overlap NeMo Gym init with vLLM init in distillation by @mxinO in #2793
- perf: Fix DSV3 perf regression & boost weight loading time (dsv3 MTP) by @youngeunkwon0405 in #2794
- feat(xtoken): multi-teacher support for cross-tokenizer off-policy distillation by @avenkateshha in #2797
- chore: move GLM-5.1 from disable to release test by @yuki-97 in #2798
- feat: log toolcall and thinktag violation rate by @arnavk-nvidia in #2800
- feat: add MTP (multi-token prediction) training support for nemotron by @yfw in #2801
- fix: interleave Eagle3 draft QKV into Megatron's per-group layout by @isomap in #2802
- fix: Preserve quant worker hook overrides during fp8 setup by @mxinO in #2803
- ci: Bump Megatron-Bridge to 554c7b9 by @svcnvidia-nemo-ci in #2820
- feat: video + audio understanding GRPO training recipe by @yuekaizhang in #2823
- feat(ppo): in-model value head for Megatron PPO by @bg51717 in #2825
- perf: reduce srun overhead in ray.sub and gate driver on sandbox readiness by @ananthsub in #2827
- feat: async checkpointing for Megatron policy workers by @ananthsub in #2828
- feat: super-v3 recipe and docs by @macandro96 in #2829
- ci: forward SANDBOX_CONTAINER/COMMAND/ENV_VARS to ray.sub by @kajalj22 in #2832
- feat: Support Chunked Linear Fusion for GRPO by @pengdurice in #2833
- docs: Update README with minimax news by @snowmanwwg in #2834
- docs: fix dataset_name override path in grpo task mapping note by @yuki-97 in #2836
- feat: Support for dtensor ppo by @fujial-code in #2837
- test(data_plane): session-scope mooncake fixtures by @ZhiyuLi-Nvidia in #2838
- feat(ppo): Megatron value-model sequence packing + context parallelism by @bg51717 in #2839
- feat: add AIME 2025 and 2026 response dataset variants by @yuki-97 in #2841
- feat: add grpo-smoke recipe for quick install validation by @yuki-97 in #2842
- test: add vLLM HTTP logprobs contract test for NeMo-Gym capture by @ananthsub in #2845
- fix: missing validation logging in distillation by @odedovadia in #2847
- docs: update router replay validation report link by @zyzhou5 in #2848
- feat: support router replay (R3) without the dataplane by @zyzhou5 in #2849
- ci: Add super nightly tests by @ashors1 in #2855
- fix: Fix the default setting in Nemo Gym Nano v3 recipe config by @snowmanwwg in #2857
- fix(logger): summarize list-valued metrics to avoid MLflow key explosion by @mrm-196 in #2861
- fix(megatron): honor policy.logprob_chunk_size in the training loss path by @kaloyan-inherent in #2872
- fix: fix several tests by pin triton moe backend by @yuki-97 in #2873
- feat: add Mistral Medium 3.5 (128B) text-only DAPO support by @sharonyu-115 in #2875
- fix(megatron): only build the MTP loss mask when MTP is enabled by @yfw in #2876
- chore: temporary skip SGLang L1 tests by @yuki-97 in #2881
- fix: topk fp32 chunk memory by @odedovadia in #2883
- feat: add multiple penalties for model behaviour by @macandro96 in #2885
- feat(loss): support TIS lower bound by @macandro96 in #2886
- feat: vllm worker env shutdown by @arnavk-nvidia in #2887
- docs: fix broken PyTorch CUDA notes links (redirect stub breaks linkcheck) by @terrykong in #2889
- fix: enforce_eager WAR for glm4.7-flash colocated refit (vLLM 0.20) by @zpqiu in #2895
- fix: increase NUM_MINUTES for 5 tests hitting Slurm timeouts by @kajalj22 in #2896
- fix: fix sglang env and re-enable sglang in CI by @yuki-97 in #2898
- ci: update dapo test metrics following PR 2478 by @ashors1 in #2903
- fix: fix fp8 hf_config_overrides bug by @ashors1 in #2904
- feat: support R3 async RL without TQ by @zyzhou5 in #2908
- fix: increase nightly test time 2150 -> 2300 by @yuki-97 in #2910
- feat: R3 gym notq router replay by @zyzhou5 in #2915
- feat: ThreadSafeTimer, container init timing, and Ray telemetry by @saumishr in #2916
- fix(async-grpo): starvation diagnostics, gym logging, and dataloader exhaustion by @saumishr in #2917
- perf: batch worker port discovery by @macandro96 in #2920
- fix(topology): exclude unknown-NVLink-domain nodes from segment selection by @terrykong in #2924
- docs: strengthen contributor review/style skill guidelines by @terrykong in #2926
- refactor(eval): route AIME eval through the response dataset registry by @NolenLiang in #2928
- ci: Set GHA environment deployment to false by @chtruong814 in #2931
- fix: fix flaky L1_Functional_Tests_Gym distillation_nemo_gym by @yuki-97 in #2933
- fix(check_metrics): force console width to prevent CI log truncation by @thomasdhc in #2936
- feat: auto-detect CPUS_PER_WORKER from Slurm in ray.sub by @terrykong in #2943
- docs(ppo): clarify backend is config-selected, drop dup block by @qiaochuz-nv in #2945
- chore: update grpo-smoke to grpo_smoke to match other configs by @yuki-97 in #2954
- fix: super launcher script - default gym env var and mount it by @macandro96 in #2956
- fix: KL backward when clamping is active by @smahdavi4 in #2958
- fix: bump prometheus-fastapi-instrumentator>=8.0.2 for fastapi>=0.137 compat by @kajalj22 in #2960
- fix: allow router replay trace fallback composition by @zyzhou5 in #2963
- fix: tune small scale super configs for h100 by @macandro96 in #2965
- fix: Add missing variables in mopd nightly by @yfw in #2966
- fix(grpo_sync): skip refit for colocated MegatronGeneration by @ZhiyuLi-Nvidia in #2967
- chore: bump Gym workspace to 610a08ab by @kajalj22 in #2970
- chore: make ppo default to dtensor to keep consistent with other algos by @yuki-97 in #2974
- refactor(ppo): reuse LossPostProcessor in value worker + add offload_to_cpu by @bg51717 in #2980
- fix(deepscaler): disable vLLM rotary_embedding custom op in DeepScaler recipes by @NolenLiang in #2981
- fix: avoid nvidia-cutlass-dsl install race + fix dsv3 gb200 perf test by @yuki-97 in #2982
- fix: WAR for Perf test failing with NCCL error by @RayenTian in #2986
- fix(megatron): prefer nvrx strategy for HF import saves by @jinglinglingling in #2989
- docs(mopd): fix dataset override key data.val -> data.validation by @qiaochuz-nv in #2991
- fix: reduce NUM_MINUTES to match 04:00:00 CI walltime in 2 test scripts by @kajalj22 in #2993
- fix: update super recipes for gym bump by @yfw in #2996
- refactor(sglang): allocate ports from reserved ranges by @xiuhu17 in #2997
- ci: Add nightly GB200 super test by @ashors1 in #3016
- ci: fix grpo-nanov3-30BA3B-2n8g-megatron_generation.yaml config by @ashors1 in #3017
- fix: Keep QARL nightlies schedulable on H100 nodes by @mxinO in #3018
- test: disable flaky grpo-qwen3.5-35ba3b-2n8g-automodel-ep16 nightly by @zpqiu in #3020
- fix: (qwen3-omni) disable vLLM sequence_parallel_chunk custom op by @yuekaizhang in #3021
- chore: loosen metric in cispo nightly by @yuki-97 in #3026
- fix: fix grpo-gspo-deepscaler-1.5b-8K and tighten thresholds by @yuki-97 in #3029
- fix: WAR for grpo-qwen3-235b-16n4g crush by @RayenTian in #3030
- ci: use PAT for code-freeze branch push by @kajalj22 in #3031
- ci: NVFP4 W4A16 nightly tests by @HollowMan6 in #3032
- ci: use NVIDIA inference for Claude review by @chtruong814 in #3033
- docs: X-Token multiteacher example by @sharathts in #3035
- fix: fix grpo-gemma3-27b-it-8n4g-fsdp2tp4-actckpt-long by @yuki-97 in #3044
- ci: fix super environment tests by @ashors1 in #3046
- ci: bump NUM_MINUTES +20% for 3 nightly tests hitting Slurm timeout by @kajalj22 in #3049
- fix: cap dapo-deepseek-v3-64n8g perf test NUM_MINUTES at 240 (cluster limit) by @kajalj22 in #3052
- fix: fix segment_size in gb200 tests by @yuki-97 in #3069
- fix(checkpoint): break metric ties by recency in get_best_checkpoint_path by @tianyi-zhang-02 in #3071
- fix: fix sft-llama3.1-70b-8n8g-tp4pp2-long-megatron by @yuki-97 in #3073
- chore: bump Gym submodule to v0.4.0 by @kajalj22 in #3076
- ci: reduce number of steps for glm5.1 test case by @slikhite-1 in #3077
- docs: add Docker Quickstart to installation guide and README by @kajalj22 in #3084
- chore: fix CVEs in opencv, av, wandb; tighten setuptools build floor by @kajalj22 in #3085
- docs: update CUDA 12 references to CUDA 13 as primary supported version by @kajalj22 in #3086
- perf: tune Ray GCS server configs for burst tolerance at scale by @ananthsub in #3089
- perf: reduce Qwen3 logprob batch size by @NolenLiang in #3093
- fix: fix grpo-deepscaler-1.5b-24K by @yuki-97 in #3097
- fix: fix grpo-qwen2.5-1.5B-4n8g-megatron-yarn-256k by @yuki-97 in #3098
- fix: Port contention issues between Ray/vLLM/Gym and sandbox workers by @saumishr in #3103
- fix: [NemoRL] Disable expensive Gym logging to reduce inter-step inefficiency by @saumishr in #3106
- chore: replace decord2 with torchvision/torchaudio for media loading by @chtruong814 in #3107
- chore: update deepscaler nightly metric to avoid flaky by @yuki-97 in #3114
- fix: un-blocklist deepseek_v3 in transformers tokenizer class set by @ZhiyuLi-Nvidia in #3116
- perf: reduce selected-token logprob memory by @mohamed-alansary in #3124
- fix: Update Super SWE test config by @ashors1 in #3126
- feat: add OpenR1-Math-220k response dataset by @tianyi-zhang-02 in #3131
- fix: stop scaling scontrol RPCs with node count in ray.sub CPU detection by @terrykong in #3132
- perf: perf recipe changes to enable force on policy ratio by @seonjinn in #3135
- fix: use staged SWE1 data in nightly recipe by @zyzhou5 in #3145
- docs: fix stale references and typos for NVBug 6436630 by @qiaochuz-nv in #3147
- fix: skip RayVirtualCluster.shutdown when Ray already torn down by @ZhiyuLi-Nvidia in #3148
- fix(grpo): pin inference_optimized config for newer Megatron-Core images by @shanmugamr1992 in #3150
- fix: fix dapo-deepseek-v3-64n8g.v2 and dsv3 tokenizer by @yuki-97 in #3154
- feat: fault-tolerance checkpoint retention (ft_save_period / ft_keep_latest_k) by @ananthsub in #3157
- perf(ray.sub): tune GCS for large-scale multi-node init bursts by @ananthsub in #3158
- fix(vllm): assign node-local VLLM_PORT for cross-node model parallelism by @ananthsub in #3159
- feat(grpo): mask env-flagged samples from policy loss by @macandro96 in #3163
- fix: add vLLM config context during collective refit by @snowmanwwg in #3168
- fix: zero router aux loss in Qwen3.5 automodel recipes by @zpqiu in #3169
- fix(ppo): restore optimizer state on checkpoint resume by @bg51717 in #3171
- fix: fix rollout metrics fail in unit test by @yuki-97 in #3173
- fix: ensure unique TOPO_RANK per node by @yuki-97 in #3178
- fix: handle inflated packed sequence lengths in input-id packing by @macandro96 in #3182
- ci: add JOB_REAPER_COMMENT support to tools/launch and super-rlvr recipe by @kajalj22 in #3184
- fix: Fix mtp metrics scale and mtp grad norm logging by @yfw in #3194
- test: increase NUM_MINUTES to 85 for grpo-nanov3-30BA3B-2n8g-fsdp2-lora by @kajalj22 in #3202
- ci: Nemotron3-Super Perf Recipe by @parthmannan in #3207
- feat: add phase timing markers to ray.sub for diagnosing startup stalls by @terrykong in #3209
- fix: fix OpenR1-Math-220k unit test by @yuki-97 in #3212
- fix: revert max_concurrency and label fast by @yuki-97 in #3218
- build: pin Apptainer installer to 1.4.5 by @yfw in #3221
- fix: Fix gym vllm version in super doc by @yfw in #3228
- chore: bump cryptography, pillow, and mooncake to address CVEs by @kajalj22 in #3230
- test: unset CI env var in audiomcq VLM GRPO test by @kajalj22 in #3232
- ci: increase sft-nanov3-30BA3B-2n8g-fsdp2-lora timeout to 45min by @kajalj22 in #3234
- ci: fix super rlvr test by @ashors1 in #3246
- fix: preserve runtime tools after arm64 Apptainer build by @kajalj22 in #3253
- ci: bump async-gym megatron test wall-clock budget to 120 min by @shanmugamr1992 in #3258
- fix: bump mlm to fix NVBug 6432008 by @yuki-97 in #3265
- fix(vlm): clear CI env var for vLLM workers in qwen3-omni audiomcq recipe by @kajalj22 in #3291
New Contributors
- @mxinO made their first contribution in #1756
- @yuekaizhang made their first contribution in #2073
- @snivertynv made their first contribution in #2156
- @anwithk made their first contribution in #2193
- @pthombre made their first contribution in #2194
- @trias702 made their first contribution in #2210
- @sharonyu-115 made their first contribution in #2224
- @xiuhu17 made their first contribution in #2267
- @adityavavreNVDA made their first contribution in #2301
- @youngeunkwon0405 made their first contribution in #2318
- @tdene made their first contribution in #2355
- @jthomson04 made their first contribution in #2363
- @bg51717 made their first contribution in #2375
- @vigneshwaran made their first contribution in #2376
- @jlcanta made their first contribution in #2418
- @jinglinglingling made their first contribution in #2443
- @zswerth made their first contribution in #2461
- @saumishr made their first contribution in #2466
- @xxman-google made their first contribution in #2469
- @slikhite-1 made their first contribution in #2489
- @smahdavi4 made their first contribution in #2506
- @avenkateshha made their first contribution in #2508
- @kaloyan-inherent made their first contribution in #2513
- @NolenLiang made their first contribution in #2524
- @achartier made their first contribution in #2536
- @qiaochuz-nv made their first contribution in #2541
- @macandro96 made their first contribution in #2559
- @zyzhou5 made their first contribution in #2590
- @HollowMan6 made their first contribution in #2592
- @binhu-nv made their first contribution in #2624
- @MyviordDjaja made their first contribution in #2640
- @lonexreb made their first contribution in #2642
- @louisfaury made their first contribution in #2677
- @mehraakash made their first contribution in #2683
- @jQizhang made their first contribution in #2685
- @arnavk-nvidia made their first contribution in #2686
- @pjin-nvidia made their first contribution in #2766
- @snowmanwwg made their first contribution in #2834
- @fujial-code made their first contribution in #2837
- @mrm-196 made their first contribution in #2861
- @sharathts made their first contribution in #3035
- @tianyi-zhang-02 made their first contribution in #3071
- @mohamed-alansary made their first contribution in #3124
- @shanmugamr1992 made their first contribution in #3150
Full Changelog: v0.6.0...v0.7.0