Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 11 additions & 6 deletions docs/sphinx/source/en/2-user_guide/3-backends/0-index.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Simulation Backends

The tensor-only Manager runtime currently exposes `mujoco`, `mjwarp`, `genesis`,
`newton`, `motrix`, and the scoped Drake owner described below. User commands
select one with `--sim`, which routes to the matching task owner YAML; do not
switch a run by overriding `training.sim_backend` alone.
`newton`, `motrix`, `superdex`, and the scoped Drake owner described below.
User commands select one with `--sim`, which routes to the matching task owner
YAML; do not switch a run by overriding `training.sim_backend` alone.

The `isaacgym`, `isaacsim`, and `superdex` adapters remain temporarily shelved
The `isaacgym` and `isaacsim` adapters remain temporarily shelved
by `unisim-core` during issue #1811. Their historical pages are retained for
adapter context only and are not production support claims. The train/eval CLI
rejects these names until new capability, parity, and support-matrix evidence is
Expand All @@ -24,6 +24,9 @@ provided.
- Motrix requires the `motrix` extra and provides a CPU-authoritative packed
HOST_BRIDGE; the current canonical support scope is SAC `g1_walk_flat` and
FlashSAC `g1_motion_tracking`.
- SuperDex requires the `superdex` extra on CPython 3.12/3.13 Linux x86_64 and
provides a CPU-authoritative packed HOST_BRIDGE; the current scope is the
configured Go2 and FR3 research owners.
- Drake requires the locally built DrakeUni batch extension. Its scoped PPO
`go2_joystick_flat` owner uses CPU physics and the packed HOST_BRIDGE
lifecycle; floating-root and reset-randomization events remain disabled until
Expand All @@ -38,6 +41,7 @@ provided.
| Genesis | Linux x86_64 | Required: NVIDIA GPU and driver; only the `gs.gpu` channel is validated |
| Newton | Linux | Required: NVIDIA CUDA; the selected-reset lane is device-resident |
| Motrix | Linux / macOS / Windows | CPU-authoritative physics; Torch CUDA buffers are optional |
| SuperDex | Linux x86_64 (CPython 3.12/3.13) | CPU-authoritative physics; Torch CUDA buffers are optional |
| Drake | Linux x86_64 / Apple Silicon macOS | CPU-authoritative physics; Torch CUDA buffers are optional |

Backend device requirements are independent of the learner device: MuJoCo can
Expand All @@ -57,7 +61,7 @@ the algorithm in `--algo`, not in `--task`.
| Default path or broadest owner coverage | MuJoCo |
| MuJoCo-only tools such as `scripts/play_viser.py` | MuJoCo |
| Device-resident tensor owner | MJWarp, Genesis, or Newton, when the task support matrix marks the combination supported |
| CPU-authoritative packed HOST_BRIDGE | Motrix |
| CPU-authoritative packed HOST_BRIDGE | Motrix; SuperDex or scoped Drake for their configured research owners |

The support matrix is generated from registry, owner YAML, and tests; use it as
the current evidence source: {doc}`../../5-reference/5-support_matrix`.
Expand Down Expand Up @@ -110,7 +114,7 @@ uv run python -c "import unisim; print(unisim.ADAPTER_SPECS)"
```

`unisim` has no dependency on UniLab, Hydra, or training components. The scoped
MuJoCo, MJWarp, Genesis, Newton, and Motrix adapters and the temporarily
MuJoCo, MJWarp, Genesis, Newton, Motrix, and SuperDex adapters and the temporarily
shelved adapters use one public contract. Missing proprietary SDKs or GPU
workers produce an explicit cold-path diagnostic; no backend silently falls
back to another engine.
Expand All @@ -122,4 +126,5 @@ back to another engine.
5-genesis
7-newton
2-motrix
8-superdex
```
8 changes: 5 additions & 3 deletions docs/sphinx/source/en/2-user_guide/3-backends/8-superdex.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
# SuperDex Backend

> **SuperDex is temporarily shelved.** This adapter is outside the tensor-only Manager runtime during #1811 and is not a production support claim. The train/eval CLI rejects it until new capability, parity, and support-matrix evidence is provided.
> SuperDex participates in the tensor-only Manager runtime as a packed CPU
> `HOST_BRIDGE` backend. Its Go2 and FR3 owners remain **Configured** research
> profiles, not full-training or cross-platform production claims.


