Mirror container-init timing & RL-init telemetry across non-GRPO entrypoints
- 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
Assessment
This issue has not been assessed yet.