diff --git a/pyproject.rocm.toml b/pyproject.rocm.toml index 93770addb..8ab3ed926 100644 --- a/pyproject.rocm.toml +++ b/pyproject.rocm.toml @@ -24,10 +24,9 @@ requires-python = ">=3.10,<3.14" dependencies = [ "numpy", # Physics implementations are provided by the independently released - # unisim-core package. The 1.4.2 release carries the fixed model variant, - # per-world reset-default, per-env gravity, substep body-wrench, and - # IsaacGym fixed-variant contracts. - "unisim-core>=1.4.2", + # unisim-core package. Pin the released adapter semantics validated by the + # MuJoCo collector comparison in scripts/benchmark/reports/. + "unisim-core==1.5.1", # RL algorithms and async runtimes live in the independently released # uni-rl package (distribution name ``unilab-rl``); see pyproject.toml. "unilab-rl==1.2.1", diff --git a/pyproject.toml b/pyproject.toml index 5637d1bfe..3bc1e0992 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,10 +39,9 @@ requires-python = ">=3.10,<3.14" dependencies = [ "numpy", # Physics implementations are provided by the independently released - # unisim-core package. The 1.4.2 release carries the fixed model variant, - # per-world reset-default, per-env gravity, substep body-wrench, and - # IsaacGym fixed-variant contracts. - "unisim-core>=1.4.2", + # unisim-core package. Pin the released adapter semantics validated by the + # MuJoCo collector comparison in scripts/benchmark/reports/. + "unisim-core==1.5.1", # RL algorithms and async runtimes (PPO/APPO/SAC/TD3 runners, # collectors, IPC, logging) live in the independently released uni-rl # package (distribution name ``unilab-rl``), consumed via the injected @@ -170,7 +169,7 @@ viser = ["viser>=1.0.26", "trimesh>=3.21.7"] # required-environments; elsewhere the extra is empty and the CLI reports a # targeted runtime diagnostic. superdex = [ - "unisim-core[superdex]>=1.4.2 ; python_version >= '3.12' and sys_platform == 'linux' and platform_machine == 'x86_64'", + "unisim-core[superdex]==1.5.1 ; python_version >= '3.12' and sys_platform == 'linux' and platform_machine == 'x86_64'", ] [dependency-groups] diff --git a/scripts/benchmark/reports/unisim_1_4_0_vs_1_5_1_collector.json b/scripts/benchmark/reports/unisim_1_4_0_vs_1_5_1_collector.json new file mode 100644 index 000000000..f5df1226b --- /dev/null +++ b/scripts/benchmark/reports/unisim_1_4_0_vs_1_5_1_collector.json @@ -0,0 +1,1248 @@ +{ + "baseline_unisim": "1.4.0", + "candidate_unisim": "1.5.1", + "unilab_commit": "84a00d049eeac9292bbd58c25fcd06a4b64cd712", + "benchmark": "scripts/benchmark/rl/benchmark_offpolicy_collector_active.py", + "benchmark_sha256": "317c91948a834cbd38795d9513c220334ef9b342432576b53cebdd331ae89d20", + "machine": { + "platform": "Linux-7.0.0-30-generic-x86_64-with-glibc2.39", + "chip": "AMD Ryzen 9 9950X3D2 16-Core Processor", + "cpu_total_cores": "16", + "cpu_performance_cores": "unknown", + "cpu_efficiency_cores": "unknown", + "gpu_name": "NVIDIA GeForce RTX 4090", + "memory": "60.5 GB", + "gpu_memory": "49140 MiB", + "cpu_frequency": "5.67 GHz", + "memory_frequency": "unknown" + }, + "python": "3.13.14", + "cpu_affinity": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "collector_torch_threads": 8, + "warmup_steps": 30, + "measured_steps": 300, + "replay_capacity_steps": 64, + "seed": { + "algo": 1, + "env": 1 + }, + "actions": "all zero", + "definition": "environment transitions / active collector seconds (env.step + terminal handling/replay + bookkeeping); excludes inference/learner waits/IPC/startup", + "sample_order": [ + "n1024-r1-v1.4.0", + "n1024-r1-v1.5.1", + "n1024-r2-v1.5.1", + "n1024-r2-v1.4.0", + "n1024-r3-v1.4.0", + "n1024-r3-v1.5.1", + "n4096-r1-v1.5.1", + "n4096-r1-v1.4.0", + "n4096-r2-v1.4.0", + "n4096-r2-v1.5.1", + "n4096-r3-v1.5.1", + "n4096-r3-v1.4.0" + ], + "non_unisim_packages_identical": true, + "common_packages": { + "Farama-Notifications": "0.0.4", + "GitPython": "3.1.46", + "ImageIO": "2.37.3", + "Jinja2": "3.1.6", + "Markdown": "3.10.2", + "MarkupSafe": "3.0.3", + "PyOpenGL": "3.1.10", + "PyYAML": "6.0.3", + "Pygments": "2.20.0", + "Werkzeug": "3.1.8", + "absl-py": "2.1.0", + "annotated-doc": "0.0.4", + "annotated-types": "0.7.0", + "antlr4-python3-runtime": "4.9.3", + "anyio": "4.13.0", + "asttokens": "3.0.1", + "certifi": "2026.2.25", + "charset-normalizer": "3.4.7", + "click": "8.4.1", + "cloudpickle": "3.1.2", + "contourpy": "1.3.3", + "coverage": "7.13.5", + "cycler": "0.12.1", + "decorator": "5.2.1", + "etils": "1.14.0", + "executing": "2.2.1", + "filelock": "3.25.2", + "flatbuffers": "25.12.19", + "fonttools": "4.62.1", + "fsspec": "2026.3.0", + "gitdb": "4.0.12", + "glfw": "2.10.0", + "grpcio": "1.80.0", + "gymnasium": "1.2.3", + "h11": "0.16.0", + "hf-xet": "1.5.1", + "httpcore": "1.0.9", + "httpx": "0.28.1", + "huggingface_hub": "1.20.1", + "hydra-core": "1.3.2", + "idna": "3.11", + "imageio-ffmpeg": "0.6.0", + "importlib_metadata": "9.0.0", + "iniconfig": "2.3.0", + "ipython": "9.12.0", + "ipython_pygments_lexers": "1.1.1", + "jedi": "0.19.2", + "kiwisolver": "1.5.0", + "lark": "1.3.1", + "librt": "0.8.1", + "llvmlite": "0.49.0", + "markdown-it-py": "4.0.0", + "matplotlib": "3.10.8", + "matplotlib-inline": "0.2.1", + "mdurl": "0.1.2", + "mediapy": "1.2.6", + "mjbatch-uni": "0.2.1", + "ml_dtypes": "0.5.4", + "mpmath": "1.3.0", + "mujoco": "3.11.0", + "mypy": "1.20.0", + "mypy_extensions": "1.1.0", + "networkx": "3.6.1", + "ninja": "1.13.0", + "nodeenv": "1.10.0", + "numba": "0.67.0", + "numpy": "2.4.4", + "nvidia-cublas-cu12": "12.8.4.1", + "nvidia-cuda-cupti-cu12": "12.8.90", + "nvidia-cuda-nvrtc-cu12": "12.8.93", + "nvidia-cuda-runtime-cu12": "12.8.90", + "nvidia-cudnn-cu12": "9.10.2.21", + "nvidia-cufft-cu12": "11.3.3.83", + "nvidia-cufile-cu12": "1.13.1.3", + "nvidia-curand-cu12": "10.3.9.90", + "nvidia-cusolver-cu12": "11.7.3.90", + "nvidia-cusparse-cu12": "12.5.8.93", + "nvidia-cusparselt-cu12": "0.7.1", + "nvidia-nccl-cu12": "2.27.3", + "nvidia-nvjitlink-cu12": "12.8.93", + "nvidia-nvtx-cu12": "12.8.90", + "omegaconf": "2.3.0", + "onnx": "1.21.0", + "onnx-ir": "0.2.0", + "onnxruntime": "1.24.4", + "onnxscript": "0.6.2", + "packaging": "26.0", + "parso": "0.8.6", + "pathspec": "1.0.4", + "pexpect": "4.9.0", + "pillow": "11.3.0", + "platformdirs": "4.9.4", + "pluggy": "1.6.0", + "prettytable": "3.18.0", + "prompt_toolkit": "3.0.52", + "protobuf": "6.33.6", + "ptyprocess": "0.7.0", + "pure_eval": "0.2.3", + "pydantic": "2.12.5", + "pydantic_core": "2.41.5", + "pyparsing": "3.3.2", + "pyright": "1.1.408", + "pytest": "9.0.2", + "pytest-cov": "7.1.0", + "python-dateutil": "2.9.0.post0", + "pyvers": "0.2.2", + "requests": "2.33.1", + "rich": "14.3.3", + "rsl-rl-lib": "5.0.1", + "ruff": "0.15.9", + "sentry-sdk": "2.57.0", + "setuptools": "84.0.0", + "shellingham": "1.5.4", + "six": "1.17.0", + "smmap": "5.0.3", + "stack-data": "0.6.3", + "sympy": "1.14.0", + "tensorboard": "2.21.0", + "tensorboard-data-server": "0.7.2", + "tensordict": "0.11.0", + "torch": "2.8.0+cu128", + "tqdm": "4.67.3", + "traitlets": "5.14.3", + "triton": "3.4.0", + "typer": "0.25.1", + "typing-inspection": "0.4.2", + "typing_extensions": "4.15.0", + "unilab": "1.3.0", + "unilab-rl": "1.2.1", + "urllib3": "2.6.3", + "wandb": "0.25.1", + "wcwidth": "0.6.0", + "zipp": "3.23.0" + }, + "source_diff": "https://github.com/unilabsim/unisim/compare/v1.4.0...v1.5.1", + "raw_archive": "unisim_1_4_0_vs_1_5_1_collector.raw.json.gz", + "raw_archive_sha256": "ca925c56ec8f538382db0366862050ac1444c81be0e924ac1f405844b1070010", + "asset_sha256": { + "src/unilab/assets/robots/go2/assets/base_0.obj": "8cdc53719002a5ee737d867904e534a6d6fa930b616bdcc1b3131e577d4e46c0", + "src/unilab/assets/robots/go2/assets/base_1.obj": "39d2f4724ff64dd5a0640c308fd98902a2946660a8d033ec8dbf368fd5af0dd6", + "src/unilab/assets/robots/go2/assets/base_2.obj": "29cae463f95d678e4ede863c36c9b19b0d356b8340412add10670d70bdcc3095", + "src/unilab/assets/robots/go2/assets/base_3.obj": "f51ba43bf300e68957a0c1aa83eaf3e4926f4ac7e64a0d6c33ae5d21fcbcf5f6", + "src/unilab/assets/robots/go2/assets/base_4.obj": "49ddec0129546e5dd2075d5beacf7f207baa2860aeff7626818e64d2efbf3821", + "src/unilab/assets/robots/go2/assets/calf.stl": "2aee434b80da010deebb11c8538d593f7901a169cc34916350902746e591437e", + "src/unilab/assets/robots/go2/assets/calf_0.obj": "4a818cd563c5b7e2a271504442d05fd777d38cbaa028d4a10ad29c9f87bb355e", + "src/unilab/assets/robots/go2/assets/calf_1.obj": "51950c3a153ae3208592df86ea11c9d6756f8f645ebca5caf6910c61aeb03817", + "src/unilab/assets/robots/go2/assets/calf_mirror.stl": "528b471bfc60b6e72dbb162b34eefebced994bea82aaf58eda91f090219cd911", + "src/unilab/assets/robots/go2/assets/calf_mirror_0.obj": "6dc0406207a1c08a5953fd5962aca1a270fd06593d30d100205e05c1b32d4af2", + "src/unilab/assets/robots/go2/assets/calf_mirror_1.obj": "f84f5af90b914633165beb3a5493ee499169144c5797dcf04c6eb5842f74b31a", + "src/unilab/assets/robots/go2/assets/foot.obj": "df9e78a7c0110d02557439010f2a5f11f0ec4fd907b32704145dbd6aa7affc0b", + "src/unilab/assets/robots/go2/assets/hip_0.obj": "cc29932ab4d251ce3f72389ec4c1f757e44eee138b87e772b648c2bc76b506cd", + "src/unilab/assets/robots/go2/assets/hip_1.obj": "3fd5bd9b2ef6abe622c0739d3c67eaa1679b19b47132951972c4892a779ea7cf", + "src/unilab/assets/robots/go2/assets/thigh_0.obj": "bb3edfe6a7b04f4f4dff1ce7b05d426ddce941e276cc6372fb542055893c71ec", + "src/unilab/assets/robots/go2/assets/thigh_1.obj": "3a631822f9f7d2114b1b79dcdff5abf95103630abb7d91d1f3b8b18117132ed2", + "src/unilab/assets/robots/go2/assets/thigh_mirror_0.obj": "07abaedce761f1dd48647384ac14ba1959276bc78d5a2a62051e8f1c6093933b", + "src/unilab/assets/robots/go2/assets/thigh_mirror_1.obj": "db984a3e983eabbc9b38183427cca9ab0bb3bdb049f9eab030e06edda36579d6", + "src/unilab/assets/robots/go2/assets/wheel.stl": "51c95e80dcd41c0cf1a9575d4d7c2c89855848f7fa2c4bf28f2f10c2e3d639e2", + "src/unilab/assets/robots/go2/assets/wheel_convex.stl": "d673d361b49b030f518cdcffcf0dc8829041ed1574b384312df3156d320abbc9", + "src/unilab/assets/robots/go2/go2.xml": "c3a7efa8a33962988cbccdb11ece1dbb071b252a7919fab13df7c1aff14ab554", + "src/unilab/assets/robots/go2/go2_mujoco.xml": "72b04be860557f0ad302a6ca29ac14b2a7582c41541394b0bac96c752779ab50", + "src/unilab/assets/robots/go2/locomotion_task.xml": "e4daad8e9385f897c9243a642b3e71a1c2964d75b50f91a869156913b6513fb7", + "src/unilab/assets/robots/go2/scene_flat.xml": "4a7041aac170b61c9b0f38fbcd3928a3ecd1ab20524c508459daca6f57a96006" + }, + "summary": [ + { + "num_envs": 1024, + "before": { + "median": 138779.94897557306, + "min": 131699.43594854994, + "max": 141773.41556833233 + }, + "after": { + "median": 88166.58108648706, + "min": 82537.0914031516, + "max": 89607.41614497962 + }, + "median_change_percent": -36.47023093948144, + "paired_change_percent": [ + -36.795332336625265, + -40.52664523051589, + -33.05470106878025 + ] + }, + { + "num_envs": 4096, + "before": { + "median": 209773.16554143906, + "min": 206356.62946373527, + "max": 209956.72572494432 + }, + "after": { + "median": 120476.44913107035, + "min": 117284.25442067742, + "max": 120949.29312238331 + }, + "median_change_percent": -42.56822657935666, + "paired_change_percent": [ + -42.56822657935666, + -44.138843842360785, + -41.38822026862058 + ] + } + ], + "runs": [ + { + "name": "n1024-r1-v1.4.0", + "version": "1.4.0", + "num_envs": 1024, + "repeat": 1, + "raw_sha256": "c48fb6437bf82b4afc092c542629b2531ee701250a3badf29e3fa5670ef89302", + "elapsed_process_s": 4.069875001907349, + "case": { + "algo": "flashsac", + "task": "go2_joystick_flat", + "sim": "mujoco", + "variant": "default", + "runtime_sim_backend": "mujoco", + "command": "uv run train --algo flashsac --task go2_joystick_flat --sim mujoco", + "training_task_name": "Go2JoystickFlat", + "num_envs": 1024, + "replay_capacity_rows": 65536, + "replay_capacity_steps": 64, + "obs_dim": 49, + "critic_dim": 52, + "action_dim": 12, + "env_steps_per_sync": 1 + }, + "collector_env_steps_per_sec": 141773.41556833233, + "phase_mean_ms": { + "env_step_ms": 6.86202861, + "replay_ms": 0.35465879666666666, + "bookkeeping_ms": 0.006105513333333333 + }, + "physics_mean_ms": 5.7429038228777545, + "env_breakdown_mean_ms": { + "env_step_total_ms": 6.84874063435321, + "apply_action_ms": 0.06743915844708681, + "step_core_ms": 5.767145466525108, + "update_state_ms": 1.00603516989698, + "reset_done_ms": 0.0024079966048399606, + "env_step_internal_gap_ms": 0.019000818525985477, + "reset_done_terminal_obs_ms": 0.0, + "reset_done_reset_call_ms": 0.0, + "reset_done_obs_scatter_ms": 0.0, + "reset_done_info_scatter_ms": 0.0, + "reset_done_internal_gap_ms": 0.0, + "dr_reset_total_ms": 0.0, + "dr_reset_plan_ms": 0.0, + "dr_reset_payload_filter_ms": 0.0, + "dr_reset_set_state_ms": 0.0, + "dr_reset_build_observation_ms": 0.0, + "dr_reset_internal_gap_ms": 0.0, + "dr_reset_observation_getters_ms": 0.0, + "dr_reset_obs_get_motion_ms": 0.0, + "dr_reset_obs_get_local_linvel_ms": 0.0, + "dr_reset_obs_get_gyro_ms": 0.0, + "dr_reset_obs_get_gravity_ms": 0.0, + "dr_reset_obs_get_dof_pos_ms": 0.0, + "dr_reset_obs_get_dof_vel_ms": 0.0, + "dr_reset_obs_get_body_pose_ms": 0.0, + "dr_reset_observation_compute_obs_ms": 0.0, + "dr_reset_observation_internal_gap_ms": 0.0, + "set_state_mask_ms": 0.0, + "set_state_data_slice_ms": 0.0, + "set_state_data_reset_ms": 0.0, + "set_state_clear_forces_ms": 0.0, + "set_state_geom_overrides_ms": 0.0, + "set_state_reset_rand_ms": 0.0, + "set_state_set_dof_vel_ms": 0.0, + "set_state_set_dof_pos_ms": 0.0, + "set_state_actuator_ctrl_ms": 0.0, + "set_state_forward_kinematic_ms": 0.0, + "set_state_refresh_pose_cache_ms": 0.0, + "set_state_invalidate_velocity_ms": 0.0, + "set_state_qpos_convert_ms": 0.0, + "set_state_pool_reset_ms": 0.0, + "set_state_state_scatter_ms": 0.0, + "set_state_reset_upload_ms": 0.0, + "set_state_reset_forward_ms": 0.0, + "set_state_host_cache_refresh_ms": 0.0, + "set_state_internal_gap_ms": 0.0, + "reset_done_count": 0.0 + }, + "reset_count": 0.0 + }, + { + "name": "n1024-r1-v1.5.1", + "version": "1.5.1", + "num_envs": 1024, + "repeat": 1, + "raw_sha256": "59f1234cfa27d96d92ba6b854c913c764cde5f2b9dd6352ed5f3fd03c683e08a", + "elapsed_process_s": 5.320825099945068, + "case": { + "algo": "flashsac", + "task": "go2_joystick_flat", + "sim": "mujoco", + "variant": "default", + "runtime_sim_backend": "mujoco", + "command": "uv run train --algo flashsac --task go2_joystick_flat --sim mujoco", + "training_task_name": "Go2JoystickFlat", + "num_envs": 1024, + "replay_capacity_rows": 65536, + "replay_capacity_steps": 64, + "obs_dim": 49, + "critic_dim": 52, + "action_dim": 12, + "env_steps_per_sync": 1 + }, + "collector_env_steps_per_sec": 89607.41614497962, + "phase_mean_ms": { + "env_step_ms": 10.864116836666666, + "replay_ms": 0.55736806, + "bookkeeping_ms": 0.0061408 + }, + "physics_mean_ms": 6.305949216087659, + "env_breakdown_mean_ms": { + "env_step_total_ms": 10.850910328639051, + "apply_action_ms": 0.06671783048659563, + "step_core_ms": 6.332959521872302, + "update_state_ms": 4.443263046753903, + "reset_done_ms": 0.0023370771668851376, + "env_step_internal_gap_ms": 0.018839360386980742, + "reset_done_terminal_obs_ms": 0.0, + "reset_done_reset_call_ms": 0.0, + "reset_done_obs_scatter_ms": 0.0, + "reset_done_info_scatter_ms": 0.0, + "reset_done_internal_gap_ms": 0.0, + "dr_reset_total_ms": 0.0, + "dr_reset_plan_ms": 0.0, + "dr_reset_payload_filter_ms": 0.0, + "dr_reset_set_state_ms": 0.0, + "dr_reset_build_observation_ms": 0.0, + "dr_reset_internal_gap_ms": 0.0, + "dr_reset_observation_getters_ms": 0.0, + "dr_reset_obs_get_motion_ms": 0.0, + "dr_reset_obs_get_local_linvel_ms": 0.0, + "dr_reset_obs_get_gyro_ms": 0.0, + "dr_reset_obs_get_gravity_ms": 0.0, + "dr_reset_obs_get_dof_pos_ms": 0.0, + "dr_reset_obs_get_dof_vel_ms": 0.0, + "dr_reset_obs_get_body_pose_ms": 0.0, + "dr_reset_observation_compute_obs_ms": 0.0, + "dr_reset_observation_internal_gap_ms": 0.0, + "set_state_mask_ms": 0.0, + "set_state_data_slice_ms": 0.0, + "set_state_data_reset_ms": 0.0, + "set_state_clear_forces_ms": 0.0, + "set_state_geom_overrides_ms": 0.0, + "set_state_reset_rand_ms": 0.0, + "set_state_set_dof_vel_ms": 0.0, + "set_state_set_dof_pos_ms": 0.0, + "set_state_actuator_ctrl_ms": 0.0, + "set_state_forward_kinematic_ms": 0.0, + "set_state_refresh_pose_cache_ms": 0.0, + "set_state_invalidate_velocity_ms": 0.0, + "set_state_qpos_convert_ms": 0.0, + "set_state_pool_reset_ms": 0.0, + "set_state_state_scatter_ms": 0.0, + "set_state_reset_upload_ms": 0.0, + "set_state_reset_forward_ms": 0.0, + "set_state_host_cache_refresh_ms": 0.0, + "set_state_internal_gap_ms": 0.0, + "reset_done_count": 0.0 + }, + "reset_count": 0.0 + }, + { + "name": "n1024-r2-v1.5.1", + "version": "1.5.1", + "num_envs": 1024, + "repeat": 2, + "raw_sha256": "321e073d3e374b653446bc454356c78612d6a07a1afecf18d204961b66be5121", + "elapsed_process_s": 5.572322607040405, + "case": { + "algo": "flashsac", + "task": "go2_joystick_flat", + "sim": "mujoco", + "variant": "default", + "runtime_sim_backend": "mujoco", + "command": "uv run train --algo flashsac --task go2_joystick_flat --sim mujoco", + "training_task_name": "Go2JoystickFlat", + "num_envs": 1024, + "replay_capacity_rows": 65536, + "replay_capacity_steps": 64, + "obs_dim": 49, + "critic_dim": 52, + "action_dim": 12, + "env_steps_per_sync": 1 + }, + "collector_env_steps_per_sec": 82537.0914031516, + "phase_mean_ms": { + "env_step_ms": 10.85580443, + "replay_ms": 1.5443433033333334, + "bookkeeping_ms": 0.006395713333333333 + }, + "physics_mean_ms": 6.235153070495774, + "env_breakdown_mean_ms": { + "env_step_total_ms": 10.84248159856846, + "apply_action_ms": 0.06798107565070192, + "step_core_ms": 6.262067643304666, + "update_state_ms": 4.504413620258371, + "reset_done_ms": 0.002320101484656334, + "env_step_internal_gap_ms": 0.019021989301604876, + "reset_done_terminal_obs_ms": 0.0, + "reset_done_reset_call_ms": 0.0, + "reset_done_obs_scatter_ms": 0.0, + "reset_done_info_scatter_ms": 0.0, + "reset_done_internal_gap_ms": 0.0, + "dr_reset_total_ms": 0.0, + "dr_reset_plan_ms": 0.0, + "dr_reset_payload_filter_ms": 0.0, + "dr_reset_set_state_ms": 0.0, + "dr_reset_build_observation_ms": 0.0, + "dr_reset_internal_gap_ms": 0.0, + "dr_reset_observation_getters_ms": 0.0, + "dr_reset_obs_get_motion_ms": 0.0, + "dr_reset_obs_get_local_linvel_ms": 0.0, + "dr_reset_obs_get_gyro_ms": 0.0, + "dr_reset_obs_get_gravity_ms": 0.0, + "dr_reset_obs_get_dof_pos_ms": 0.0, + "dr_reset_obs_get_dof_vel_ms": 0.0, + "dr_reset_obs_get_body_pose_ms": 0.0, + "dr_reset_observation_compute_obs_ms": 0.0, + "dr_reset_observation_internal_gap_ms": 0.0, + "set_state_mask_ms": 0.0, + "set_state_data_slice_ms": 0.0, + "set_state_data_reset_ms": 0.0, + "set_state_clear_forces_ms": 0.0, + "set_state_geom_overrides_ms": 0.0, + "set_state_reset_rand_ms": 0.0, + "set_state_set_dof_vel_ms": 0.0, + "set_state_set_dof_pos_ms": 0.0, + "set_state_actuator_ctrl_ms": 0.0, + "set_state_forward_kinematic_ms": 0.0, + "set_state_refresh_pose_cache_ms": 0.0, + "set_state_invalidate_velocity_ms": 0.0, + "set_state_qpos_convert_ms": 0.0, + "set_state_pool_reset_ms": 0.0, + "set_state_state_scatter_ms": 0.0, + "set_state_reset_upload_ms": 0.0, + "set_state_reset_forward_ms": 0.0, + "set_state_host_cache_refresh_ms": 0.0, + "set_state_internal_gap_ms": 0.0, + "reset_done_count": 0.0 + }, + "reset_count": 0.0 + }, + { + "name": "n1024-r2-v1.4.0", + "version": "1.4.0", + "num_envs": 1024, + "repeat": 2, + "raw_sha256": "ef045bb784586501974cd07625b0a0cf957d3f18fb261622a9e4f71f0e997bb8", + "elapsed_process_s": 3.9696743488311768, + "case": { + "algo": "flashsac", + "task": "go2_joystick_flat", + "sim": "mujoco", + "variant": "default", + "runtime_sim_backend": "mujoco", + "command": "uv run train --algo flashsac --task go2_joystick_flat --sim mujoco", + "training_task_name": "Go2JoystickFlat", + "num_envs": 1024, + "replay_capacity_rows": 65536, + "replay_capacity_steps": 64, + "obs_dim": 49, + "critic_dim": 52, + "action_dim": 12, + "env_steps_per_sync": 1 + }, + "collector_env_steps_per_sec": 138779.94897557306, + "phase_mean_ms": { + "env_step_ms": 6.848976946666666, + "replay_ms": 0.5235757666666667, + "bookkeeping_ms": 0.0060349033333333335 + }, + "physics_mean_ms": 5.724051860161126, + "env_breakdown_mean_ms": { + "env_step_total_ms": 6.83592569315806, + "apply_action_ms": 0.06734184532736738, + "step_core_ms": 5.748405104192595, + "update_state_ms": 1.011755654277901, + "reset_done_ms": 0.002490676318605741, + "env_step_internal_gap_ms": 0.01898366655019804, + "reset_done_terminal_obs_ms": 0.0, + "reset_done_reset_call_ms": 0.0, + "reset_done_obs_scatter_ms": 0.0, + "reset_done_info_scatter_ms": 0.0, + "reset_done_internal_gap_ms": 0.0, + "dr_reset_total_ms": 0.0, + "dr_reset_plan_ms": 0.0, + "dr_reset_payload_filter_ms": 0.0, + "dr_reset_set_state_ms": 0.0, + "dr_reset_build_observation_ms": 0.0, + "dr_reset_internal_gap_ms": 0.0, + "dr_reset_observation_getters_ms": 0.0, + "dr_reset_obs_get_motion_ms": 0.0, + "dr_reset_obs_get_local_linvel_ms": 0.0, + "dr_reset_obs_get_gyro_ms": 0.0, + "dr_reset_obs_get_gravity_ms": 0.0, + "dr_reset_obs_get_dof_pos_ms": 0.0, + "dr_reset_obs_get_dof_vel_ms": 0.0, + "dr_reset_obs_get_body_pose_ms": 0.0, + "dr_reset_observation_compute_obs_ms": 0.0, + "dr_reset_observation_internal_gap_ms": 0.0, + "set_state_mask_ms": 0.0, + "set_state_data_slice_ms": 0.0, + "set_state_data_reset_ms": 0.0, + "set_state_clear_forces_ms": 0.0, + "set_state_geom_overrides_ms": 0.0, + "set_state_reset_rand_ms": 0.0, + "set_state_set_dof_vel_ms": 0.0, + "set_state_set_dof_pos_ms": 0.0, + "set_state_actuator_ctrl_ms": 0.0, + "set_state_forward_kinematic_ms": 0.0, + "set_state_refresh_pose_cache_ms": 0.0, + "set_state_invalidate_velocity_ms": 0.0, + "set_state_qpos_convert_ms": 0.0, + "set_state_pool_reset_ms": 0.0, + "set_state_state_scatter_ms": 0.0, + "set_state_reset_upload_ms": 0.0, + "set_state_reset_forward_ms": 0.0, + "set_state_host_cache_refresh_ms": 0.0, + "set_state_internal_gap_ms": 0.0, + "reset_done_count": 0.0 + }, + "reset_count": 0.0 + }, + { + "name": "n1024-r3-v1.4.0", + "version": "1.4.0", + "num_envs": 1024, + "repeat": 3, + "raw_sha256": "c118de26dc19f433b9a6c8913d230a9c225bf842fd46d6c0bd7cd598907635a4", + "elapsed_process_s": 4.219560861587524, + "case": { + "algo": "flashsac", + "task": "go2_joystick_flat", + "sim": "mujoco", + "variant": "default", + "runtime_sim_backend": "mujoco", + "command": "uv run train --algo flashsac --task go2_joystick_flat --sim mujoco", + "training_task_name": "Go2JoystickFlat", + "num_envs": 1024, + "replay_capacity_rows": 65536, + "replay_capacity_steps": 64, + "obs_dim": 49, + "critic_dim": 52, + "action_dim": 12, + "env_steps_per_sync": 1 + }, + "collector_env_steps_per_sec": 131699.43594854994, + "phase_mean_ms": { + "env_step_ms": 7.07107428, + "replay_ms": 0.6979981633333333, + "bookkeeping_ms": 0.006207753333333333 + }, + "physics_mean_ms": 5.932748300644259, + "env_breakdown_mean_ms": { + "env_step_total_ms": 7.057991604475926, + "apply_action_ms": 0.06685046711936593, + "step_core_ms": 5.956701906397939, + "update_state_ms": 1.0260780272074044, + "reset_done_ms": 0.0024494528770446777, + "env_step_internal_gap_ms": 0.018994426398246254, + "reset_done_terminal_obs_ms": 0.0, + "reset_done_reset_call_ms": 0.0, + "reset_done_obs_scatter_ms": 0.0, + "reset_done_info_scatter_ms": 0.0, + "reset_done_internal_gap_ms": 0.0, + "dr_reset_total_ms": 0.0, + "dr_reset_plan_ms": 0.0, + "dr_reset_payload_filter_ms": 0.0, + "dr_reset_set_state_ms": 0.0, + "dr_reset_build_observation_ms": 0.0, + "dr_reset_internal_gap_ms": 0.0, + "dr_reset_observation_getters_ms": 0.0, + "dr_reset_obs_get_motion_ms": 0.0, + "dr_reset_obs_get_local_linvel_ms": 0.0, + "dr_reset_obs_get_gyro_ms": 0.0, + "dr_reset_obs_get_gravity_ms": 0.0, + "dr_reset_obs_get_dof_pos_ms": 0.0, + "dr_reset_obs_get_dof_vel_ms": 0.0, + "dr_reset_obs_get_body_pose_ms": 0.0, + "dr_reset_observation_compute_obs_ms": 0.0, + "dr_reset_observation_internal_gap_ms": 0.0, + "set_state_mask_ms": 0.0, + "set_state_data_slice_ms": 0.0, + "set_state_data_reset_ms": 0.0, + "set_state_clear_forces_ms": 0.0, + "set_state_geom_overrides_ms": 0.0, + "set_state_reset_rand_ms": 0.0, + "set_state_set_dof_vel_ms": 0.0, + "set_state_set_dof_pos_ms": 0.0, + "set_state_actuator_ctrl_ms": 0.0, + "set_state_forward_kinematic_ms": 0.0, + "set_state_refresh_pose_cache_ms": 0.0, + "set_state_invalidate_velocity_ms": 0.0, + "set_state_qpos_convert_ms": 0.0, + "set_state_pool_reset_ms": 0.0, + "set_state_state_scatter_ms": 0.0, + "set_state_reset_upload_ms": 0.0, + "set_state_reset_forward_ms": 0.0, + "set_state_host_cache_refresh_ms": 0.0, + "set_state_internal_gap_ms": 0.0, + "reset_done_count": 0.0 + }, + "reset_count": 0.0 + }, + { + "name": "n1024-r3-v1.5.1", + "version": "1.5.1", + "num_envs": 1024, + "repeat": 3, + "raw_sha256": "79c2b839d58a0154fb23f5cf4047ec70286d1ae839285ff3005749a6b1e72352", + "elapsed_process_s": 5.370661497116089, + "case": { + "algo": "flashsac", + "task": "go2_joystick_flat", + "sim": "mujoco", + "variant": "default", + "runtime_sim_backend": "mujoco", + "command": "uv run train --algo flashsac --task go2_joystick_flat --sim mujoco", + "training_task_name": "Go2JoystickFlat", + "num_envs": 1024, + "replay_capacity_rows": 65536, + "replay_capacity_steps": 64, + "obs_dim": 49, + "critic_dim": 52, + "action_dim": 12, + "env_steps_per_sync": 1 + }, + "collector_env_steps_per_sec": 88166.58108648706, + "phase_mean_ms": { + "env_step_ms": 11.02724705, + "replay_ms": 0.58088099, + "bookkeeping_ms": 0.006250066666666667 + }, + "physics_mean_ms": 6.469823593894641, + "env_breakdown_mean_ms": { + "env_step_total_ms": 11.013968109618872, + "apply_action_ms": 0.06779568735510111, + "step_core_ms": 6.49577901000157, + "update_state_ms": 4.4424082719100015, + "reset_done_ms": 0.00239648080120484, + "env_step_internal_gap_ms": 0.01886759993212222, + "reset_done_terminal_obs_ms": 0.0, + "reset_done_reset_call_ms": 0.0, + "reset_done_obs_scatter_ms": 0.0, + "reset_done_info_scatter_ms": 0.0, + "reset_done_internal_gap_ms": 0.0, + "dr_reset_total_ms": 0.0, + "dr_reset_plan_ms": 0.0, + "dr_reset_payload_filter_ms": 0.0, + "dr_reset_set_state_ms": 0.0, + "dr_reset_build_observation_ms": 0.0, + "dr_reset_internal_gap_ms": 0.0, + "dr_reset_observation_getters_ms": 0.0, + "dr_reset_obs_get_motion_ms": 0.0, + "dr_reset_obs_get_local_linvel_ms": 0.0, + "dr_reset_obs_get_gyro_ms": 0.0, + "dr_reset_obs_get_gravity_ms": 0.0, + "dr_reset_obs_get_dof_pos_ms": 0.0, + "dr_reset_obs_get_dof_vel_ms": 0.0, + "dr_reset_obs_get_body_pose_ms": 0.0, + "dr_reset_observation_compute_obs_ms": 0.0, + "dr_reset_observation_internal_gap_ms": 0.0, + "set_state_mask_ms": 0.0, + "set_state_data_slice_ms": 0.0, + "set_state_data_reset_ms": 0.0, + "set_state_clear_forces_ms": 0.0, + "set_state_geom_overrides_ms": 0.0, + "set_state_reset_rand_ms": 0.0, + "set_state_set_dof_vel_ms": 0.0, + "set_state_set_dof_pos_ms": 0.0, + "set_state_actuator_ctrl_ms": 0.0, + "set_state_forward_kinematic_ms": 0.0, + "set_state_refresh_pose_cache_ms": 0.0, + "set_state_invalidate_velocity_ms": 0.0, + "set_state_qpos_convert_ms": 0.0, + "set_state_pool_reset_ms": 0.0, + "set_state_state_scatter_ms": 0.0, + "set_state_reset_upload_ms": 0.0, + "set_state_reset_forward_ms": 0.0, + "set_state_host_cache_refresh_ms": 0.0, + "set_state_internal_gap_ms": 0.0, + "reset_done_count": 0.0 + }, + "reset_count": 0.0 + }, + { + "name": "n4096-r1-v1.5.1", + "version": "1.5.1", + "num_envs": 4096, + "repeat": 1, + "raw_sha256": "80be82e61d32a5f1097524be3e2f8a8574c120d17fc96a1d1dd0759560d79b89", + "elapsed_process_s": 13.279822826385498, + "case": { + "algo": "flashsac", + "task": "go2_joystick_flat", + "sim": "mujoco", + "variant": "default", + "runtime_sim_backend": "mujoco", + "command": "uv run train --algo flashsac --task go2_joystick_flat --sim mujoco", + "training_task_name": "Go2JoystickFlat", + "num_envs": 4096, + "replay_capacity_rows": 262144, + "replay_capacity_steps": 64, + "obs_dim": 49, + "critic_dim": 52, + "action_dim": 12, + "env_steps_per_sync": 1 + }, + "collector_env_steps_per_sec": 120476.44913107035, + "phase_mean_ms": { + "env_step_ms": 33.048964446666666, + "replay_ms": 0.94143066, + "bookkeeping_ms": 0.007951043333333333 + }, + "physics_mean_ms": 16.821255198835086, + "env_breakdown_mean_ms": { + "env_step_total_ms": 33.03331860496352, + "apply_action_ms": 0.12328641799588998, + "step_core_ms": 16.906598347704858, + "update_state_ms": 15.994200678542256, + "reset_done_ms": 0.002659880556166172, + "env_step_internal_gap_ms": 0.022219121867496496, + "reset_done_terminal_obs_ms": 0.0, + "reset_done_reset_call_ms": 0.0, + "reset_done_obs_scatter_ms": 0.0, + "reset_done_info_scatter_ms": 0.0, + "reset_done_internal_gap_ms": 0.0, + "dr_reset_total_ms": 0.0, + "dr_reset_plan_ms": 0.0, + "dr_reset_payload_filter_ms": 0.0, + "dr_reset_set_state_ms": 0.0, + "dr_reset_build_observation_ms": 0.0, + "dr_reset_internal_gap_ms": 0.0, + "dr_reset_observation_getters_ms": 0.0, + "dr_reset_obs_get_motion_ms": 0.0, + "dr_reset_obs_get_local_linvel_ms": 0.0, + "dr_reset_obs_get_gyro_ms": 0.0, + "dr_reset_obs_get_gravity_ms": 0.0, + "dr_reset_obs_get_dof_pos_ms": 0.0, + "dr_reset_obs_get_dof_vel_ms": 0.0, + "dr_reset_obs_get_body_pose_ms": 0.0, + "dr_reset_observation_compute_obs_ms": 0.0, + "dr_reset_observation_internal_gap_ms": 0.0, + "set_state_mask_ms": 0.0, + "set_state_data_slice_ms": 0.0, + "set_state_data_reset_ms": 0.0, + "set_state_clear_forces_ms": 0.0, + "set_state_geom_overrides_ms": 0.0, + "set_state_reset_rand_ms": 0.0, + "set_state_set_dof_vel_ms": 0.0, + "set_state_set_dof_pos_ms": 0.0, + "set_state_actuator_ctrl_ms": 0.0, + "set_state_forward_kinematic_ms": 0.0, + "set_state_refresh_pose_cache_ms": 0.0, + "set_state_invalidate_velocity_ms": 0.0, + "set_state_qpos_convert_ms": 0.0, + "set_state_pool_reset_ms": 0.0, + "set_state_state_scatter_ms": 0.0, + "set_state_reset_upload_ms": 0.0, + "set_state_reset_forward_ms": 0.0, + "set_state_host_cache_refresh_ms": 0.0, + "set_state_internal_gap_ms": 0.0, + "reset_done_count": 0.0 + }, + "reset_count": 0.0 + }, + { + "name": "n4096-r1-v1.4.0", + "version": "1.4.0", + "num_envs": 4096, + "repeat": 1, + "raw_sha256": "2efb856165c5481944b9e254459851b62fd805563b16c116ba8683b4aedfefac", + "elapsed_process_s": 8.725704193115234, + "case": { + "algo": "flashsac", + "task": "go2_joystick_flat", + "sim": "mujoco", + "variant": "default", + "runtime_sim_backend": "mujoco", + "command": "uv run train --algo flashsac --task go2_joystick_flat --sim mujoco", + "training_task_name": "Go2JoystickFlat", + "num_envs": 4096, + "replay_capacity_rows": 262144, + "replay_capacity_steps": 64, + "obs_dim": 49, + "critic_dim": 52, + "action_dim": 12, + "env_steps_per_sync": 1 + }, + "collector_env_steps_per_sec": 209773.16554143906, + "phase_mean_ms": { + "env_step_ms": 19.053338366666665, + "replay_ms": 0.46491314, + "bookkeeping_ms": 0.007601643333333333 + }, + "physics_mean_ms": 16.34352561707298, + "env_breakdown_mean_ms": { + "env_step_total_ms": 19.037509365783382, + "apply_action_ms": 0.12389338264862697, + "step_core_ms": 16.422013073849183, + "update_state_ms": 2.481956905685365, + "reset_done_ms": 0.002801516093313694, + "env_step_internal_gap_ms": 0.02267348839017944, + "reset_done_terminal_obs_ms": 0.0, + "reset_done_reset_call_ms": 0.0, + "reset_done_obs_scatter_ms": 0.0, + "reset_done_info_scatter_ms": 0.0, + "reset_done_internal_gap_ms": 0.0, + "dr_reset_total_ms": 0.0, + "dr_reset_plan_ms": 0.0, + "dr_reset_payload_filter_ms": 0.0, + "dr_reset_set_state_ms": 0.0, + "dr_reset_build_observation_ms": 0.0, + "dr_reset_internal_gap_ms": 0.0, + "dr_reset_observation_getters_ms": 0.0, + "dr_reset_obs_get_motion_ms": 0.0, + "dr_reset_obs_get_local_linvel_ms": 0.0, + "dr_reset_obs_get_gyro_ms": 0.0, + "dr_reset_obs_get_gravity_ms": 0.0, + "dr_reset_obs_get_dof_pos_ms": 0.0, + "dr_reset_obs_get_dof_vel_ms": 0.0, + "dr_reset_obs_get_body_pose_ms": 0.0, + "dr_reset_observation_compute_obs_ms": 0.0, + "dr_reset_observation_internal_gap_ms": 0.0, + "set_state_mask_ms": 0.0, + "set_state_data_slice_ms": 0.0, + "set_state_data_reset_ms": 0.0, + "set_state_clear_forces_ms": 0.0, + "set_state_geom_overrides_ms": 0.0, + "set_state_reset_rand_ms": 0.0, + "set_state_set_dof_vel_ms": 0.0, + "set_state_set_dof_pos_ms": 0.0, + "set_state_actuator_ctrl_ms": 0.0, + "set_state_forward_kinematic_ms": 0.0, + "set_state_refresh_pose_cache_ms": 0.0, + "set_state_invalidate_velocity_ms": 0.0, + "set_state_qpos_convert_ms": 0.0, + "set_state_pool_reset_ms": 0.0, + "set_state_state_scatter_ms": 0.0, + "set_state_reset_upload_ms": 0.0, + "set_state_reset_forward_ms": 0.0, + "set_state_host_cache_refresh_ms": 0.0, + "set_state_internal_gap_ms": 0.0, + "reset_done_count": 0.0 + }, + "reset_count": 0.0 + }, + { + "name": "n4096-r2-v1.4.0", + "version": "1.4.0", + "num_envs": 4096, + "repeat": 2, + "raw_sha256": "fbe491bbe132dcba0b0f801bb0a9c9a5622a8b52fbe94000cc634a282c596d5a", + "elapsed_process_s": 8.524210691452026, + "case": { + "algo": "flashsac", + "task": "go2_joystick_flat", + "sim": "mujoco", + "variant": "default", + "runtime_sim_backend": "mujoco", + "command": "uv run train --algo flashsac --task go2_joystick_flat --sim mujoco", + "training_task_name": "Go2JoystickFlat", + "num_envs": 4096, + "replay_capacity_rows": 262144, + "replay_capacity_steps": 64, + "obs_dim": 49, + "critic_dim": 52, + "action_dim": 12, + "env_steps_per_sync": 1 + }, + "collector_env_steps_per_sec": 209956.72572494432, + "phase_mean_ms": { + "env_step_ms": 19.081822733333333, + "replay_ms": 0.4193769333333333, + "bookkeeping_ms": 0.00758247 + }, + "physics_mean_ms": 16.38752069401865, + "env_breakdown_mean_ms": { + "env_step_total_ms": 19.066309578871977, + "apply_action_ms": 0.12227083866794904, + "step_core_ms": 16.46486333028103, + "update_state_ms": 2.4696677325603864, + "reset_done_ms": 0.002785355318337679, + "env_step_internal_gap_ms": 0.022235476505631256, + "reset_done_terminal_obs_ms": 0.0, + "reset_done_reset_call_ms": 0.0, + "reset_done_obs_scatter_ms": 0.0, + "reset_done_info_scatter_ms": 0.0, + "reset_done_internal_gap_ms": 0.0, + "dr_reset_total_ms": 0.0, + "dr_reset_plan_ms": 0.0, + "dr_reset_payload_filter_ms": 0.0, + "dr_reset_set_state_ms": 0.0, + "dr_reset_build_observation_ms": 0.0, + "dr_reset_internal_gap_ms": 0.0, + "dr_reset_observation_getters_ms": 0.0, + "dr_reset_obs_get_motion_ms": 0.0, + "dr_reset_obs_get_local_linvel_ms": 0.0, + "dr_reset_obs_get_gyro_ms": 0.0, + "dr_reset_obs_get_gravity_ms": 0.0, + "dr_reset_obs_get_dof_pos_ms": 0.0, + "dr_reset_obs_get_dof_vel_ms": 0.0, + "dr_reset_obs_get_body_pose_ms": 0.0, + "dr_reset_observation_compute_obs_ms": 0.0, + "dr_reset_observation_internal_gap_ms": 0.0, + "set_state_mask_ms": 0.0, + "set_state_data_slice_ms": 0.0, + "set_state_data_reset_ms": 0.0, + "set_state_clear_forces_ms": 0.0, + "set_state_geom_overrides_ms": 0.0, + "set_state_reset_rand_ms": 0.0, + "set_state_set_dof_vel_ms": 0.0, + "set_state_set_dof_pos_ms": 0.0, + "set_state_actuator_ctrl_ms": 0.0, + "set_state_forward_kinematic_ms": 0.0, + "set_state_refresh_pose_cache_ms": 0.0, + "set_state_invalidate_velocity_ms": 0.0, + "set_state_qpos_convert_ms": 0.0, + "set_state_pool_reset_ms": 0.0, + "set_state_state_scatter_ms": 0.0, + "set_state_reset_upload_ms": 0.0, + "set_state_reset_forward_ms": 0.0, + "set_state_host_cache_refresh_ms": 0.0, + "set_state_internal_gap_ms": 0.0, + "reset_done_count": 0.0 + }, + "reset_count": 0.0 + }, + { + "name": "n4096-r2-v1.5.1", + "version": "1.5.1", + "num_envs": 4096, + "repeat": 2, + "raw_sha256": "9c2b2280c962edb5914cfeb2c9cfe32d01e05920f3301dee00f0bd6ff8b083c9", + "elapsed_process_s": 13.632852554321289, + "case": { + "algo": "flashsac", + "task": "go2_joystick_flat", + "sim": "mujoco", + "variant": "default", + "runtime_sim_backend": "mujoco", + "command": "uv run train --algo flashsac --task go2_joystick_flat --sim mujoco", + "training_task_name": "Go2JoystickFlat", + "num_envs": 4096, + "replay_capacity_rows": 262144, + "replay_capacity_steps": 64, + "obs_dim": 49, + "critic_dim": 52, + "action_dim": 12, + "env_steps_per_sync": 1 + }, + "collector_env_steps_per_sec": 117284.25442067742, + "phase_mean_ms": { + "env_step_ms": 33.084762893333334, + "replay_ms": 1.8306515266666668, + "bookkeeping_ms": 0.008284736666666667 + }, + "physics_mean_ms": 16.786972056142986, + "env_breakdown_mean_ms": { + "env_step_total_ms": 33.06830300716683, + "apply_action_ms": 0.12499164479474227, + "step_core_ms": 16.87322591509049, + "update_state_ms": 16.060592014497768, + "reset_done_ms": 0.002655543697377046, + "env_step_internal_gap_ms": 0.023297775252955604, + "reset_done_terminal_obs_ms": 0.0, + "reset_done_reset_call_ms": 0.0, + "reset_done_obs_scatter_ms": 0.0, + "reset_done_info_scatter_ms": 0.0, + "reset_done_internal_gap_ms": 0.0, + "dr_reset_total_ms": 0.0, + "dr_reset_plan_ms": 0.0, + "dr_reset_payload_filter_ms": 0.0, + "dr_reset_set_state_ms": 0.0, + "dr_reset_build_observation_ms": 0.0, + "dr_reset_internal_gap_ms": 0.0, + "dr_reset_observation_getters_ms": 0.0, + "dr_reset_obs_get_motion_ms": 0.0, + "dr_reset_obs_get_local_linvel_ms": 0.0, + "dr_reset_obs_get_gyro_ms": 0.0, + "dr_reset_obs_get_gravity_ms": 0.0, + "dr_reset_obs_get_dof_pos_ms": 0.0, + "dr_reset_obs_get_dof_vel_ms": 0.0, + "dr_reset_obs_get_body_pose_ms": 0.0, + "dr_reset_observation_compute_obs_ms": 0.0, + "dr_reset_observation_internal_gap_ms": 0.0, + "set_state_mask_ms": 0.0, + "set_state_data_slice_ms": 0.0, + "set_state_data_reset_ms": 0.0, + "set_state_clear_forces_ms": 0.0, + "set_state_geom_overrides_ms": 0.0, + "set_state_reset_rand_ms": 0.0, + "set_state_set_dof_vel_ms": 0.0, + "set_state_set_dof_pos_ms": 0.0, + "set_state_actuator_ctrl_ms": 0.0, + "set_state_forward_kinematic_ms": 0.0, + "set_state_refresh_pose_cache_ms": 0.0, + "set_state_invalidate_velocity_ms": 0.0, + "set_state_qpos_convert_ms": 0.0, + "set_state_pool_reset_ms": 0.0, + "set_state_state_scatter_ms": 0.0, + "set_state_reset_upload_ms": 0.0, + "set_state_reset_forward_ms": 0.0, + "set_state_host_cache_refresh_ms": 0.0, + "set_state_internal_gap_ms": 0.0, + "reset_done_count": 0.0 + }, + "reset_count": 0.0 + }, + { + "name": "n4096-r3-v1.5.1", + "version": "1.5.1", + "num_envs": 4096, + "repeat": 3, + "raw_sha256": "95c8b96245c1499020f2a187ca8d9289d5c32a72778fb57a23c4a83a9099f68a", + "elapsed_process_s": 13.381144762039185, + "case": { + "algo": "flashsac", + "task": "go2_joystick_flat", + "sim": "mujoco", + "variant": "default", + "runtime_sim_backend": "mujoco", + "command": "uv run train --algo flashsac --task go2_joystick_flat --sim mujoco", + "training_task_name": "Go2JoystickFlat", + "num_envs": 4096, + "replay_capacity_rows": 262144, + "replay_capacity_steps": 64, + "obs_dim": 49, + "critic_dim": 52, + "action_dim": 12, + "env_steps_per_sync": 1 + }, + "collector_env_steps_per_sec": 120949.29312238331, + "phase_mean_ms": { + "env_step_ms": 33.010430516666666, + "replay_ms": 0.8473888233333333, + "bookkeeping_ms": 0.007612246666666667 + }, + "physics_mean_ms": 16.81121075991541, + "env_breakdown_mean_ms": { + "env_step_total_ms": 32.99489230848849, + "apply_action_ms": 0.12217553332448006, + "step_core_ms": 16.8953305335405, + "update_state_ms": 15.968400709486255, + "reset_done_ms": 0.0026177141504983106, + "env_step_internal_gap_ms": 0.021906026164935095, + "reset_done_terminal_obs_ms": 0.0, + "reset_done_reset_call_ms": 0.0, + "reset_done_obs_scatter_ms": 0.0, + "reset_done_info_scatter_ms": 0.0, + "reset_done_internal_gap_ms": 0.0, + "dr_reset_total_ms": 0.0, + "dr_reset_plan_ms": 0.0, + "dr_reset_payload_filter_ms": 0.0, + "dr_reset_set_state_ms": 0.0, + "dr_reset_build_observation_ms": 0.0, + "dr_reset_internal_gap_ms": 0.0, + "dr_reset_observation_getters_ms": 0.0, + "dr_reset_obs_get_motion_ms": 0.0, + "dr_reset_obs_get_local_linvel_ms": 0.0, + "dr_reset_obs_get_gyro_ms": 0.0, + "dr_reset_obs_get_gravity_ms": 0.0, + "dr_reset_obs_get_dof_pos_ms": 0.0, + "dr_reset_obs_get_dof_vel_ms": 0.0, + "dr_reset_obs_get_body_pose_ms": 0.0, + "dr_reset_observation_compute_obs_ms": 0.0, + "dr_reset_observation_internal_gap_ms": 0.0, + "set_state_mask_ms": 0.0, + "set_state_data_slice_ms": 0.0, + "set_state_data_reset_ms": 0.0, + "set_state_clear_forces_ms": 0.0, + "set_state_geom_overrides_ms": 0.0, + "set_state_reset_rand_ms": 0.0, + "set_state_set_dof_vel_ms": 0.0, + "set_state_set_dof_pos_ms": 0.0, + "set_state_actuator_ctrl_ms": 0.0, + "set_state_forward_kinematic_ms": 0.0, + "set_state_refresh_pose_cache_ms": 0.0, + "set_state_invalidate_velocity_ms": 0.0, + "set_state_qpos_convert_ms": 0.0, + "set_state_pool_reset_ms": 0.0, + "set_state_state_scatter_ms": 0.0, + "set_state_reset_upload_ms": 0.0, + "set_state_reset_forward_ms": 0.0, + "set_state_host_cache_refresh_ms": 0.0, + "set_state_internal_gap_ms": 0.0, + "reset_done_count": 0.0 + }, + "reset_count": 0.0 + }, + { + "name": "n4096-r3-v1.4.0", + "version": "1.4.0", + "num_envs": 4096, + "repeat": 3, + "raw_sha256": "45e00b9cf2e607cf6b86dc1130742da366eee5ad1d621e0054b526f3d16409cd", + "elapsed_process_s": 8.675379514694214, + "case": { + "algo": "flashsac", + "task": "go2_joystick_flat", + "sim": "mujoco", + "variant": "default", + "runtime_sim_backend": "mujoco", + "command": "uv run train --algo flashsac --task go2_joystick_flat --sim mujoco", + "training_task_name": "Go2JoystickFlat", + "num_envs": 4096, + "replay_capacity_rows": 262144, + "replay_capacity_steps": 64, + "obs_dim": 49, + "critic_dim": 52, + "action_dim": 12, + "env_steps_per_sync": 1 + }, + "collector_env_steps_per_sec": 206356.62946373527, + "phase_mean_ms": { + "env_step_ms": 19.059439426666668, + "replay_ms": 0.7817217633333333, + "bookkeeping_ms": 0.007971073333333334 + }, + "physics_mean_ms": 16.33964451417948, + "env_breakdown_mean_ms": { + "env_step_total_ms": 19.043666618720938, + "apply_action_ms": 0.12428597547113895, + "step_core_ms": 16.417792617188145, + "update_state_ms": 2.491886674736937, + "reset_done_ms": 0.0028479029424488544, + "env_step_internal_gap_ms": 0.022626256327996044, + "reset_done_terminal_obs_ms": 0.0, + "reset_done_reset_call_ms": 0.0, + "reset_done_obs_scatter_ms": 0.0, + "reset_done_info_scatter_ms": 0.0, + "reset_done_internal_gap_ms": 0.0, + "dr_reset_total_ms": 0.0, + "dr_reset_plan_ms": 0.0, + "dr_reset_payload_filter_ms": 0.0, + "dr_reset_set_state_ms": 0.0, + "dr_reset_build_observation_ms": 0.0, + "dr_reset_internal_gap_ms": 0.0, + "dr_reset_observation_getters_ms": 0.0, + "dr_reset_obs_get_motion_ms": 0.0, + "dr_reset_obs_get_local_linvel_ms": 0.0, + "dr_reset_obs_get_gyro_ms": 0.0, + "dr_reset_obs_get_gravity_ms": 0.0, + "dr_reset_obs_get_dof_pos_ms": 0.0, + "dr_reset_obs_get_dof_vel_ms": 0.0, + "dr_reset_obs_get_body_pose_ms": 0.0, + "dr_reset_observation_compute_obs_ms": 0.0, + "dr_reset_observation_internal_gap_ms": 0.0, + "set_state_mask_ms": 0.0, + "set_state_data_slice_ms": 0.0, + "set_state_data_reset_ms": 0.0, + "set_state_clear_forces_ms": 0.0, + "set_state_geom_overrides_ms": 0.0, + "set_state_reset_rand_ms": 0.0, + "set_state_set_dof_vel_ms": 0.0, + "set_state_set_dof_pos_ms": 0.0, + "set_state_actuator_ctrl_ms": 0.0, + "set_state_forward_kinematic_ms": 0.0, + "set_state_refresh_pose_cache_ms": 0.0, + "set_state_invalidate_velocity_ms": 0.0, + "set_state_qpos_convert_ms": 0.0, + "set_state_pool_reset_ms": 0.0, + "set_state_state_scatter_ms": 0.0, + "set_state_reset_upload_ms": 0.0, + "set_state_reset_forward_ms": 0.0, + "set_state_host_cache_refresh_ms": 0.0, + "set_state_internal_gap_ms": 0.0, + "reset_done_count": 0.0 + }, + "reset_count": 0.0 + } + ], + "excluded_case": { + "case": "flashsac/g1_walk_flat/mujoco", + "version": "1.4.0", + "status": "construction_failed", + "root_error": "mesh pelvis_contour_link.STL resolved under g1/ instead of g1/assets/", + "secondary_error": "_materialize_spec_xml exception cleanup double-close reports OSError EBADF", + "no_throughput_claim": true + }, + "limitations": [ + "Only Go2 flat, MuJoCo CPU; no other engine benchmark", + "No resets occurred in any measured window", + "3 process repetitions per version and batch size; desktop background activity not isolated", + "1.5.1 fixes final-body-state freshness; same task intent does not imply equivalent observation semantics", + "Earlier 1.5.0 comparison was aborted after baseline correction and is excluded" + ] +} diff --git a/scripts/benchmark/reports/unisim_1_4_0_vs_1_5_1_collector.md b/scripts/benchmark/reports/unisim_1_4_0_vs_1_5_1_collector.md new file mode 100644 index 000000000..7e5811fe1 --- /dev/null +++ b/scripts/benchmark/reports/unisim_1_4_0_vs_1_5_1_collector.md @@ -0,0 +1,68 @@ +# MuJoCo collector:UniSim 1.4.0 → 1.5.1 + +在相同 UniLab 代码和 Go2 任务配置下,1.5.1 的 collector 活跃窗口吞吐比 1.4.0 低:1024 环境下降 **36.47%**,4096 环境下降 **42.57%**。三对运行均出现下降,主要增量位于状态更新阶段。本次依赖更新仍按请求精确固定为 `unisim-core==1.5.1`,没有关闭新版正确性修复来提高分数。 + +## 结果 + +单位是 **环境 transition/s**,每格为三次独立进程运行的中位数及最小—最大范围,不是 physics substep/s 或训练吞吐。 + +| 环境数 | 1.4.0 | 1.5.1 | 中位数变化 | +| --- | ---: | ---: | ---: | +| 1024 | 138,780(131,699–141,773) | 88,167(82,537–89,607) | −36.47% | +| 4096 | 209,773(206,357–209,957) | 120,476(117,284–120,949) | −42.57% | + +逐对变化:1024 环境为 −36.80%、−40.53%、−33.05%;4096 环境为 −42.57%、−44.14%、−41.39%。未丢弃慢样本。 + +下表为每次运行的 vector-step 阶段均值,再对三次运行取中位数;各列独立取中位数,不保证其和等于总时长的中位数。 + +| 环境数 | Physics,旧→新 | Update state,旧→新 | Replay,旧→新 | +| --- | ---: | ---: | ---: | +| 1024 | 5.743 → 6.306 ms | 1.012 → 4.443 ms | 0.524 → 0.581 ms | +| 4096 | 16.344 → 16.811 ms | 2.482 → 15.994 ms | 0.465 → 0.941 ms | + +12 次运行的计量窗口中 **reset 数量全部为零**,所以本结果不覆盖 reset 吞吐,也不能用 M2 稀疏 reset 的消融结果解释本次变化。 + +## 测试条件与口径 + +- 测量时两版本使用同一 UniLab 提交 `84a00d049eeac9292bbd58c25fcd06a4b64cd712`;没有混入尚未合入的 M2 消费代码。该版本适用于历史 1.4.0。依赖更新附带的默认字段声明和旧单测 fixture 适配发生在测量之后,不改变 collector 热循环。 +- 入口为既有 `scripts/benchmark/rl/benchmark_offpolicy_collector_active.py`,案例 `flashsac/go2_joystick_flat/mujoco`。Actor obs=49、critic obs=52、action=12。 +- CPU:AMD Ryzen 9 9950X3D2,16 物理核;固定进程和 MuJoCo worker 到 CPU 0–7,共 8 个不同物理核,不使用它们的 SMT siblings 16–23。Torch、OpenMP、BLAS、Numba 线程均固定为 8。未运行其他引擎 benchmark,MuJoCo 和 replay 均在 CPU。 +- Python 3.13.14、MuJoCo 3.11.0、mjbatch-uni 0.2.1、NumPy 2.4.4、Torch 2.8.0+cu128、unilab-rl 1.2.1。每次切换用 `uv pip install --no-deps`,逐次核对全部 133 个非 UniSim 包版本一致。 +- `algo.seed=1` 与 `env.seed=1`,动作全零;每次新进程预热 30 个 vector steps,再计量 300 步;ReplayBuffer 容量为 64 个 vector steps。 +- 每版本、每规模重复三次,串行执行。1024 环境顺序为 A/B、B/A、A/B;4096 为 B/A、A/B、B/A,A=1.4.0、B=1.5.1。没有把此前错误基线 1.5.0 的运行混入统计。 +- 指标为 `N × 300 / Σ(env_step + replay + bookkeeping)`;包括环境步进、奖励、终止处理、ReplayBuffer 写入/发布/提交和 collector 记账。不含策略推理、learner 等待、跨进程 IPC、初始化和进程总时长。 +- CPU affinity 不是独占 CPU;后台负载、频率和温度未隔离。只有三次进程重复,不据此推广所有任务、机器或训练配置。 + +## 分析与不能推断的内容 + +[1.4.0…1.5.1 源码差异](https://github.com/unilabsim/unisim/compare/v1.4.0...v1.5.1)包含 M0 状态正确性修复。新版 MuJoCo `_sync_tracked_body_state()` 在 step 后首次 body 查询时,逐 dirty environment 同步最终运动学/速度及 tracking sensor;旧版直接读取已有缓存。UniLab 的 body 状态查询会消费这条路径。因此,“physics 基本接近、update state 大幅增加”与新增刷新工作一致。 + +这是有源码支撑的候选解释,不是关闭该路径后的因果消融;本轮没有为跑分禁用刷新、修改旧包或调整任务物理配置。新版也修正了旧状态读数,因此版本间并非单纯执行完全等价语义的速度竞赛。后续性能优化应保留最终状态新鲜度,并针对该同步路径单独验证,不能直接恢复旧缓存行为。 + +G1 平地行走曾做兼容预检,但 1.4.0 在 sensor XML 物化时将 `pelvis_contour_link.STL` 解析到 `g1/` 而非已有的 `g1/assets/`,构造失败;其异常清理还以 `OSError: Bad file descriptor` 覆盖了原始错误。该任务没有吞吐结果,未纳入表格。 + +## 复现与证据 + +在隔离 checkout/venv 中使用上述 UniLab 提交与其余锁定依赖。历史 1.4.0 不满足当前项目 manifest,是通过 `--no-sync` 显式执行的兼容性实验;生产安装和最终 lock 均为 1.5.1。 + +```bash +uv sync --locked --extra mujoco +uv run unilab-pull-assets --robot go2 +# 分别将 VERSION 设为 1.4.0、1.5.1;按上面的交替顺序重复三次。 +VERSION=1.4.0 +uv pip install --python .venv/bin/python --no-deps "unisim-core==$VERSION" +taskset -c 0-7 env \ + UNILAB_COLLECTOR_TORCH_THREADS=8 OMP_NUM_THREADS=8 \ + OPENBLAS_NUM_THREADS=8 MKL_NUM_THREADS=8 NUMBA_NUM_THREADS=8 \ + CUDA_VISIBLE_DEVICES= MUJOCO_GL=disable \ + uv run --no-sync python scripts/benchmark/rl/benchmark_offpolicy_collector_active.py \ + --cases flashsac/go2_joystick_flat/mujoco --num-envs 1024 \ + --warmup-steps 30 --measure-steps 300 --replay-capacity-steps 64 \ + --override algo.seed=1 --override '++env.seed=1' \ + --override '++env.cpu_ids=[0,1,2,3,4,5,6,7]' \ + --out-json /tmp/collector-140-n1024-r1.json +# 同样运行 --num-envs 4096;完成后恢复项目锁定依赖。 +uv sync --locked --extra mujoco +``` + +[汇总 JSON](unisim_1_4_0_vs_1_5_1_collector.json)保存每次吞吐、阶段均值、精确版本、CPU/seed、asset/benchmark hash、原始文件 SHA256 和运行顺序。[完整原始结果 gzip](unisim_1_4_0_vs_1_5_1_collector.raw.json.gz)保留全部 12 次 benchmark 输出、逐步计时与实际命令。原始运行日志另位于忽略目录 `scripts/benchmark/outputs/unisim_1_4_0_vs_1_5_1_collector/`。 diff --git a/scripts/benchmark/reports/unisim_1_4_0_vs_1_5_1_collector.raw.json.gz b/scripts/benchmark/reports/unisim_1_4_0_vs_1_5_1_collector.raw.json.gz new file mode 100644 index 000000000..27d7d8114 Binary files /dev/null and b/scripts/benchmark/reports/unisim_1_4_0_vs_1_5_1_collector.raw.json.gz differ diff --git a/src/unilab/base/scene.py b/src/unilab/base/scene.py index 10668cec7..384219962 100644 --- a/src/unilab/base/scene.py +++ b/src/unilab/base/scene.py @@ -26,7 +26,7 @@ class SceneCfg(_UniSimSceneCfg): manager facade's :class:`EntityCfg` records on the cold configuration path. """ - model_file: str + model_file: str = "" fragment_files: list[str] = field(default_factory=list) terrain: TerrainSceneCfg | None = None entities: dict[str, object] = field(default_factory=dict) diff --git a/tests/base/test_backend_conformance.py b/tests/base/test_backend_conformance.py index f7ec1b44d..e22cdf4ef 100644 --- a/tests/base/test_backend_conformance.py +++ b/tests/base/test_backend_conformance.py @@ -399,16 +399,13 @@ def test_root_qvel_body_angular_contract_reads_back_world_velocity(backend_type: ) -def test_mujoco_root_layout_resolves_a_nonfirst_free_joint() -> None: - import mujoco - +def test_mujoco_root_layout_resolves_a_nonfirst_free_joint(tmp_path: Path) -> None: pytest.importorskip( "unisim.backend.mujoco.backend", reason="unisim-core MuJoCo adapter (mjbatch build) not available", ) - from unisim.backend.mujoco.backend import MuJoCoBackend - - model = mujoco.MjModel.from_xml_string( + source = tmp_path / "nonfirst-root.xml" + source.write_text( """ @@ -424,14 +421,17 @@ def test_mujoco_root_layout_resolves_a_nonfirst_free_joint() -> None: """ ) - backend = object.__new__(MuJoCoBackend) - backend._model = model - - layout = backend.get_root_state_layout("floating") - assert layout.qpos_indices == tuple(range(1, 8)) - assert layout.qvel_indices == tuple(range(1, 7)) - with pytest.raises(NotImplementedError, match="hinged.*exactly one free joint"): - backend.get_root_state_layout("hinged") + backend = create_backend( + "mujoco", SceneCfg(model_file=str(source)), 1, SIM_DT, base_name="floating" + ) + try: + layout = backend.get_root_state_layout("floating") + assert layout.qpos_indices == tuple(range(1, 8)) + assert layout.qvel_indices == tuple(range(1, 7)) + with pytest.raises(NotImplementedError, match="hinged.*exactly one free joint"): + backend.get_root_state_layout("hinged") + finally: + backend.close() def test_drake_root_layout_is_explicitly_unsupported_without_runtime_metadata() -> None: diff --git a/tests/base/test_backend_pre_step_control.py b/tests/base/test_backend_pre_step_control.py index 1516db424..8500ee270 100644 --- a/tests/base/test_backend_pre_step_control.py +++ b/tests/base/test_backend_pre_step_control.py @@ -136,6 +136,10 @@ def _fake_mujoco_backend(pre_step_control_fn=None): pool = _FakeMjBatch() backend = object.__new__(MuJoCoBackend) + backend._entity_layout = None + backend._tracked_body_state_dirty = np.zeros(1, dtype=np.bool_) + backend._tracked_sensor_slices = {} + backend._refresh_pre_step_body_state = True backend._pre_step_control_fn = pre_step_control_fn backend._tracked_sensor_copyout_range = None backend._num_envs = 1 diff --git a/tests/base/test_isaacsim_backend.py b/tests/base/test_isaacsim_backend.py index 40c4421af..283ceb4da 100644 --- a/tests/base/test_isaacsim_backend.py +++ b/tests/base/test_isaacsim_backend.py @@ -31,10 +31,8 @@ build_worker_env, resolve_isaacsim_runtime, ) -from unisim.backend.isaacsim.worker import ( - _quat_rotate_wxyz, - _resolve_articulation_root_prim_path, -) +from unisim.backend.isaacsim.scene_worker import _rotate +from unisim.backend.isaacsim.worker import _resolve_articulation_root_prim_path from unilab.base.backend_factory import create_backend from unilab.base.base import EnvCfg @@ -379,7 +377,7 @@ def test_interactive_renderer_roundtrip(scene_file: str, monkeypatch: pytest.Mon backend.close() -def test_interactive_playback_routes_startup_dimensions_and_camera( +def test_interactive_playback_routes_dimensions_and_rejects_ignored_camera_options( scene_file: str, monkeypatch: pytest.MonkeyPatch ) -> None: monkeypatch.setenv("DISPLAY", ":0") @@ -406,11 +404,7 @@ def record_init_renderer(*args: Any, **kwargs: Any) -> None: num_steps=1, headless=False, record_video=False, - camera_kwargs={ - "cam_distance": 3.0, - "cam_elevation": -15.0, - "cam_azimuth": 45.0, - }, + camera_kwargs=CameraCfg(), ) assert result is None assert init_calls == [ @@ -418,13 +412,19 @@ def record_init_renderer(*args: Any, **kwargs: Any) -> None: "headless": False, "width": 64, "height": 48, - "camera_kwargs": CameraCfg( - cam_distance=3.0, - cam_elevation=-15.0, - cam_azimuth=45.0, - ), + "camera_kwargs": CameraCfg(), } ] + with pytest.raises(NotImplementedError, match="interactive viewers"): + backend.run_playback( + env=SimpleNamespace(cfg=None), + initialize=lambda: 0, + step=lambda obs: obs + 1, + num_steps=1, + headless=False, + record_video=False, + camera_kwargs={"cam_distance": 3.0}, + ) finally: backend.close() @@ -536,7 +536,7 @@ def test_root_angular_velocity_helper_converts_body_to_world() -> None: half = np.sqrt(0.5) quat = np.array([[half, half, 0.0, 0.0]], dtype=np.float32) body_angvel = np.array([[0.0, -1.0, 0.0]], dtype=np.float32) - np.testing.assert_allclose(_quat_rotate_wxyz(quat, body_angvel), [[0.0, 0.0, -1.0]], atol=1e-6) + np.testing.assert_allclose(_rotate(quat, body_angvel), [[0.0, 0.0, -1.0]], atol=1e-6) class _FakePrim: diff --git a/uv.lock b/uv.lock index d6919a5a9..3dc93feec 100644 --- a/uv.lock +++ b/uv.lock @@ -5240,8 +5240,8 @@ requires-dist = [ { name = "trimesh", marker = "extra == 'viser'", specifier = ">=3.21.7" }, { name = "typing-extensions" }, { name = "unilab-rl", specifier = "==1.2.1" }, - { name = "unisim-core", specifier = ">=1.4.2" }, - { name = "unisim-core", extras = ["superdex"], marker = "python_full_version >= '3.12' and platform_machine == 'x86_64' and sys_platform == 'linux' and extra == 'superdex'", specifier = ">=1.4.2" }, + { name = "unisim-core", specifier = "==1.5.1" }, + { name = "unisim-core", extras = ["superdex"], marker = "python_full_version >= '3.12' and platform_machine == 'x86_64' and sys_platform == 'linux' and extra == 'superdex'", specifier = "==1.5.1" }, { name = "viser", marker = "extra == 'viser'", specifier = ">=1.0.26" }, { name = "wandb" }, { name = "warp-lang", marker = "extra == 'mjwarp'", specifier = "==1.16.0" }, @@ -5284,13 +5284,13 @@ wheels = [ [[package]] name = "unisim-core" -version = "1.4.2" +version = "1.5.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/e7/5954d490d66facf3449f1032d5cc13288fb4fd1166eaba4eea8987c4f4ca/unisim_core-1.4.2.tar.gz", hash = "sha256:e27d89292083cdff646d2dbeb0ac787ee4351e7ef811c20c6fed2a40578785b7", size = 269413, upload-time = "2026-09-16T04:22:39.708Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/a5/aaa2505237af593ee495963a537893e71a7452fb376e6881d8fb5e4d7695/unisim_core-1.5.1.tar.gz", hash = "sha256:49c5b178ba2e513a0eeebd0c42048a56d72fa1d563f2c66457268130a26ba5af", size = 354707, upload-time = "2026-09-17T04:56:46.441Z" } [package.optional-dependencies] superdex = [ diff --git a/uv.rocm.lock b/uv.rocm.lock index 7725f2723..e5b42b606 100644 --- a/uv.rocm.lock +++ b/uv.rocm.lock @@ -3790,7 +3790,7 @@ requires-dist = [ { name = "triton-rocm", marker = "platform_machine == 'x86_64' and sys_platform == 'linux'", specifier = "==3.6.0", index = "https://download.pytorch.org/whl/rocm7.2" }, { name = "typing-extensions" }, { name = "unilab-rl", specifier = "==1.2.1" }, - { name = "unisim-core", specifier = ">=1.4.2" }, + { name = "unisim-core", specifier = "==1.5.1" }, { name = "viser", marker = "extra == 'viser'", specifier = ">=1.0.26" }, { name = "wandb" }, ] @@ -3830,13 +3830,13 @@ wheels = [ [[package]] name = "unisim-core" -version = "1.4.2" +version = "1.5.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy", version = "2.2.6", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version < '3.11'" }, { name = "numpy", version = "2.4.4", source = { registry = "https://pypi.org/simple" }, marker = "python_full_version >= '3.11'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/e7/5954d490d66facf3449f1032d5cc13288fb4fd1166eaba4eea8987c4f4ca/unisim_core-1.4.2.tar.gz", hash = "sha256:e27d89292083cdff646d2dbeb0ac787ee4351e7ef811c20c6fed2a40578785b7", size = 269413, upload-time = "2026-09-16T04:22:39.708Z" } +sdist = { url = "https://files.pythonhosted.org/packages/ce/a5/aaa2505237af593ee495963a537893e71a7452fb376e6881d8fb5e4d7695/unisim_core-1.5.1.tar.gz", hash = "sha256:49c5b178ba2e513a0eeebd0c42048a56d72fa1d563f2c66457268130a26ba5af", size = 354707, upload-time = "2026-09-17T04:56:46.441Z" } [[package]] name = "urllib3"