Participant checkpointing: what the new per-rollout bookkeeping is for. #4266
requires token capture for it, but not for discovery alone.
Dotted words have a short explanation: hover or tap them.
The new bookkeeping in run_rollouts turns on when discovery has found Gym servers,
not when participant checkpointing is on. It then reads the two row keys that only token capture adds.
Same setup, token capture on and off
The config that crashes, and why nothing stops it:
The review is still pending, so this link opens for others only after it is published.
What would fix it โ proposed, not in the PR
Nothing below is implemented. Turn the bookkeeping on with the switch it serves, participant
checkpointing, instead of "discovery found servers". Setup already knows that switch; it only has to pass it
to the actor.
# setup (proposed): pass the switch into the Gym actor
actor_cfg["participant_checkpointing"] = cfg.gym.participant_checkpointing_enabled # False# nemo_gym.py run_rollouts, at the gate (proposed)
if self._participant_checkpointing: # False โ skip registration
register(row["_ng_rollout_id"], row["_ng_attempt_index"])
# same check before the receipt fetch at :1904# result: discovery-only + token capture off runs the rollout normally
Real code this changes: the gate at
nemo_gym.py:1843, the receipt fetch at
nemo_gym.py:1904, and the actor config built in setup
(the switch itself is added by #4266).
So what. Anyone who turns on discovery by itself, which its own docs describe as safe, and
does not use token capture, gets a KeyError on the first rollout batch. Gating on participant
checkpointing makes discovery do only what it says: look, not change how rollouts run.