0.7.0. Methods:
nemo-rl/sft, dpo, grpo, grpo-lora, ppo, rm, distillation, maxrl, opsd.
Two things you do not have to do: pass --observability-url, and call tuneplane.report. This
framework’s observability is platform: the integration enables native TensorBoard output
(logger.tensorboard_enabled). An isolated collector reads the event files without modifying
NeMo-RL logger classes. Explicitly configured external trackers remain available.
Create and tune
configs/base/ and a configs/models/ fragment, so a submission
usually needs no --model or --train-data. See config.yaml for how the
layering resolves.
Submit
Put rollout on different cards
policy.generation.colocated.enabled=false and
fills the colocated resource counts from TUNEPLANE_POOL_TOPOLOGY. You do not maintain a
non-colocated overlay YAML for this.
Multiple pools need a kubernetes or slurm Fleet. Node Fleets support one homogeneous pool across at most 8 machines.
Bring your own run.py
The recipe’s entrypoint is the versioned NeMo-RL file. If the recipe declaresexperiment_override and that file exists in your experiment directory, yours wins — which is
how an experiment with a custom dataset or a tool environment ships its own run.py.
spec.source.entrypoint in the JobSpec is refused. You cannot override the recipe from
submission JSON.
The container needs NEMO_RL_DIR, which the deployment sets as TUNEPLANE_NEMO_RL_DIR and is
typically /opt/nemo-rl in the NGC image. Without it the submission fails naming the missing
configuration.
Check it worked
tp job logs shows Ray starting and then the first training step. The Charts tab fills with
train/reward, validation/accuracy, train/entropy, train/kl_penalty and
train/token_mult_prob_error.
Watch that last one. Above one or two percent, weight sync between the trainer and the rollout
engine is broken, and a reward curve that looks fine cannot be trusted.
After training
nemo-dcp and nemo-megatron. --then export --then eval on submit runs the
first two automatically once the job succeeds.