NVIDIA-NeMo / NVIDIA-NeMo/RL

Mirror container-init timing & RL-init telemetry across non-GRPO entrypoints

Open
#2,949 0 comments 0 reactions 1 assignee Claimed by @saumishr View on GitHub
Dominant language
Python
Stars
2k
Forks
561
Avg merge
4d 5h
Merged PRs (30d)
145

Description

### Summary

PR #2916 added startup observability to the GRPO entrypoints:
- `log_container_init_timing()` — prints the pre-Python container-init breakdown
(Slurm prologue / cluster startup / driver startup / total) from env vars set in `ray.sub`.
- An `rl_init_timer` (`Timer`) that records an "RL INIT TIMING BREAKDOWN"
(config / tokenizer / data / ray_connect / setup / total).

This was wired into the 4 GRPO launchers only:
- `examples/run_grpo.py`
- `examples/run_vlm_grpo.py`
- `examples/run_grpo_sliding_puzzle.py`
- `examples/nemo_gym/run_grpo_nemo_gym.py`

### Request

`log_container_init_timing()` and the init-timing breakdown are algorithm-agnostic, so it
would be useful to mirror them across the remaining entrypoints for consistent startup
observability:

- [ ] `examples/run_dpo.py`
- [ ] `examples/run_sft.py`
- [ ] `examples/run_vlm_sft.py`
- [ ] `examples/run_ppo.py`
- [ ] `examples/run_rm.py`
- [ ] `examples/run_distillation.py`
- [ ] `examples/run_xtoken_off_policy_distillation.py`
- [ ] `examples/run_eval.py`

### Notes

- Non-blocking follow-up to #2916 (not required for that PR to merge).
- The async-GRPO *efficiency accounting* (idle/wasted categories) is GRPO-async-specific and
out of scope here; this issue is just the container-init + RL-init timing breakdown.
- Consider factoring the repeated "print init breakdown" block (currently duplicated in each
GRPO launcher) into a shared helper while mirroring, to avoid further copy-paste.

_Filed as a follow-up from the review of #2916._

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.