cp: perf: Add num_workers in DPO, GRPO and RM (1314) into r0.4.0#1354
cp: perf: Add num_workers in DPO, GRPO and RM (1314) into r0.4.0#1354
perf: Add num_workers in DPO, GRPO and RM (1314) into r0.4.0#1354Conversation
Signed-off-by: Kate Cheng <yunhsuanc@nvidia.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com>
📝 WalkthroughWalkthroughAdds a new data.num_workers configuration to multiple example YAMLs and wires this value into StatefulDataLoader initializations in DPO, GRPO, and RM algorithms. Updates a unit test to include the new field in the data config. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
participant U as Runner
participant CFG as YAML Config
participant ALG as Algorithm Setup (DPO/GRPO/RM)
participant DLtrain as StatefulDataLoader (train)
participant DLval as StatefulDataLoader (val)
U->>CFG: Load config
CFG-->>ALG: data{..., num_workers}
ALG->>DLtrain: init(..., num_workers=data.num_workers)
ALG->>DLval: init(..., num_workers=data.num_workers)
note over DLtrain,DLval: Data loading uses specified worker count
U->>ALG: start training/validation
ALG->>DLtrain: iterate batches
ALG->>DLval: iterate batches
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested labels
Suggested reviewers
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (3 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 6
📜 Review details
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (10)
examples/configs/dpo.yaml(1 hunks)examples/configs/grpo_math_1B.yaml(1 hunks)examples/configs/rm.yaml(1 hunks)examples/configs/sft_openmathinstruct2_megatron.yaml(1 hunks)examples/configs/vlm_grpo_3B.yaml(1 hunks)examples/configs/vlm_grpo_3B_megatron.yaml(1 hunks)nemo_rl/algorithms/dpo.py(2 hunks)nemo_rl/algorithms/grpo.py(2 hunks)nemo_rl/algorithms/rm.py(2 hunks)tests/unit/algorithms/test_grpo.py(2 hunks)
🧰 Additional context used
📓 Path-based instructions (3)
**/*.py
📄 CodeRabbit inference engine (CODING_GUIDELINES.md)
**/*.py: Follow the Google Python Style Guide for all Python code
Target Python 3.12+ for all Python code in NeMo-RL
Indent Python code with 4 spaces; do not use tabs
Python filenames should be snake_case (e.g., some_file.py)
Class names should be PascalCase
Function and method names should be snake_case
Local variable names should be snake_case; if starting with a number, prefix with k (e.g., k_99th_percentile)
Global variables should be UPPER_SNAKE_CASE and prefixed with G_ (e.g., G_MY_GLOBAL)
Constants should be UPPER_SNAKE_CASE
Avoid shadowing variables declared in an outer scope
Initialize all externally visible members of a class in the constructor
For public interfaces used outside a file, prefer docstrings over comments
Use comments mainly for code within a function or interfaces local to a file
Commented-out code must include a nearby comment explaining usage and why it is commented out; otherwise remove before merging
Use Google-style docstrings for classes and functions (Sphinx-parseable)
Avoid using reflection when functionality can be easily achieved without it
Limit except clauses to the smallest specific set of exceptions possible
For duck-typing via try/except, keep the try body minimal and use else for main logic
Add the NVIDIA copyright header (with current year) at the top of all Python files, excluding tests/ and test-only scripts
Files:
nemo_rl/algorithms/dpo.pynemo_rl/algorithms/rm.pynemo_rl/algorithms/grpo.pytests/unit/algorithms/test_grpo.py
nemo_rl/**/*.py
📄 CodeRabbit inference engine (CODING_GUIDELINES.md)
nemo_rl/**/*.py: Do not set non-None configuration defaults in code; YAML is the single source of truth for defaults
Access required config attributes directly (e.g., policy_cfg["precision"]) and assume presence; do not introduce hidden defaults
Express configuration optionality via TypedDict using typing.NotRequired
When adding a new config key to a TypedDict subclass, document the key’s purpose, valid values/types, and recommended default in code
For any class or function decorated with @ray.remote, add '# pragma: no cover' on the class/def line (and on remote functions)
Files:
nemo_rl/algorithms/dpo.pynemo_rl/algorithms/rm.pynemo_rl/algorithms/grpo.py
examples/configs/*.yaml
📄 CodeRabbit inference engine (CODING_GUIDELINES.md)
examples/configs/*.yaml: Exemplar configs under examples/configs/.yaml must include documented defaults
When adding a new config key, reflect its recommended default in exemplar YAMLs under examples/configs/.yaml
Files:
examples/configs/vlm_grpo_3B.yamlexamples/configs/vlm_grpo_3B_megatron.yamlexamples/configs/dpo.yamlexamples/configs/sft_openmathinstruct2_megatron.yamlexamples/configs/rm.yamlexamples/configs/grpo_math_1B.yaml
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (5)
- GitHub Check: Lint check
- GitHub Check: Lint check
- GitHub Check: Lint check
- GitHub Check: Post submodule check comment / Comment on PR
- GitHub Check: Post automodel integration comment / Comment on PR
🔇 Additional comments (5)
tests/unit/algorithms/test_grpo.py (1)
243-243: LGTM!The test configurations correctly include the new
num_workersfield, ensuring test coverage for the updated data configuration schema. This prevents test failures due to missing required config attributes.Also applies to: 299-299
nemo_rl/algorithms/grpo.py (1)
210-210: LGTM!The implementation correctly wires
num_workersfrom the data config to both training and validation dataloaders, following the guideline to access required config attributes directly without introducing hidden defaults. The changes are consistent with the similar updates innemo_rl/algorithms/rm.pyandnemo_rl/algorithms/dpo.py.As per coding guidelines: "Access required config attributes directly and assume presence; do not introduce hidden defaults"
Also applies to: 232-232
nemo_rl/algorithms/dpo.py (2)
202-202: LGTM!Consistent implementation for validation DataLoader, correctly using the same configuration parameter.
179-179: LGTM – DataConfig defines and documents num_workers
DataConfigincludesnum_workers: NotRequired[int]with accompanying comments per coding guidelines.examples/configs/vlm_grpo_3B_megatron.yaml (1)
159-159: Verifiednum_workers: 1in all example configs The six targeted YAMLs (dpo.yaml, grpo_math_1B.yaml, rm.yaml, sft_openmathinstruct2_megatron.yaml, vlm_grpo_3B.yaml, vlm_grpo_3B_megatron.yaml) all include the default.
perf: Add num_workers in DPO, GRPO and SFT for loading data (1314) into r0.4.0perf: Add num_workers in DPO, GRPO and RM for loading data (1314) into r0.4.0
perf: Add num_workers in DPO, GRPO and RM for loading data (1314) into r0.4.0perf: Add num_workers in DPO, GRPO and RM for dataloader (1314) into r0.4.0
perf: Add num_workers in DPO, GRPO and RM for dataloader (1314) into r0.4.0perf: Add num_workers in DPO, GRPO and RM (1314) into r0.4.0
… into `r0.4.0` (#1354) Signed-off-by: Kate Cheng <yunhsuanc@nvidia.com> Signed-off-by: NeMo Bot <nemo-bot@nvidia.com> Co-authored-by: Kate Cheng <yunhsuanc@nvidia.com>
beep boop [🤖]: Hi @katec846 👋,
Summary by CodeRabbit
New Features
Tests