后端支持矩阵¶
本页是后端参考页,放生成矩阵和需要精确查证的 backend 规则。它不承担首次阅读职责。
适合谁看¶
想按 task owner / algorithm / backend 精确查支持状态
想知道
Registered、Configured、Tested的证据差异想确认 playback 和 owner compose 的 backend 规则
Backend 选择规则¶
默认后端是
mujoco切到 Motrix 用统一 CLI 的
--sim motrix--sim mjwarp当前只对应g1_walk_flathost adapter;PPO (torch) 与 SAC (torch) 为 Tested,其他入口按下方矩阵查证,使用前需安装mjwarpextra--algo、--task、--sim共同选择 owner YAML不要把
training.sim_backend当独立 backend switch
Playback Differences¶
mujoco:--render-mode auto会导出play_video.mp4motrix:--render-mode auto会打开交互式 renderer 窗口,不录制视频,不受play_steps限制mjwarp: 默认仅支持显式、有限步数的record,通过 task owner 的 MuJoCo visual model 离线录制;--render-mode interactive路由到 MuJoCo 交互 viewer(mjwarp 跑物理、MuJoCo 渲染 env[0],强制单 env);不支持auto或 native rendererisaacsim:auto在有 display 时选择 Kit viewer,否则选择 headless RGB camera;当前真实主机仍有 RTX renderer 初始化 blocker,支持等级保持Configured--render-mode record: MuJoCo、mjwarp、Motrix 和 IsaacSim 都只录制视频--render-mode none: 不回放
Support Matrix¶
下面的矩阵由 registry、owner YAML 和测试/验证清单自动汇总;不要手工编辑表格内容。需要刷新时运行:
uv run scripts/generate_support_matrix.py --write
Evidence Grades¶
等级 |
仓库事实来源 |
|---|---|
|
|
|
存在对应的 owner YAML: |
|
|
|
存在与该组合绑定的已提交 benchmark manifest。 |
|
仓库中存在显式 recommendation 元数据。 |
Tested 只描述仓库中已有自动化覆盖或显式 maintainer 训练验证,不代表该组合具备同名 MuJoCo owner 的全部 backend capability;例如 phase-1 Motrix owner 可能只覆盖训练 smoke 和明确启用的 DR 子集。
mjwarp 完成训练验证的只有 g1_walk_flat host adapter:PPO (torch) 与 SAC (torch) owner 已完成训练验证,并有 backend、contract 与 playback 自动化覆盖,因此标记为 Tested。mjwarp playback 默认仅支持显式、有限步数的 record 并复用 MuJoCo 离线 renderer;uv run eval --sim mjwarp --render-mode interactive 路由到 MuJoCo 交互 viewer(mjwarp 跑物理、MuJoCo 渲染 env[0],强制单 env);不支持 auto 或 native playback。其他 entrypoint 中出现的 Registered 只表示 env/backend registry identity,不代表对应算法、terrain、完整 DR 或 production training 支持。
isaacgym 是 Python 3.8 子进程后端,当前只接入 g1_walk_flat。SAC (torch) owner 已在真机(external Python 3.8 worker runtime,不在仓库 CI 覆盖)完成训练与 record playback 验证,标记为 Tested;其余 isaacgym cell 最高只到 Configured(registry + owner YAML + compose/contract 覆盖),不代表任何训练或 play 验证。playback 走 IsaacGym 原生渲染(viewer + camera sensor 离屏录制),有显示器时 play_render_mode=auto 打开交互 viewer,无显示器时自动降级为离屏录制。
genesis 是进程内后端(genesis-world==1.3.3,要求 torch>=2.8 与 CUDA;一进程只允许一次 gs.init),当前只接入 g1_walk_flat 的 PPO (torch) 与 SAC (torch) owner。SAC cell 标记 Tested:真机完整训练验证(5000/5000 iterations,reward/mean 6.5 → 244.8,episode length → 987/1000,10.26M env steps / 224s wall time;run 2026-08-31_23-04-01_genesis)加 model_5000.pt 的 record playback 验证;PPO cell 最高只到 Configured(registry + owner YAML + compose/contract 覆盖),不代表训练验证。真机证据另有:env smoke 慢车道测试(tests/envs/locomotion/g1/test_g1_owner_contract.py:compose → env 构造 → keyframe reset → 12 步有限稳定 → cleanup,覆盖 ppo 与 sac 两棵树)在装有 CUDA 与 genesis extra 的机器上通过。adapter 的 materialize() 幂等且惰性触发(entity 校验在 env 的 materialize 钩子前读取状态 getter;isaacgym 后端同模式)。Genesis 在 import 时丢弃 MJCF 全局 <option>,owner YAML 显式重声明 genesis_integrator=implicitfast。原生 playback/渲染已接入:play_render_mode=auto 在有显示时打开 post-build 挂载的交互 viewer、无显示时降级离屏录制(record 写 play_video.mp4;get_physics_state 快照不声明)。未支持边界:geom 名称契约、terrain spawn 与 height scanner、contact sensor 为 per-link net-force 阈值近似(非 geom 对 data="found")、get_geom_friction 类绝对摩擦 DR fail-closed(geom 摩擦只有 per-env ratio API)。
isaacsim 是 IsaacSim 5.1 / IsaacLab v2.3.0 的独立 Python 3.11 子进程后端,当前只接入 g1_walk_flat 的 PPO/SAC owner,矩阵标记为 Configured。仓库没有把 bounded headless physics smoke 和 mock rendering protocol 覆盖提升为训练或 playback 的 Tested 证据。eval 已接入 Kit viewer 与 IsaacLab RGB camera;当前真实主机在 RTX renderer 初始化阶段崩溃,因此没有成功 playback 证据,也不会生成占位视频。contact-force sensor 和 domain randomization 仍保持 fail-closed。
未检测到与这些组合绑定的已提交 benchmark manifest,因此当前不会自动提升到 Benchmarked。
仓库中目前也没有单独的 recommendation 元数据,因此当前不会自动提升到 Recommended。
Entrypoint x Task Owner¶
Entrypoint |
Task owner |
MuJoCo |
mjwarp |
Motrix |
IsaacGym |
Genesis |
IsaacSim |
Newton |
SuperDex |
|---|---|---|---|---|---|---|---|---|---|
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
Configured |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
Tested |
Tested |
Configured |
Configured |
Configured |
Configured |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
- |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
- |
- |
- |
- |
- |
- |
- |
Configured |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Registered |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
PPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
APPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
APPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
Registered |
APPO (torch) |
|
Tested |
Registered |
Registered |
Registered |
Registered |
Registered |
Registered |
- |
APPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
APPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
APPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
APPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
APPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
APPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
APPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
APPO (torch) |
|
Tested |
- |
Registered |
- |
- |
- |
- |
- |
APPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
APPO (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
SAC (torch) |
|
Tested |
Tested |
Tested |
Tested |
Tested |
Configured |
Tested |
- |
SAC (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
SAC (torch) |
|
Tested |
Configured |
Tested |
- |
- |
- |
- |
- |
SAC (torch) |
|
Tested |
- |
Registered |
- |
- |
- |
- |
- |
SAC (torch) |
|
Tested |
- |
Registered |
- |
- |
- |
- |
- |
SAC (torch) |
|
Tested |
- |
Registered |
- |
- |
- |
- |
- |
SAC (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
SAC (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
SAC (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
SAC (torch) |
|
Tested |
- |
Registered |
- |
- |
- |
- |
- |
SAC (torch) |
|
Tested |
- |
Registered |
- |
- |
- |
- |
- |
SAC (torch) |
|
Tested |
- |
Registered |
- |
- |
- |
- |
- |
TD3 (torch) |
|
Registered |
- |
Tested |
- |
- |
- |
- |
- |
TD3 (torch) |
|
Registered |
- |
Tested |
- |
- |
- |
- |
Registered |
TD3 (torch) |
|
Tested |
Registered |
Registered |
Registered |
Registered |
Registered |
Registered |
- |
TD3 (torch) |
|
Tested |
- |
Registered |
- |
- |
- |
- |
- |
FlashSAC (torch) |
|
Tested |
- |
Registered |
- |
- |
- |
- |
Registered |
FlashSAC (torch) |
|
Tested |
Configured |
Tested |
Registered |
Registered |
Registered |
Registered |
- |
FlashSAC (torch) |
|
Tested |
- |
Tested |
- |
- |
- |
- |
- |
Source Index¶
Registry bootstrap:
src/unilab/envs/**decorators viaunilab.base.registry.ensure_registries().Owner YAML scan:
src/unilab/conf/ppo/task/**,src/unilab/conf/appo/task/**,src/unilab/conf/sac/task/**,src/unilab/conf/td3/task/**,src/unilab/conf/flashsac/task/**.Generic compose coverage:
tests/config/test_config_system.py::test_supported_task_composes.SuperDex remains
Configured: FR3 has optional CPU rollout/spawn coverage intests/envs/test_fr3_superdex.py; the Go2 research profile has policy-contract/rollout/checkpoint coverage intests/envs/test_go2_superdex.py. Neither profile claims full-training performance or cross-platform support.Validated mjwarp entrypoints are explicitly recorded in
_MAINTAINER_VALIDATED_MJWARP_ENTRYPOINT_TASKS; near-risk coverage lives intests/base/test_mjwarp_backend.py,tests/base/test_backend_conformance.py,tests/base/test_mjwarp_differential.py, andtests/base/test_mjwarp_playback.py.Validated isaacgym entrypoints are explicitly recorded in
_MAINTAINER_VALIDATED_ISAACGYM_ENTRYPOINT_TASKS(real hardware via the external Python 3.8 worker runtime; not covered by repo CI).Validated genesis entrypoints are explicitly recorded in
_MAINTAINER_VALIDATED_GENESIS_ENTRYPOINT_TASKS(real hardware, genesis-world extra + CUDA; not covered by repo CI); near-risk coverage lives intests/base/test_genesis_backend.py(fake runtime),tests/base/test_genesis_runtime.py(real-runtime slow lane), and the genesis env smoke intests/envs/locomotion/g1/test_g1_owner_contract.py.IsaacSim owner scope is intentionally not promoted to
Tested;_MAINTAINER_VALIDATED_ISAACSIM_ENTRYPOINT_TASKSis empty until a maintainer records full training evidence. Rendering protocol coverage lives intests/base/test_isaacsim_backend.py; it is not a substitute for successful real playback.newtonis an optional owner backed by Newton 1.5.1 and the MuJoCo-Warp 3.11 / Warp 1.16 line, which it shares with themujoco/mjwarpextras (jointly installable in one environment). Validated newton entrypoints are explicitly recorded in_MAINTAINER_VALIDATED_NEWTON_ENTRYPOINT_TASKS(real hardware, newton extra + CUDA; not covered by repo CI); remaining cells rely on the G1 PPO/SAC owner configs, compose/contract checks, and fail-closed runtime/import boundaries. Native ViewerGL playback (offscreen record + interactive) is included in thenewtonextra and is the default renderer; an incomplete installation falls back to the MuJoCo snapshot renderer for record and stays fail-closed for interactive playback.