NVIDIA-NeMo / NVIDIA-NeMo/RL

test: add Megatron-backend variant of Gym token-capture recovery functional test

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

Description

## What is uncovered
Both token-capture recovery functional tests added in #4129 source the vLLM-only base
`tests/functional/grpo_async_gym_single_controller.sh`:
- `tests/functional/grpo_async_gym_single_controller_sibling_recovery.sh`
- `tests/functional/grpo_async_gym_single_controller_streaming_recovery.sh`

The Megatron path (MInf capture -> data-plane checkpoint -> process restart -> ledger finalization)
has no end-to-end coverage; only unit tests exercise the Megatron stager/preparer.

## Why it is blocked
`_require_minf_capture_hooks()` in `nemo_rl/algorithms/single_controller_utils/setup.py`
(called at line 1201, raises at line 965) raises `NotImplementedError` when the pinned
megatron-core lacks `RequestPayloadStager` / `RequestPromptPreparer` from NVIDIA/Megatron-LM
PR #7015. Until `3rdparty/Megatron-Bridge-workspace/Megatron-Bridge` is bumped to a revision
that includes #7015, `policy.generation.backend=megatron ++token_capture.enabled=true` fails at setup.

## Steps once #7015 is pinned
1. Add `grpo_megatron_generation_gym_single_controller_sibling_recovery.sh` (and a streaming twin)
that set `BASE_TEST` to `grpo_megatron_generation_gym_single_controller.sh` (already
`policy.generation.backend=megatron` + `mcore_generation_config.expose_http_server=true`
via `examples/nemo_gym/grpo_qwen3_0_6b_megatron_generation_single_controller.yaml`).
2. Register them in `tests/functional/L1_Functional_Tests_SingleController.sh` next to the
vLLM variants (lines 191/194); use `run_test fast` only if runtime fits the Lfast budget.

Split out from #4129 per review discussion.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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.