仿真后端

当前 tensor-only Manager runtime 暴露 mujoco、mjwarp、genesis、 newton、motrix、superdex、scoped Drake owner,以及下文描述的显式 external-worker Isaac owner。用户命令通过 --sim 选择后端,并组合对应的 task owner YAML;不要单独覆盖 training.sim_backend。

Runtime 前置条件

  • 任何使用 --sim mujoco、MuJoCo 回放或 MuJoCo 专属调试工具的运行,都需要 mujoco extra 及其钉住的 mjbatch runtime。

  • MJWarp 需要 mjwarp extra、NVIDIA CUDA;多 GPU 主机必须显式配置 process-device topology。

  • Genesis 需要 genesis extra 以及已验证的 Linux x86_64 GPU 路径。

  • Newton 需要 newton extra 与 NVIDIA CUDA 设备;当前 tensor-native 支持范围 为 SAC g1_walk_flat 和 FlashSAC g1_motion_tracking。

  • Motrix 需要 motrix extra,提供 CPU-authoritative packed HOST_BRIDGE;当前 canonical 支持范围为 SAC g1_walk_flat 和 FlashSAC g1_motion_tracking。

  • SuperDex 在 CPython 3.12/3.13 Linux x86_64 上需要 superdex extra,提供 CPU-authoritative packed HOST_BRIDGE;当前范围为 Go2 configured research owner。

  • Drake 需要本地编译的 DrakeUni batch extension。其 scoped PPO go2_joystick_flat owner 使用 CPU physics 与 packed HOST_BRIDGE lifecycle;在 backend contract 补齐前,浮动根重置与 reset randomization 事件保持禁用。

  • IsaacGym 与 IsaacSim 分别需要隔离的 Python 3.8 / Python 3.11 worker 以及 同 GPU CUDA IPC。它们是显式 owner 选择,不会成为隐式 fallback 后端。

OS 与 GPU 支持

后端

操作系统

GPU

MuJoCo

Linux / macOS / Windows

不要求:CPU physics;离线回放可在 CPU 渲染

MJWarp

Linux(已验证路径)

要求:NVIDIA CUDA;单 GPU 主机默认使用当前 CUDA 设备

Genesis

Linux x86_64

要求:NVIDIA GPU 与 driver;仅验证 gs.gpu channel

Newton

Linux

要求:NVIDIA CUDA;selected-reset 通道为 device-resident

Motrix

Linux / macOS / Windows

CPU-authoritative physics;Torch CUDA buffer 可选

SuperDex

Linux x86_64(CPython 3.12/3.13)

CPU-authoritative physics;Torch CUDA buffer 可选

Drake

Linux x86_64 / Apple Silicon macOS

CPU-authoritative physics;Torch CUDA buffer 可选

IsaacGym

Linux

要求:外部 Python 3.8 worker 与 NVIDIA CUDA

IsaacSim

Linux

要求:外部 Python 3.11 IsaacLab worker 与 NVIDIA CUDA

后端设备要求与 learner 设备独立:MuJoCo 仍可以让 learner 使用 CUDA、ROCm、MPS 或 XPU。平台配置见 安装。

选择后端

UniLab 通过 task owner config 选择仿真后端。常规用法通过 --task 与 --sim 选择;off-policy 命令中的算法保留在 --algo,不放在 --task。

快速选择

需求

优先选择

默认路径或 owner 覆盖最广

MuJoCo

scripts/play_viser.py 等 MuJoCo 专属工具

MuJoCo

Device-resident tensor owner

MJWarp、Genesis 或 Newton,且支持矩阵标记该组合为 supported

CPU-authoritative packed HOST_BRIDGE

Motrix;SuperDex 或 scoped Drake 的 configured research owner

支持矩阵由 registry、owner YAML 与测试生成;当前证据源见 后端支持矩阵。

uv run train --algo ppo --task go2_joystick_flat --sim mujoco
uv run train --algo sac --task g1_motion_tracking --sim mjwarp

Owner YAML 位置:

  • PPO / APPO:src/unilab/conf/{ppo,appo}/task/<task>/<backend>.yaml

  • Off-policy(SAC / FlashSAC):src/unilab/conf/<algo>/task/<task>/<backend>.yaml

选中的 owner YAML 会将 training.sim_backend 作为 identity field。

回放差异

  • --render-mode auto 在 MuJoCo 路径导出 play_video.mp4。

  • --render-mode record 录制但不打开交互窗口。

  • --render-mode viser 在支持 physics-state playback 的后端(MuJoCo 与 MJWarp) 中启动浏览器 viser viewer。

  • --render-mode none 禁用回放。

uv run eval --algo ppo --task go2_joystick_flat --sim mujoco --load-run -1

支持证据

Task/backend/entrypoint 支持等级按证据分级。见 后端支持矩阵。

相关契约

unisim-core 边界

UniLab 的物理后端由独立的 unisim-core 发行版提供,Python namespace 为 unisim。例如:

uv sync --extra mujoco
uv run python -c "import unisim; print(unisim.ADAPTER_SPECS)"

unisim 不依赖 UniLab、Hydra 或训练组件。scoped MuJoCo/MJWarp/Genesis/Newton/Motrix/SuperDex 适配器与暂时搁置的适配器使用同一个 public contract。缺失 proprietary SDK 或 GPU worker 时会产生明确的 cold-path diagnostic;不会静默切换到另一个引擎。