isaaclab.benchmark#
Benchmarking utilities for IsaacLab.
This package provides the public benchmark framework and workflow API.
Request and result classes
Simulation launcher configuration shared by benchmark workflows. |
|
Output configuration shared by benchmark workflows. |
|
Request an RL checkpoint playback benchmark. |
|
Completed benchmark result. |
|
Request an environment runtime benchmark. |
|
Request a startup profiling benchmark. |
|
Request an RL training benchmark. |
Workflow functions
Run a benchmark workflow from a typed request. |
|
|
Run an RL checkpoint playback benchmark. |
|
Run an environment runtime benchmark. |
|
Run a startup profiling benchmark. |
|
Run an RL training benchmark. |
Benchmark framework
Base benchmark class for IsaacLab's benchmarks. |
|
Background thread that periodically updates benchmark recorders. |
|
Definition of a method benchmark. |
|
Runner for method-level benchmarks using the new benchmark tooling. |
|
Configuration for MethodBenchmarkRunner. |
Micro-benchmarks
One-shot runner for latency micro-benchmarks. |
|
One host-submission and device-synchronized latency sample. |
|
Aggregate statistics for a latency sample series. |
|
Resolved micro-benchmark child command. |
|
Resolve exact physics variants and components to benchmark entrypoints. |
|
|
Add latency mean, standard deviation, and percentiles to a benchmark. |
|
Measure host submission and synchronized completion latency. |
|
Parse and run |
|
Summarize a non-empty latency sample series. |
Measurements and metadata
Boolean measurement. |
|
Dictionary measurement. |
|
Dictionary metadata. |
|
Float metadata. |
|
Integer metadata. |
|
List measurement. |
|
Base measurement record. |
|
Base metadata record. |
|
Single floating-point measurement. |
|
Statistical measurement. |
|
String metadata. |
|
Represent a single test phase with associated metrics and metadata. |
Result schema
Environment-step wall time and optional synchronized simulation breakdown. |
|
Learning curves for a training run, plus their EMA smoothing factor. |
|
One learning curve (reward, episode length, or success rate). |
|
Scalar aggregate with mean, standard deviation, and optional peak. |
|
Top-level shape of |
|
Aggregated resource-utilisation metrics for a run. |
|
Physics/rendering backend and active presets for a run. |
|
Identity of a benchmark run (training, runtime, or startup). |
|
Aggregated runtime metrics for a run. |
|
Top-level shape of |
|
Top-level shape of |
|
Wall-clock total plus top cProfile functions for one startup phase. |
|
Wall-clock duration of each startup phase [s]. |
|
Top-level shape of |
Request and Result Classes#
- class isaaclab.benchmark.BenchmarkLauncherConfig[source]#
Simulation launcher configuration shared by benchmark workflows.
- Parameters:
device¶ – Simulation device identifier, such as
"cpu"or"cuda:0".enable_cameras¶ – Whether to enable camera rendering.
visualizers¶ – Visualizers to enable. An empty tuple explicitly disables all visualizers;
Nonepreserves task and environment defaults.max_visible_envs¶ – Maximum number of environments shown by visualizers.
experience¶ – Isaac Sim experience file.
deterministic¶ – Whether to request deterministic rendering and backend behavior.
animation_recording¶ – Whether to record time-sampled USD animations.
animation_recording_start_time¶ – Simulation time when animation recording starts [s].
animation_recording_stop_time¶ – Simulation time when animation recording stops [s].
kit_args¶ – Arguments forwarded directly to Omniverse Kit.
livestream¶ – Livestream mode, where
0disables and1or2enables WebRTC.xr¶ – Whether to enable XR mode.
verbose¶ – Whether to enable verbose simulator logging.
info¶ – Whether to enable informational simulator logging.
Methods:
__init__([device, enable_cameras, ...])- __init__(device: str | None = None, enable_cameras: bool = False, visualizers: tuple[Literal['kit', 'newton', 'rerun', 'viser'], ...] | None = None, max_visible_envs: int | None = None, experience: str | None = None, deterministic: bool = False, animation_recording: bool = False, animation_recording_start_time: float | None = None, animation_recording_stop_time: float | None = None, kit_args: str | None = None, livestream: Literal[0, 1, 2] | None = None, xr: bool = False, verbose: bool = False, info: bool = False) None#
- class isaaclab.benchmark.BenchmarkOutputConfig[source]#
Output configuration shared by benchmark workflows.
- Parameters:
Methods:
__init__([path, formatters])
- class isaaclab.benchmark.BenchmarkPlayRequest[source]#
Request an RL checkpoint playback benchmark.
- Parameters:
backend¶ – Reinforcement-learning backend to benchmark.
task¶ – Registered Gym task identifier.
checkpoint¶ – Local or Nucleus checkpoint path. When omitted, the backend may use a published checkpoint.
agent¶ – Optional task agent configuration entry point.
num_envs¶ – Number of parallel environments.
num_steps¶ – Number of measured inference steps.
warmup_steps¶ – Number of initial environment steps excluded from environment-step timing.
seed¶ – Environment seed.
measure_synchronized_step_breakdown¶ – Whether to collect serialized synchronized environment/simulation step diagnostics.
presets¶ – Typed preset names applied to the task configuration.
backend_args¶ – Backend-specific command-line arguments.
hydra_args¶ – Additional Hydra overrides.
output¶ – Output configuration.
launcher¶ – Simulation launcher configuration.
Attributes:
Return the workflow dispatcher key.
Methods:
__init__(backend, task[, checkpoint, agent, ...])- __init__(backend: ~typing.Literal['rl_games', 'rsl_rl', 'sb3', 'skrl'], task: str, checkpoint: str | None = None, agent: str | None = None, num_envs: int | None = None, num_steps: int = 100, warmup_steps: int = 1, seed: int | None = None, measure_synchronized_step_breakdown: bool = False, presets: tuple[str, ...] = <factory>, backend_args: tuple[str, ...] = <factory>, hydra_args: tuple[str, ...] = <factory>, output: ~isaaclab.benchmark.api.BenchmarkOutputConfig = <factory>, launcher: ~isaaclab.benchmark.api.BenchmarkLauncherConfig = <factory>) None#
- class isaaclab.benchmark.BenchmarkResult[source]#
Completed benchmark result.
- Parameters:
Methods:
__init__(bundle, output_paths)
- class isaaclab.benchmark.BenchmarkRuntimeRequest[source]#
Request an environment runtime benchmark.
- Parameters:
task¶ – Registered Gym task identifier.
num_envs¶ – Number of parallel environments.
num_steps¶ – Number of measured environment steps.
warmup_steps¶ – Number of warm-up steps excluded from throughput measurements.
seed¶ – Environment seed.
measure_synchronized_step_breakdown¶ – Whether to collect serialized synchronized environment/simulation step diagnostics.
presets¶ – Typed preset names applied to the task configuration.
hydra_args¶ – Additional Hydra overrides.
output¶ – Output configuration.
launcher¶ – Simulation launcher configuration.
Attributes:
Return the workflow dispatcher key.
Methods:
__init__(task[, num_envs, num_steps, ...])- __init__(task: str, num_envs: int | None = None, num_steps: int = 1000, warmup_steps: int = 50, seed: int | None = None, measure_synchronized_step_breakdown: bool = False, presets: tuple[str, ...] = <factory>, hydra_args: tuple[str, ...] = <factory>, output: ~isaaclab.benchmark.api.BenchmarkOutputConfig = <factory>, launcher: ~isaaclab.benchmark.api.BenchmarkLauncherConfig = <factory>) None#
- class isaaclab.benchmark.BenchmarkStartupRequest[source]#
Request a startup profiling benchmark.
- Parameters:
task¶ – Registered Gym task identifier.
num_envs¶ – Number of parallel environments.
seed¶ – Environment seed.
top_n¶ – Number of top cProfile functions retained per phase.
whitelist_config¶ – Optional YAML whitelist for phase-specific functions.
presets¶ – Typed preset names applied to the task configuration.
hydra_args¶ – Additional Hydra overrides.
output¶ – Output configuration.
launcher¶ – Simulation launcher configuration.
Attributes:
Return the workflow dispatcher key.
Methods:
__init__(task[, num_envs, seed, top_n, ...])- __init__(task: str, num_envs: int | None = None, seed: int | None = None, top_n: int | None = None, whitelist_config: ~pathlib.Path | None = None, presets: tuple[str, ...] = <factory>, hydra_args: tuple[str, ...] = <factory>, output: ~isaaclab.benchmark.api.BenchmarkOutputConfig = <factory>, launcher: ~isaaclab.benchmark.api.BenchmarkLauncherConfig = <factory>) None#
- class isaaclab.benchmark.BenchmarkTrainingRequest[source]#
Request an RL training benchmark.
- Parameters:
backend¶ – Reinforcement-learning backend to benchmark.
task¶ – Registered Gym task identifier.
agent¶ – Optional task agent configuration entry point.
num_envs¶ – Number of parallel environments.
seed¶ – Environment and agent seed.
max_iterations¶ – Maximum training iterations.
warmup_steps¶ – Number of initial environment steps excluded from environment-step timing.
ray_proc_id¶ – Ray worker process identifier.
video¶ – Whether to record training videos.
video_length¶ – Recorded video length [steps].
video_interval¶ – Interval between video recordings [steps].
export_io_descriptors¶ – Whether to export environment IO descriptors.
capture_env_sensors¶ – Number of environment views captured from each image-like sensor.
capture_env_sensors_length¶ – Length of each sensor capture window [steps].
capture_env_sensors_interval¶ – Interval between sensor capture windows [steps].
capture_env_sensors_format¶ – Storage format for captured sensor frames.
ema_alpha¶ – Learning-curve exponential moving-average coefficient.
keep_series¶ – Whether to retain full per-iteration learning series.
check_success¶ – Whether supported backends should stop after success convergence.
success_threshold¶ – Optional success threshold override.
success_window¶ – Optional success convergence window override [iterations].
measure_synchronized_step_breakdown¶ – Whether to collect serialized synchronized environment/simulation step diagnostics.
presets¶ – Typed preset names applied to the task configuration.
backend_args¶ – Backend-specific command-line arguments.
hydra_args¶ – Additional Hydra overrides.
output¶ – Output configuration.
launcher¶ – Simulation launcher configuration.
Attributes:
Return the workflow dispatcher key.
Methods:
__init__(backend, task[, agent, num_envs, ...])- __init__(backend: ~typing.Literal['rl_games', 'rsl_rl', 'sb3', 'skrl'], task: str, agent: str | None = None, num_envs: int | None = None, seed: int | None = None, max_iterations: int | None = None, warmup_steps: int = 1, ray_proc_id: int | None = None, video: bool = False, video_length: int = 200, video_interval: int = 2000, export_io_descriptors: bool = False, capture_env_sensors: int = 0, capture_env_sensors_length: int = 200, capture_env_sensors_interval: int = 2000, capture_env_sensors_format: ~typing.Literal['tensorboard', 'file'] = 'tensorboard', ema_alpha: float = 0.1, keep_series: bool = True, check_success: bool = False, success_threshold: float | None = None, success_window: int | None = None, measure_synchronized_step_breakdown: bool = False, presets: tuple[str, ...] = <factory>, backend_args: tuple[str, ...] = <factory>, hydra_args: tuple[str, ...] = <factory>, output: ~isaaclab.benchmark.api.BenchmarkOutputConfig = <factory>, launcher: ~isaaclab.benchmark.api.BenchmarkLauncherConfig = <factory>) None#
Micro-Benchmark Dispatch#
- class isaaclab.benchmark.MicrobenchmarkCommand[source]#
Resolved micro-benchmark child command.
- script#
Benchmark entrypoint to execute.
- Type:
Methods:
__init__(physics, component, script, args)
- class isaaclab.benchmark.MicrobenchmarkFactory[source]#
Resolve exact physics variants and components to benchmark entrypoints.
Methods:
Return the Isaac Lab repository root.
Return discoverable exact physics variants.
Return discoverable component workloads.
build_command(physics, component, ...)Resolve one exact physics/component selection.
- classmethod repository_root() Path[source]#
Return the Isaac Lab repository root.
- Returns:
Repository root containing the backend benchmark entrypoints.
- classmethod physics_variants() tuple[str, ...][source]#
Return discoverable exact physics variants.
- Returns:
Exact physics selectors accepted by
build_command().
- classmethod components() tuple[str, ...][source]#
Return discoverable component workloads.
- Returns:
Sorted component names accepted by
build_command().
- build_command(physics: str, component: str, passthrough_args: list[str]) MicrobenchmarkCommand[source]#
Resolve one exact physics/component selection.
- Parameters:
- Returns:
Child command for the selected workload.
- Raises:
ValueError – If the physics variant or component is unknown, or if
passthrough_argsoverrides the selected variant.
- isaaclab.benchmark.run_microbenchmark_cli(args: list[str] | None = None) int[source]#
Parse and run
isaaclab microbenchmark.- Parameters:
- Returns:
Zero after the child benchmark completes successfully.
- Raises:
SystemExit – If command arguments are invalid.
subprocess.CalledProcessError – If the child benchmark fails.
Latency Micro-Benchmarks#
- class isaaclab.benchmark.LatencyBenchmarkRunner[source]#
One-shot runner for latency micro-benchmarks.
- Parameters:
Methods:
__init__(benchmark_name, formatter_type, ...)Initialize common benchmark state and recorders.
add_latency_samples(phase_name, samples)Add synchronized completion and host submission latency series.
add_synchronized_samples(phase_name, name, ...)Add a synchronized-only latency series.
finalize()Sample recorders and write results.
- __init__(benchmark_name: str, formatter_type: str, output_path: str, metadata: dict[str, str | int | float | dict] | None = None, use_recorders: bool = True) None[source]#
Initialize common benchmark state and recorders.
- Parameters:
benchmark_name¶ – Name of benchmark to use in outputs.
formatter_type¶ – Formatter(s) used to collect and print metrics. Accepts a single type name, a list of type names, or a comma-separated string (e.g.
"schema,omniperf"); each selected formatter writes its own output file.output_path¶ – Path to output directory.
use_recorders¶ – Whether to use recorders to collect metrics. Defaults to True.
output_prefix¶ – Prefix used to generate the output filename. Defaults to
None.workflow_metadata¶ – Metadata describing benchmark, defaults to None.
frametime_recorders¶ – Whether to use frametime recorders to collect metrics. Defaults to
False.backend_type¶ – Alias for
formatter_type.
- add_latency_samples(phase_name: str, samples: Sequence[LatencySample]) LatencyStatistics[source]#
Add synchronized completion and host submission latency series.
- class isaaclab.benchmark.LatencySample[source]#
One host-submission and device-synchronized latency sample.
Methods:
__init__(submission_s, synchronized_s)
- class isaaclab.benchmark.LatencyStatistics[source]#
Aggregate statistics for a latency sample series.
Methods:
__init__(mean_s, std_s, p50_s, p95_s, n)
- isaaclab.benchmark.add_latency_measurements(benchmark: _MeasurementSink, phase_name: str, name: str, samples_s: Sequence[float]) LatencyStatistics[source]#
Add latency mean, standard deviation, and percentiles to a benchmark.
- isaaclab.benchmark.measure_latency(operation: Callable[[], None], synchronize: Callable[[], None], *, clock_ns: Callable[[], int] | None = None) LatencySample[source]#
Measure host submission and synchronized completion latency.
The pre-boundary synchronization prevents asynchronous work submitted before
operationfrom being charged to the sample. The post-boundary synchronization includes all device work submitted by the operation.- Parameters:
operation¶ – Workload to measure.
synchronize¶ – Function that blocks until pending device work completes.
clock_ns¶ – Monotonic nanosecond clock. Defaults to
time.perf_counter_ns().
- Returns:
Host-submission and device-synchronized latency [s].
- isaaclab.benchmark.summarize_latency(samples_s: Sequence[float]) LatencyStatistics[source]#
Summarize a non-empty latency sample series.
- Parameters:
samples_s¶ – Latency samples [s].
- Returns:
Mean, sample standard deviation, and interpolated percentiles [s].
- Raises:
ValueError – If
samples_sis empty.
Workflow Functions#
- isaaclab.benchmark.run_benchmark(request: BenchmarkRuntimeRequest) BenchmarkResult[RuntimeBundle][source]#
- isaaclab.benchmark.run_benchmark(request: BenchmarkStartupRequest) BenchmarkResult[StartupBundle]
- isaaclab.benchmark.run_benchmark(request: BenchmarkTrainingRequest) BenchmarkResult[TrainingBundle]
- isaaclab.benchmark.run_benchmark(request: BenchmarkPlayRequest) BenchmarkResult[PlayBundle]
Run a benchmark workflow from a typed request.
- Parameters:
request¶ – Runtime, startup, training, or play benchmark request.
- Returns:
Completed benchmark bundle and output paths.
- isaaclab.benchmark.run_play_benchmark(request: BenchmarkPlayRequest) BenchmarkResult[PlayBundle][source]#
Run an RL checkpoint playback benchmark.
- Parameters:
request¶ – Playback benchmark request.
- Returns:
Completed benchmark bundle and output paths.
- isaaclab.benchmark.run_runtime_benchmark(request: BenchmarkRuntimeRequest) BenchmarkResult[RuntimeBundle][source]#
Run an environment runtime benchmark.
- Parameters:
request¶ – Runtime benchmark request.
- Returns:
Completed benchmark bundle and output paths.
- isaaclab.benchmark.run_startup_benchmark(request: BenchmarkStartupRequest) BenchmarkResult[StartupBundle][source]#
Run a startup profiling benchmark.
- Parameters:
request¶ – Startup benchmark request.
- Returns:
Completed benchmark bundle and output paths.
- isaaclab.benchmark.run_training_benchmark(request: BenchmarkTrainingRequest) BenchmarkResult[TrainingBundle][source]#
Run an RL training benchmark.
- Parameters:
request¶ – Training benchmark request.
- Returns:
Completed benchmark bundle and output paths.
Benchmark Framework#
- class isaaclab.benchmark.BaseIsaacLabBenchmark[source]#
Base benchmark class for IsaacLab’s benchmarks.
Methods:
__init__(benchmark_name[, formatter_type, ...])Initialize common benchmark state and recorders.
attach_bundle(bundle)Attach a typed bundle for schema serialization and flat-formatter projection.
Update manual recorders that don't depend on the kit timeline.
add_measurement(phase_name[, measurement, ...])Add a measurement to the benchmark.
finalize()Finalize metric collection and write selected formatter outputs.
Attributes:
Get the full path to the output file.
- __init__(benchmark_name: str, formatter_type: str | list[str] | None = None, output_path: str | None = None, use_recorders: bool = True, output_prefix: str | None = None, workflow_metadata: dict | None = None, frametime_recorders: bool = False, backend_type: str | list[str] | None = None)[source]#
Initialize common benchmark state and recorders.
- Parameters:
benchmark_name¶ – Name of benchmark to use in outputs.
formatter_type¶ – Formatter(s) used to collect and print metrics. Accepts a single type name, a list of type names, or a comma-separated string (e.g.
"schema,omniperf"); each selected formatter writes its own output file.output_path¶ – Path to output directory.
use_recorders¶ – Whether to use recorders to collect metrics. Defaults to True.
output_prefix¶ – Prefix used to generate the output filename. Defaults to
None.workflow_metadata¶ – Metadata describing benchmark, defaults to None.
frametime_recorders¶ – Whether to use frametime recorders to collect metrics. Defaults to
False.backend_type¶ – Alias for
formatter_type.
- attach_bundle(bundle: RuntimeBundle | TrainingBundle | StartupBundle | PlayBundle | None) None[source]#
Attach a typed bundle for schema serialization and flat-formatter projection.
- Parameters:
bundle¶ – Runtime, training, startup, or play benchmark bundle.
- update_manual_recorders() None[source]#
Update manual recorders that don’t depend on the kit timeline.
- add_measurement(phase_name: str, measurement: Measurement | Sequence[Measurement] | None = None, metadata: MetadataBase | Sequence[MetadataBase] | None = None) None[source]#
Add a measurement to the benchmark.
- class isaaclab.benchmark.BenchmarkMonitor[source]#
Background thread that periodically updates benchmark recorders.
This utility enables continuous system resource monitoring during blocking RL training loops (RSL-RL, RL-Games) where update_manual_recorders() would otherwise only be called once after training completes.
- Usage:
- with BenchmarkMonitor(benchmark, interval=1.0):
runner.learn(…) # Blocking training call
Methods:
__init__(benchmark[, interval])Initialize the benchmark monitor.
start()Start the monitoring thread.
stop()Stop the monitoring thread and wait for it to finish.
- __init__(benchmark: BaseIsaacLabBenchmark, interval: float = 1.0)[source]#
Initialize the benchmark monitor.
- class isaaclab.benchmark.MethodBenchmarkDefinition[source]#
Definition of a method benchmark.
- input_generators#
Dict mapping mode names to input generator functions.
- Type:
- prepare_target#
Optional hook that prepares the target outside the measured operation.
- Type:
collections.abc.Callable[[object], None] | None
Methods:
__init__(name, method_name, input_generators)
- class isaaclab.benchmark.MethodBenchmarkRunner[source]#
Runner for method-level benchmarks using the new benchmark tooling.
This class extends BaseIsaacLabBenchmark to provide method-level benchmarking with automatic hardware/version info collection, multiple backend support, and organized output by category phases.
Methods:
__init__(benchmark_name, config[, ...])Initialize the method benchmark runner.
run_benchmarks(benchmarks, target_object)Run all defined benchmarks on the target object.
run_property_benchmarks(target_data, ...[, ...])Run benchmarks for data class properties.
Attributes:
Return the benchmark configuration.
- __init__(benchmark_name: str, config: MethodBenchmarkRunnerConfig, backend_type: str = 'json', output_path: str = '.', use_recorders: bool = True, physics_variant: str | None = None)[source]#
Initialize the method benchmark runner.
- Parameters:
benchmark_name¶ – Name of the benchmark (used in output files).
config¶ – Benchmark configuration.
backend_type¶ – Output backend type (“json”, “osmo”, “omni_perf”).
output_path¶ – Directory to write output files.
use_recorders¶ – Whether to collect hardware/version info.
physics_variant¶ – Exact physics backend selector, when applicable.
- property config: MethodBenchmarkRunnerConfig#
Return the benchmark configuration.
- run_benchmarks(benchmarks: list[MethodBenchmarkDefinition], target_object: object) None[source]#
Run all defined benchmarks on the target object.
- run_property_benchmarks(target_data: object, properties: list[str], gen_mock_data: Callable, dependencies: dict[str, list[str]] | None = None, category: str = 'property') None[source]#
Run benchmarks for data class properties.
This is a convenience method for benchmarking properties on data classes where the test involves generating mock data and accessing properties.
- Parameters:
target_data¶ – Data object containing the properties to benchmark.
properties¶ – List of property names to benchmark.
gen_mock_data¶ – Function that generates/updates mock data.
dependencies¶ – Optional dict mapping property names to their dependencies.
category¶ – Category name for grouping results.
- class isaaclab.benchmark.MethodBenchmarkRunnerConfig[source]#
Configuration for MethodBenchmarkRunner.
Methods:
__init__([num_iterations, warmup_steps, ...])
- class isaaclab.benchmark.PlayBundle[source]#
Top-level shape of
play.json— a checkpoint-driven inference rollout.Mirrors
RuntimeBundle(withRunIdentity.frameworkset to the RL library that produced the checkpoint) and adds the inference-evaluation aggregates: a success rate plus scalar reward and episode-length statistics. UnlikeTrainingBundle,rewardandep_lengthare scalarMeanStdaggregates over completed episodes, not per-iteration learning curves.- Parameters:
success_rate¶ – Mean success rate
[0..1]over completed episodes, orNonewhen the task does not report one.reward¶ – Episode-return aggregate over completed episodes, or
Nonewhen no episode completed.ep_length¶ – Episode-length aggregate over completed episodes, or
Nonewhen no episode completed.checkpoint_path¶ – Path to the policy checkpoint that was rolled out.
video_path¶ – Path to a recorded rollout video/gif, if any.
extra¶ – Optional free-form scalar values (experimental or producer-specific) that are not part of the stable schema contract. Consumers must tolerate its absence and must not depend on specific keys; promote a key to a typed field once it is stable and broadly useful.
Methods:
__init__(run, versions, hardware, runtime, ...)- __init__(run: RunIdentity, versions: Versions, hardware: Hardware, runtime: Runtime, resources: Resources, success_rate: float | None = None, reward: MeanStd | None = None, ep_length: MeanStd | None = None, checkpoint_path: str | None = None, video_path: str | None = None, extra: dict[str, float | int | str | bool] | None = None, schema_version: str = '1.4') None#
- class isaaclab.benchmark.RuntimeBundle[source]#
Top-level shape of
runtime.json(environment stepping, no learning).Mirrors
TrainingBundlewithout the learning metrics.- Parameters:
extra¶ – Optional free-form scalar values (experimental or producer-specific) that are not part of the stable schema contract. Consumers must tolerate its absence and must not depend on specific keys; promote a key to a typed field once it is stable and broadly useful.
Methods:
__init__(run, versions, hardware, runtime, ...)
- class isaaclab.benchmark.StartupBundle[source]#
Top-level shape of
startup.json.Reuses
RunIdentitywithframework/num_envs/max_iterationsleft unset, since they are not meaningful for a startup profile.- Parameters:
extra¶ – Optional free-form scalar values (experimental or producer-specific) that are not part of the stable schema contract. Consumers must tolerate its absence and must not depend on specific keys; promote a key to a typed field once it is stable and broadly useful.
Methods:
__init__(run, versions, hardware, phases, config)
- class isaaclab.benchmark.TrainingBundle[source]#
Top-level shape of
training.json— a runtime bundle plus learning metrics.- Parameters:
success_rate¶ – Final success rate [0..1] when the task tracks one, else
None.checkpoint_path¶ – Path to the final saved policy checkpoint, if any.
video_path¶ – Path to a recorded rollout video/gif, if any.
extra¶ – Optional free-form scalar values (experimental or producer-specific) that are not part of the stable schema contract. Consumers must tolerate its absence and must not depend on specific keys; promote a key to a typed field once it is stable and broadly useful.
Methods:
__init__(run, versions, hardware, runtime, ...)- __init__(run: RunIdentity, versions: Versions, hardware: Hardware, runtime: Runtime, resources: Resources, learning: Learning, success_rate: float | None = None, checkpoint_path: str | None = None, video_path: str | None = None, extra: dict[str, float | int | str | bool] | None = None, schema_version: str = '1.4') None#
Additional Public Classes#
The following classes are part of the public isaaclab.benchmark API.
Boolean measurement. |
|
One entry from a cProfile top-N table. |
|
Dictionary measurement. |
|
Dictionary metadata. |
|
Environment-step wall time and optional synchronized simulation breakdown. |
|
Float metadata. |
|
Information about a single GPU device. |
|
Host hardware snapshot captured at run time. |
|
Integer metadata. |
|
Learning curves for a training run, plus their EMA smoothing factor. |
|
One learning curve (reward, episode length, or success rate). |
|
List measurement. |
|
Scalar aggregate with mean, standard deviation, and optional peak. |
|
Base measurement record. |
|
Base metadata record. |
|
Aggregated resource-utilisation metrics for a run. |
|
Physics/rendering backend and active presets for a run. |
|
Identity of a benchmark run (training, runtime, or startup). |
|
Aggregated runtime metrics for a run. |
|
Single floating-point measurement. |
|
CLI configuration captured in a |
|
Wall-clock total plus top cProfile functions for one startup phase. |
|
Wall-clock duration of each startup phase [s]. |
|
Statistical measurement. |
|
String metadata. |
|
Represent a single test phase with associated metrics and metadata. |
|
Software versions captured at run time. |
- class isaaclab.benchmark.BooleanMeasurement[source]#
Bases:
MeasurementBoolean measurement.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.CProfileFunction[source]#
Bases:
objectOne entry from a cProfile top-N table.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.DictMeasurement[source]#
Bases:
MeasurementDictionary measurement.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.DictMetadata[source]#
Bases:
MetadataBaseDictionary metadata.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.EnvironmentStepTiming[source]#
Bases:
objectEnvironment-step wall time and optional synchronized simulation breakdown.
host_returnmode records how long the host spends insideenv.step()without forcing device completion.serialized_synchronizedmode drains pending work at every environment and simulation boundary so the measured environment time can be partitioned into time inside and outside nestedSimulationContext.step()calls. The latter mode serializes device work and is an observer-perturbed diagnostic, not production throughput.When the serialized mode is active, every timing and throughput aggregate in the enclosing
Runtimewas collected under that instrumented schedule, not only the fields in this breakdown.Time outside simulation calls includes required action, actuator, state, manager, reset, wrapper, and synchronization work. It is not an estimate of removable Isaac Lab overhead.
- Parameters:
environment_step_time_s¶ – Per-environment-step wall time [s], interpreted according to
measurement_mode.environment_step_fps¶ – Reciprocal environment-step rate [frames/s], interpreted according to
measurement_mode.simulation_step_time_s¶ – Synchronized simulation wall time per environment step [s], when measured.
outside_simulation_step_time_s¶ – Time outside simulation calls per environment step [s], when measured.
outside_simulation_step_fraction¶ – Fraction of synchronized environment-step time outside simulation calls.
environment_step_calls¶ – Number of measured environment-step calls.
simulation_step_calls¶ – Number of measured simulation-step calls, when measured.
measurement_mode¶ – Timing boundary semantics.
host_returndoes not force device completion.serialized_synchronizedexplicitly synchronizes every measured boundary.warmup_steps¶ – Number of initial environment-step calls excluded from timing.
Methods:
- classmethod __new__(*args, **kwargs)#
- __init__(environment_step_time_s: MeanStd, environment_step_fps: MeanStd, simulation_step_time_s: MeanStd | None, outside_simulation_step_time_s: MeanStd | None, outside_simulation_step_fraction: float | None, environment_step_calls: int, simulation_step_calls: int | None, measurement_mode: Literal['host_return', 'serialized_synchronized'], warmup_steps: int = 0) None#
- class isaaclab.benchmark.FloatMetadata[source]#
Bases:
MetadataBaseFloat metadata.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.GpuDeviceInfo[source]#
Bases:
objectInformation about a single GPU device.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.Hardware[source]#
Bases:
objectHost hardware snapshot captured at run time.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.IntMetadata[source]#
Bases:
MetadataBaseInteger metadata.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.Learning[source]#
Bases:
objectLearning curves for a training run, plus their EMA smoothing factor.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- __init__(ema_alpha: float, reward: LearningCurve, ep_length: LearningCurve, success_rate: LearningCurve | None = None) None#
- class isaaclab.benchmark.LearningCurve[source]#
Bases:
objectOne learning curve (reward, episode length, or success rate).
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.ListMeasurement[source]#
Bases:
MeasurementList measurement.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.MeanStd[source]#
Bases:
objectScalar aggregate with mean, standard deviation, and optional peak.
- Parameters:
mean¶ – Central value of the aggregate. For most fields this is the arithmetic sample mean; for effective-throughput fields it is the aggregate rate (total completed work over total wall time).
std¶ – Ordinary sample standard deviation of the per-sample values. This remains centered on the sample mean even when
meanis an effective aggregate rate.peak¶ – Maximum observed value, or
Nonewhere a peak is not meaningful (e.g. GPU utilisation, whose ceiling is always 100%).
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.Measurement[source]#
Bases:
objectBase measurement record.
- Parameters:
name¶ – Measurement name.
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.MetadataBase[source]#
Bases:
objectBase metadata record.
- Parameters:
name¶ – Metadata name.
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.Resources[source]#
Bases:
objectAggregated resource-utilisation metrics for a run.
Utilisation fields leave
MeanStd.peakasNone(a peak of 100% is uninformative); memory fields populatepeak.- Parameters:
gpu_util_pct¶ – Utilisation of the device the run used [%].
gpu_mem_gb¶ – Memory used on the device the run used [GB].
cpu_util_pct¶ – CPU utilisation [%].
ram_gb¶ – Host RAM used [GB].
devices¶ – Per-device metrics keyed by logical CUDA device index, covering every device visible to the process. On a multi-GPU run this is the whole node, while
gpu_util_pctandgpu_mem_gbstay scoped to the device the reporting rank used.
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.RunConfig[source]#
Bases:
objectPhysics/rendering backend and active presets for a run.
- Parameters:
physics_backend¶ – Physics solver preset the run used.
rendering_backend¶ – Rendering backend, or
"none"for headless runs with no camera sensors.presets¶ – Active Hydra preset tokens applied to the run (e.g.
["rgb", "ovrtx"]). Open-ended so sensor data types, resolutions, and any other domain presets are captured without a closed enum;physics_backend/rendering_backendsurface the two primary grouping dimensions as typed fields.
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.RunIdentity[source]#
Bases:
objectIdentity of a benchmark run (training, runtime, or startup).
- Parameters:
run_id¶ – Stable identifier for the run.
framework¶ – RL library for training runs;
Nonefor non-learning (pure runtime, startup) runs.config¶ – Physics/rendering/sensor configuration.
task¶ – Gym task id.
seed¶ – Environment/agent seed.
start_time_utc¶ – ISO-8601 UTC start timestamp.
end_time_utc¶ – ISO-8601 UTC end timestamp.
duration_s¶ – Wall-clock run duration [s].
status¶ – Terminal status of the run.
num_envs¶ – Number of parallel environments, or
None(startup).max_iterations¶ – Training iteration budget, or
None(startup, runtime).
Methods:
- classmethod __new__(*args, **kwargs)#
- __init__(run_id: str, framework: Literal['rsl_rl', 'rl_games', 'skrl', 'sb3'] | None, config: RunConfig, task: str, seed: int, start_time_utc: str, end_time_utc: str, duration_s: float, status: Literal['completed', 'interrupted', 'crashed'], num_envs: int | None = None, max_iterations: int | None = None) None#
- class isaaclab.benchmark.Runtime[source]#
Bases:
objectAggregated runtime metrics for a run.
- Parameters:
startup_time_s¶ – Per-phase startup wall-clock durations [s].
iterations_completed¶ – Number of completed iterations.
total_wall_time_s¶ – Total run wall-clock time [s].
steps_per_iteration¶ – Environment steps collected per iteration.
iteration_time_s¶ – Per-iteration wall-clock time [s].
collection_fps¶ – Environment-stepping (rollout) throughput [frames/s] — environment steps per second across all environments during data collection (the scripts’ “Collection FPS” / “Environment + Inference FPS”).
total_fps¶ – End-to-end throughput [frames/s] including the policy update — the headline FPS (the scripts’ “Total FPS” / “effective FPS”). For pure runtime runs with no learning, this equals
collection_fps.iterations_per_s¶ – Iteration rate [iter/s].
environment_step_timing¶ – Environment-step timing and optional synchronized simulation breakdown, when measured. Its measurement mode also describes the schedule used by the enclosing timing and rate fields.
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.SingleMeasurement[source]#
Bases:
MeasurementSingle floating-point measurement.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.StartupConfig[source]#
Bases:
objectCLI configuration captured in a
StartupBundle.Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.StartupPhase[source]#
Bases:
objectWall-clock total plus top cProfile functions for one startup phase.
Methods:
- classmethod __new__(*args, **kwargs)#
- __init__(total_time_s: float, top_functions: list[CProfileFunction]) None#
- class isaaclab.benchmark.StartupTime[source]#
Bases:
objectWall-clock duration of each startup phase [s].
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.StatisticalMeasurement[source]#
Bases:
MeasurementStatistical measurement.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.StringMetadata[source]#
Bases:
MetadataBaseString metadata.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- class isaaclab.benchmark.TestPhase[source]#
Bases:
objectRepresent a single test phase with associated metrics and metadata.
- Parameters:
Methods:
- classmethod __new__(*args, **kwargs)#
- __init__(phase_name: str, measurements: list[~isaaclab.benchmark.measurements.Measurement] = <factory>, metadata: list[~isaaclab.benchmark.measurements.StringMetadata | ~isaaclab.benchmark.measurements.IntMetadata | ~isaaclab.benchmark.measurements.FloatMetadata | ~isaaclab.benchmark.measurements.DictMetadata] = <factory>) None#
- class isaaclab.benchmark.Versions[source]#
Bases:
objectSoftware versions captured at run time.
Version fields are
Nonewhen the corresponding runtime or package is unavailable.Methods:
- classmethod __new__(*args, **kwargs)#
- __init__(isaaclab: str, isaacsim: str | None, kit: str | None, newton: str | None, warp: str | None, mjwarp: str | None, torch: str, rsl_rl: str | None, rl_games: str | None, skrl: str | None, sb3: str | None, git_commit: str | None, git_branch: str | None, git_dirty: bool, numpy: str | None = None, isaaclab_newton: str | None = None, isaaclab_physx: str | None = None, isaaclab_ov: str | None = None, isaaclab_tasks: str | None = None, isaaclab_rl: str | None = None, ovrtx: str | None = None, ovphysx: str | None = None, mujoco: str | None = None, cuda_bindings: str | None = None, usd_core: str | None = None, usd_exchange: str | None = None, isaaclab_release: str | None = None) None#