Skip to main content
NeMo-RL is the default catalog for a full post-training stack, currently 0.7.0. Methods: nemo-rl/sft, dpo, grpo, grpo-lora, ppo, rm, distillation, maxrl, opsd. Observability is platform, which means two things you do not have to do: pass --observability-url, and call starforge.report yourself. The adapter and the framework bridge handle both.

Create and tune

Model and datasets usually live in configs/base/ + configs/models/ fragments. Submit often needs no --model / --train-data. Config details: config.yaml.

Submit

--profile sets billed topology. The adapter writes cluster.num_nodes and cluster.gpus_per_node from FORGE_CLUSTER_* and points checkpointing.checkpoint_dir / logger.log_dir at FORGE_OUT_DIR. Do not fight those keys in the experiment file; they are overwritten. Heterogeneous pools (train vs rollout on different GPU series) only on kuberay / slurm:
When a separate rollout pool exists, the adapter sets policy.generation.colocated.enabled=false and fills colocated resource counts from FORGE_POOL_TOPOLOGY. You do not maintain a separate noncolocated overlay YAML for that. local and agent do not run multi-pool jobs.

Entrypoint

Recipe default is the versioned NeMo-RL module/file. If the recipe declares experiment_override and that file exists in the experiment directory, that file wins (custom env / dataset experiments that ship run.py). spec.source.entrypoint in the JobSpec is rejected; you cannot override the recipe from submit JSON. The container needs NEMO_RL_DIR (server FORGE_NEMO_RL_DIR, typically /opt/nemo-rl in the NGC image). Missing it fails compile: the server cannot proxy NeMo-RL jobs.

After training

--then export --then eval on submit runs those after SUCCEEDED.

Tool environments

GRPO/PPO can point at modules under common/environments/. See Agent environments.