SuperDex is an optional CPU physics adapter owned by `unisim.backend.superdex`.
The initial UniLab owner is the fixed-base `FR3JointTarget` task:
`src/unilab/conf/ppo/task/fr3_joint_target/superdex.yaml`. It uses seven torque
actions, 21 observation values, joint-state resets and the standard NumPy
manager runtime. Its support level is **Configured**; bounded rollout or short
actions, 21 observation values, selected tensor joint-state resets, and
`TorchEnv`. Its support level is **Configured**; bounded rollout or short
training checks do not establish full-training performance or platform support.
The implementation is tracked in [#1534](https://github.com/Motphys/UniLab/issues/1534)
under [roadmap #1533](https://github.com/Motphys/UniLab/issues/1533).
Expand Down
46 changes: 24 additions & 22 deletions docs/sphinx/source/en/5-reference/5-support_matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,32 +79,34 @@ This table is derived from UniSim's SDK-free public static inventory. It describ
| `drake` | Host bridge / in-process / host bridge | CPU / CUDA | Required only when the learner requests CUDA state/control buffers | Supported: CPU-authoritative physics with optional CUDA Torch buffers | CPU-authoritative host bridge only; no CUDA physics claim | CPU-authoritative host bridge only; no ROCm CUDA-only fallback | In-process; no external Python worker | Unsupported | Unsupported | Unsupported | Exact |
| `mjwarp` | Device-resident / in-process / direct | CUDA | Required for the entire tensor lifecycle | Supported: Linux CUDA only | Unsupported; no CPU, MPS, or ROCm fallback | Unsupported; no CPU, MPS, or ROCm fallback | In-process; no external Python worker | Unsupported | Unsupported | Unsupported | Unsupported |
| `newton` | Device-resident / in-process / direct | CUDA | Required for the entire tensor lifecycle | Supported: Linux CUDA only | Unsupported; no CPU, MPS, or ROCm fallback | Unsupported; no CPU, MPS, or ROCm fallback | In-process; no external Python worker | Unsupported | Unsupported | Unsupported | Unsupported |
| `superdex` | Host bridge / in-process / host bridge | CPU / CUDA | Required only when the learner requests CUDA state/control buffers | Supported: CPU-authoritative physics with optional CUDA Torch buffers | CPU-authoritative host bridge only; no CUDA physics claim | CPU-authoritative host bridge only; no ROCm CUDA-only fallback | In-process; no external Python worker | Unsupported | Unsupported | Unsupported | Exact |
| `genesis` | Device-resident / in-process / direct | CUDA | Required for the entire tensor lifecycle | Supported: Linux CUDA only | Unsupported; no CPU, MPS, or ROCm fallback | Unsupported; no CPU, MPS, or ROCm fallback | In-process; no external Python worker | Unsupported | Unsupported | Unsupported | Unsupported |

### Entrypoint x Task Owner

| Entrypoint | Task owner | MuJoCo | Motrix | Drake | mjwarp | Newton | Genesis |
|------------|------------|---|---|---|---|---|---|
| PPO (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | - | Configured | - | - | - |
| PPO (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Tested | Registered | Configured |
| PPO (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | - | - | - | - | - |
| PPO (torch) | `x2_wall_flip_tracking` (X2 wall flip tracking) | Tested | - | - | - | - | - |
| PPO (torch) | `allegro_inhand` (Allegro in-hand) | Tested | - | - | - | - | - |
| PPO (torch) | `allegro_inhand_grasp` (allegro inhand grasp) | Tested | - | - | - | - | - |
| PPO (torch) | `g1_box_tracking` (g1 box tracking) | Tested | - | - | - | - | - |
| PPO (torch) | `stewart_balance` (stewart balance) | Tested | - | - | - | - | - |
| APPO (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | - | Registered | - | - | - |
| APPO (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Registered | Registered | Registered |
| APPO (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | - | - | - | - | - |
| APPO (torch) | `allegro_inhand` (Allegro in-hand) | Tested | - | - | - | - | - |
| SAC (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Tested | - | Tested | Tested | Tested |
| SAC (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Registered | - | Configured | Registered | Configured |
| SAC (torch) | `g1_wbt_obs` (g1 wbt obs) | Tested | - | - | - | - | - |
| FlashSAC (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | - | Registered | - | - | - |
| FlashSAC (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Configured | Registered | Registered |
| FlashSAC (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Tested | - | Configured | Configured | Configured |
| WarpSAC (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Tested | Registered | Registered |
| WarpSAC (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Registered | - | Tested | Registered | Registered |
| Entrypoint | Task owner | MuJoCo | Motrix | Drake | mjwarp | Newton | SuperDex | Genesis |
|------------|------------|---|---|---|---|---|---|---|
| PPO (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | - | Configured | - | - | Configured | - |
| PPO (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Tested | Registered | - | Configured |
| PPO (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | - | - | - | - | - | - |
| PPO (torch) | `x2_wall_flip_tracking` (X2 wall flip tracking) | Tested | - | - | - | - | - | - |
| PPO (torch) | `allegro_inhand` (Allegro in-hand) | Tested | - | - | - | - | - | - |
| PPO (torch) | `allegro_inhand_grasp` (allegro inhand grasp) | Tested | - | - | - | - | - | - |
| PPO (torch) | `fr3_joint_target` (fr3 joint target) | - | - | - | - | - | Configured | - |
| PPO (torch) | `g1_box_tracking` (g1 box tracking) | Tested | - | - | - | - | - | - |
| PPO (torch) | `stewart_balance` (stewart balance) | Tested | - | - | - | - | - | - |
| APPO (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | - | Registered | - | - | Registered | - |
| APPO (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Registered | Registered | - | Registered |
| APPO (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | - | - | - | - | - | - |
| APPO (torch) | `allegro_inhand` (Allegro in-hand) | Tested | - | - | - | - | - | - |
| SAC (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Tested | - | Tested | Tested | - | Tested |
| SAC (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Registered | - | Configured | Registered | - | Configured |
| SAC (torch) | `g1_wbt_obs` (g1 wbt obs) | Tested | - | - | - | - | - | - |
| FlashSAC (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | - | Registered | - | - | Registered | - |
| FlashSAC (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Configured | Registered | - | Registered |
| FlashSAC (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Tested | - | Configured | Configured | - | Configured |
| WarpSAC (torch) | `g1_walk_flat` (G1 walk flat) | Tested | Registered | - | Tested | Registered | - | Registered |
| WarpSAC (torch) | `g1_motion_tracking` (G1 motion tracking) | Tested | Registered | - | Tested | Registered | - | Registered |

### Source Index

Expand Down
15 changes: 10 additions & 5 deletions docs/sphinx/source/zh_CN/2-user_guide/3-backends/0-index.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# 仿真后端

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

`isaacgym`、`isaacsim` 与 `superdex` 适配器在 issue #1811 期间由
`isaacgym` 与 `isaacsim` 适配器在 issue #1811 期间由
`unisim-core` 暂时搁置。历史页面仅用于 adapter 背景,不构成生产支持声明。
在提供新的 capability、parity 与支持矩阵证据之前,train/eval CLI 会直接
拒绝这些后端。
Expand All @@ -21,6 +21,9 @@
为 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 与 FR3 configured
research owner。
- Drake 需要本地编译的 DrakeUni batch extension。其 scoped PPO
`go2_joystick_flat` owner 使用 CPU physics 与 packed HOST_BRIDGE
lifecycle;在 backend contract 补齐前,浮动根重置与 reset randomization
Expand All @@ -35,6 +38,7 @@
| 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 可选 |

后端设备要求与 learner 设备独立:MuJoCo 仍可以让 learner 使用 CUDA、ROCm、MPS
Expand All @@ -52,7 +56,7 @@ UniLab 通过 task owner config 选择仿真后端。常规用法通过 `--task`
| 默认路径或 owner 覆盖最广 | MuJoCo |
| `scripts/play_viser.py` 等 MuJoCo 专属工具 | MuJoCo |
| Device-resident tensor owner | MJWarp、Genesis 或 Newton,且支持矩阵标记该组合为 supported |
| CPU-authoritative packed HOST_BRIDGE | Motrix |
| CPU-authoritative packed HOST_BRIDGE | Motrix;SuperDex 或 scoped Drake 的 configured research owner |

支持矩阵由 registry、owner YAML 与测试生成;当前证据源见
{doc}`../../5-reference/5-support_matrix`。
Expand Down Expand Up @@ -104,7 +108,7 @@ uv run python -c "import unisim; print(unisim.ADAPTER_SPECS)"
```

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

Expand All @@ -115,4 +119,5 @@ cold-path diagnostic;不会静默切换到另一个引擎。
5-genesis
7-newton
2-motrix
8-superdex
```
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# SuperDex 后端

> **SuperDex 暂时搁置。** 该适配器在 #1811 期间不属于 tensor-only Manager runtime,也不构成生产支持声明。在提供新的 capability、parity 与支持矩阵证据之前,train/eval CLI 会直接拒绝该后端。
> SuperDex 已作为 packed CPU `HOST_BRIDGE` 后端加入 tensor-only Manager
> runtime。Go2 与 FR3 owner 仍是 **Configured** 研究配置,不构成完整训练或
> 跨平台生产支持声明。


SuperDex 是由 `unisim.backend.superdex` 拥有的可选 CPU 物理后端。UniLab 首个
owner 为固定基 `FR3JointTarget`,配置位于
`src/unilab/conf/ppo/task/fr3_joint_target/superdex.yaml`。任务使用 7 维力矩动作、
21 维观测、关节状态 reset 和标准 NumPy manager。当前支持等级为 **Configured**;
21 维观测、selected tensor 关节 reset 和 `TorchEnv`。当前支持等级为 **Configured**;
短 rollout 或少量训练迭代不能证明完整训练效果、性能或跨平台支持。
实施见 [#1534](https://github.com/Motphys/UniLab/issues/1534),所属
roadmap 为 [#1533](https://github.com/Motphys/UniLab/issues/1533)。
Expand Down
Loading