Digging into the external-driver integration, noticed session seeds are always freshly randomized with no way to override:
# runtime/services/driver_service.py:73
random_seed=random.randint(0, 2**32 - 1)
Same in traffic_service.py:94. Checked DriverSessionConfig, UnboundRollout, and the RolloutSpec proto (scenario_id, nr_rollouts, session_uuids) - none of them have a seed field. session_uuids is just a caller-supplied label, never used as a seed.
nr_rollouts gives you N independent runs so you can get a distribution, and force_determinism=true makes inference reproducible given whatever seed a session happened to get - but neither lets you pick or reproduce a specific seed after the fact.
Saw in the changelog that RolloutSpec.random_seed used to exist and got replaced by nr_rollouts during the daemon refactor. Before assuming this is just a missing feature - was that intentional? Is there another way to reproduce a specific rollout that I'm not seeing?
If it's wanted: IsaacLab has an int | None seed field that falls back to random when unset (envs/manager_based_env_cfg.py, utils/seed.py's configure_seed()) - could be a reasonable pattern to mirror on RolloutSpec, though nr_rollouts would need to expand one base seed into N reproducible ones somehow, and the traffic side would need actual wiring since its random_seed is only logged right now (servicer.py:213), not used for anything.
Happy to take a stab at this if useful.
Digging into the external-driver integration, noticed session seeds are always freshly randomized with no way to override:
Same in
traffic_service.py:94. CheckedDriverSessionConfig,UnboundRollout, and theRolloutSpecproto (scenario_id,nr_rollouts,session_uuids) - none of them have a seed field.session_uuidsis just a caller-supplied label, never used as a seed.nr_rolloutsgives you N independent runs so you can get a distribution, andforce_determinism=truemakes inference reproducible given whatever seed a session happened to get - but neither lets you pick or reproduce a specific seed after the fact.Saw in the changelog that
RolloutSpec.random_seedused to exist and got replaced bynr_rolloutsduring the daemon refactor. Before assuming this is just a missing feature - was that intentional? Is there another way to reproduce a specific rollout that I'm not seeing?If it's wanted: IsaacLab has an
int | Noneseed field that falls back to random when unset (envs/manager_based_env_cfg.py,utils/seed.py'sconfigure_seed()) - could be a reasonable pattern to mirror onRolloutSpec, thoughnr_rolloutswould need to expand one base seed into N reproducible ones somehow, and the traffic side would need actual wiring since itsrandom_seedis only logged right now (servicer.py:213), not used for anything.Happy to take a stab at this if useful.