Skip to content

Is there a way to reproduce a specific rollout's random seed, or was that intentionally dropped? #128

Description

@amtellezfernandez

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions