Skip to content

fix(rollout): require complete groups for group estimators - #109

Merged
hijkzzz merged 1 commit into
NVIDIA-NeMo:mainfrom
k21993:fix/group-estimator-completeness
Sep 13, 2026
Merged

hijkzzz merged 1 commit into
NVIDIA-NeMo:mainfrom
k21993:fix/group-estimator-completeness

Conversation

@k21993

@k21993 k21993 commented Sep 12, 2026

Copy link
Copy Markdown
Contributor

Summary

Supersedes #48 with a smaller implementation against current main, following the rollout dispatch and regrouping changes in #108.

Group completeness was enforced only when dynamic filtering was enabled. A group estimator could therefore receive fewer than n_samples_per_prompt usable rollouts after a per-response drop, changing its intended prompt-level baseline.

Require complete groups when training with group estimators, while preserving partial groups for:

  • per-sample estimators when dynamic filtering is disabled;
  • evaluation, including when a group estimator is configured.

Existing dynamic-filtering behavior remains unchanged.

Test plan

Regression coverage:

  • Group estimator with dynamic filtering disabled rejects an incomplete group.
  • Per-sample estimator with dynamic filtering disabled retains an incomplete group.
  • Evaluation retains an incomplete group even when configured with a group estimator.

Validation:

  • python -m pytest -q tests/unit/test_samples_generator.py — 19 passed.
  • python -m compileall -q molt examples/python tests — passed.
  • Ruff lint and format checks — passed.

The full suite could not collect locally because the test environment has PyTorch 2.4 and no Ray. Full-suite validation remains pending in the supported project container.

Group estimators require every requested rollout to compute the intended prompt-level baseline. With dynamic filtering disabled, a per-response drop could leave a partial group and change that baseline.

Require complete groups for group estimators while preserving partial groups for per-sample estimators and evaluation.

Signed-off-by: Karthik Suresh <karsures@adobe.com>
@copy-pr-bot

copy-pr-bot Bot commented Sep 12, 2026

Copy link
Copy Markdown

This pull request requires additional validation before any workflows can run on NVIDIA's runners.

Pull request vetters can view their responsibilities here.

Contributors can view more details about this message here.

@hijkzzz
hijkzzz merged commit 34fd910 into NVIDIA-NeMo:main Sep 13, 2026
1 check passed
hijkzzz added a commit that referenced this pull request Sep 13, 2026
…" (#111)

This reverts commit 34fd910.

A per-response drop (empty_tokens / vlm_media_unresolved / vlm_truncation /
logprob_misalign / no_action_tokens) marks ONE rollout as unusable; #109 made a group
estimator discard the prompt's healthy siblings as well and backfill, wasting 7 rollouts of
generation per incident on the long-context / multi-image episodes that are most expensive.
The motivations do not hold on main: every group estimator already handles short groups
(mean over the remaining rollouts, grpo std guard, rloo n-1), and with dynamic filtering off
batch divisibility is handled by balance_experiences dropping the trailing remainder, so
there is no NCCL hang on this path. Plain over-length rollouts are truncated and kept.

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants