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
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,7 @@ clean:
find src/unilab/assets/caches -type f ! -name '.gitkeep' -delete 2>/dev/null || true
find src/unilab/assets/checkpoints -type f ! -name '.gitkeep' -delete 2>/dev/null || true
find src/unilab/assets/scenes -type f ! -name '.gitkeep' -delete 2>/dev/null || true

.PHONY: setup-drake
setup-drake:
uv run --no-sync bash scripts/tools/setup_drake_env.sh --download-drake
16 changes: 9 additions & 7 deletions docs/sphinx/source/en/1-getting_started/2-installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,9 @@ is unreachable.

## Backend Extras

The tensor-only Manager runtime currently exposes five production backends:
`mujoco`, `mjwarp`, `genesis`, `newton`, and `motrix`. Their simulator
dependencies are optional.
The tensor-only Manager runtime currently exposes five production backends
(`mujoco`, `mjwarp`, `genesis`, `newton`, and `motrix`) plus the scoped Drake
owner. Their simulator dependencies are optional.

```bash
# All scoped backends together.
Expand All @@ -136,11 +136,12 @@ uv sync --extra mujoco --extra mjwarp --extra genesis --extra newton --extra mot
| Genesis | `uv sync --extra genesis` | The validated path uses Linux x86_64, an NVIDIA GPU, and the pinned torch/Genesis versions |
| Newton | `uv sync --extra newton` | Linux CUDA with the pinned newton / MuJoCo-Warp / Warp versions |
| Motrix | `uv sync --extra motrix` | CPU-authoritative MotrixSim with packed Torch HOST_BRIDGE transfers |
| Drake | `make setup-drake` | Local Drake C++ prefix plus the DrakeUni native batch extension; currently scoped to PPO `go2_joystick_flat` |

The `drake`, `isaacgym`, `isaacsim`, and `superdex` adapters remain temporarily
shelved by `unisim-core` during issue #1811. Their extras and historical backend
pages are not production support claims and the UniLab train/eval CLI rejects
them until new capability, parity, and support-matrix evidence is provided.
The `isaacgym`, `isaacsim`, and `superdex` adapters remain temporarily shelved
by `unisim-core` during issue #1811. Their extras and historical backend pages
are not production support claims and the UniLab train/eval CLI rejects them
until new capability, parity, and support-matrix evidence is provided.

Read the scoped backend pages for runtime variables, renderer requirements, and
verification commands:
Expand All @@ -150,6 +151,7 @@ verification commands:
- {doc}`Genesis <../2-user_guide/3-backends/5-genesis>`
- {doc}`Newton <../2-user_guide/3-backends/7-newton>`
- {doc}`Motrix <../2-user_guide/3-backends/2-motrix>`
- {doc}`Drake <../2-user_guide/3-backends/6-drake>`

## Algorithm Extras

Expand Down
21 changes: 13 additions & 8 deletions docs/sphinx/source/en/2-user_guide/3-backends/0-index.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# Simulation Backends

The tensor-only Manager runtime currently exposes `mujoco`, `mjwarp`, `genesis`,
`newton`, and `motrix`. 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`, 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 `drake`, `isaacgym`, `isaacsim`, and `superdex` 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 provided.
The `isaacgym`, `isaacsim`, and `superdex` 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
provided.

## Runtime Prerequisites

Expand All @@ -24,6 +24,10 @@ evidence is 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`.
- 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
the backend contract supports them.

## OS and GPU Support

Expand All @@ -34,6 +38,7 @@ evidence is 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 |
| 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
still train with its learner on CUDA, ROCm, MPS, or XPU. See the platform
Expand Down
11 changes: 7 additions & 4 deletions docs/sphinx/source/en/2-user_guide/3-backends/6-drake.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Drake Backend

> **Drake 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.
> **Scoped runtime support.** Drake currently has one Manager-runtime owner:
> PPO `go2_joystick_flat`. The page is not a broader production support claim.
> Task support remains governed by the generated support matrix.


Drake is an experimental CPU batch backend. UniLab still owns the task,
Expand Down Expand Up @@ -95,9 +97,10 @@ uv run train --algo ppo --task go2_joystick_flat --sim drake
```

This uses the Drake owner configuration (`1024` environments, `151` iterations,
and CPU training because Drake exposes float64 NumPy buffers). The Drake owner
also uses the scene keyframe reset; floating-root randomization is not exposed
by the current backend contract.
and CPU training because Drake exposes a CPU-authoritative packed host bridge).
The Drake owner uses the scene default/keyframe reset. Floating-root
randomization and PD reset randomization are not exposed by the current backend
contract.

On Apple Silicon macOS, this command completed all 151 iterations locally
(Drake 1.56.0, Python 3.13, 1024 environments) in about 254 seconds.
Expand Down
57 changes: 30 additions & 27 deletions docs/sphinx/source/en/5-reference/5-support_matrix.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ support beyond the evidence grade shown below.
## Backend Selection Rules

- The tensor-only Manager runtime currently supports `mujoco`, `mjwarp`,
`genesis`, `newton`, and `motrix`.
`genesis`, `newton`, `motrix`, and the scoped Drake owner below.
- The default backend is `mujoco`.
- `--sim mjwarp` requires the `mjwarp` extra. Validated combinations are shown
in the generated matrix below; all other entrypoints retain their matrix
Expand All @@ -19,12 +19,14 @@ support beyond the evidence grade shown below.
are shown in the generated matrix.
- `--sim motrix` requires the `motrix` extra; the CPU-authoritative packed
HOST_BRIDGE profile is shown in the generated matrix.
- `--sim drake` requires the local Drake extra and DrakeUni batch extension.
Its current scoped support claim is PPO `go2_joystick_flat` only.
- `--algo`, `--task`, and `--sim` jointly select the owner YAML.
- Do not treat `training.sim_backend` as a standalone backend switch.
- `drake`, `isaacgym`, `isaacsim`, and `superdex` are temporarily outside this
runtime scope. Their adapters remain in UniSim, but they are not UniLab
production support claims; re-enabling requires capability, parity, and
support-matrix evidence (#1811).
- `isaacgym`, `isaacsim`, and `superdex` are temporarily outside this runtime
scope. Their adapters remain in UniSim, but they are not UniLab production
support claims; re-enabling requires capability, parity, and support-matrix
evidence (#1811).

## Playback Differences

Expand Down Expand Up @@ -74,34 +76,35 @@ This table is derived from UniSim's SDK-free public static inventory. It describ
|---|---|---|---|---|---|---|---|---|---|---|---|
| `mujoco` | 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 | unknown | unknown | Unsupported | Exact |
| `motrix` | 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 |
| `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 |
| `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 | mjwarp | Newton | Genesis |
|------------|------------|---|---|---|---|---|
| PPO (torch) | `go2_joystick_flat` (Go2 joystick) | Tested | - | - | - | - |
| 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 | - | - | - | - |
| 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 | - | - | - | - |
| 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 | 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 |

### Source Index

Expand Down
9 changes: 6 additions & 3 deletions docs/sphinx/source/zh_CN/1-getting_started/2-installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,9 @@ Hugging Face endpoint 无法访问时,可设置 `HF_ENDPOINT=https://hf-mirror

## 后端 Extras

当前 tensor-only Manager runtime 暴露五个生产后端:`mujoco`、`mjwarp`、
`genesis`、`newton`、`motrix`。各自的仿真依赖均为可选。
当前 tensor-only Manager runtime 暴露五个生产后端(`mujoco`、`mjwarp`、
`genesis`、`newton`、`motrix`),另有一个 scoped Drake owner。各自的仿真依赖
均为可选。

```bash
# 一次安装全部 scoped 后端。
Expand All @@ -123,8 +124,9 @@ uv sync --extra mujoco --extra mjwarp --extra genesis --extra newton --extra mot
| Genesis | `uv sync --extra genesis` | 已验证路径使用 Linux x86_64、NVIDIA GPU 及固定版本 torch/Genesis |
| Newton | `uv sync --extra newton` | Linux CUDA,并钉定 newton / MuJoCo-Warp / Warp 版本 |
| Motrix | `uv sync --extra motrix` | CPU-authoritative MotrixSim 与 packed Torch HOST_BRIDGE 传输 |
| Drake | `make setup-drake` | 本地 Drake C++ 前缀与 DrakeUni native batch extension;当前 scoped 到 PPO `go2_joystick_flat` |

`drake`、`isaacgym`、`isaacsim` 与 `superdex` 适配器在 issue #1811 期间由
`isaacgym`、`isaacsim` 与 `superdex` 适配器在 issue #1811 期间由
`unisim-core` 暂时搁置。它们的 extras 和历史后端页面不构成生产支持声明;
在提供新的 capability、parity 与支持矩阵证据之前,UniLab train/eval CLI
会直接拒绝这些后端。
Expand All @@ -136,6 +138,7 @@ runtime 变量、渲染器要求和验证命令见 scoped 后端页面:
- {doc}`Genesis <../2-user_guide/3-backends/5-genesis>`
- {doc}`Newton <../2-user_guide/3-backends/7-newton>`
- {doc}`Motrix <../2-user_guide/3-backends/2-motrix>`
- {doc}`Drake <../2-user_guide/3-backends/6-drake>`

## 算法 Extras

Expand Down
12 changes: 9 additions & 3 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,10 +1,11 @@
# 仿真后端

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

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

## OS 与 GPU 支持

Expand All @@ -30,6 +35,7 @@ YAML;不要单独覆盖 `training.sim_backend`。
| 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 可选 |
| Drake | Linux x86_64 / Apple Silicon macOS | CPU-authoritative physics;Torch CUDA buffer 可选 |

后端设备要求与 learner 设备独立:MuJoCo 仍可以让 learner 使用 CUDA、ROCm、MPS
或 XPU。平台配置见 {doc}`../../1-getting_started/2-installation`。
Expand Down
9 changes: 6 additions & 3 deletions docs/sphinx/source/zh_CN/2-user_guide/3-backends/6-drake.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
# Drake 后端

> **Drake 暂时搁置。** 该适配器在 #1811 期间不属于 tensor-only Manager runtime,也不构成生产支持声明。在提供新的 capability、parity 与支持矩阵证据之前,train/eval CLI 会直接拒绝该后端。
> **Scoped runtime 支持。** Drake 当前只有一个 Manager-runtime owner:PPO
> `go2_joystick_flat`。本页不构成更广泛的生产支持声明;任务支持范围以生成的
> 支持矩阵为准。


Drake 是实验性的 CPU 批量物理后端;task、reward、observation 和训练循环仍由
Expand Down Expand Up @@ -89,8 +91,9 @@ uv run train --algo ppo --task go2_joystick_flat --sim drake
```

该命令使用 Drake owner 配置中的 1024 个环境、151 次迭代,并固定使用 CPU 训练
(Drake 暴露的是 float64 NumPy buffer)。Drake owner 使用场景 keyframe 重置;当前
backend contract 尚未提供浮动根状态随机化。只想验证安装时,可临时追加
(Drake 暴露的是 CPU-authoritative packed host bridge)。Drake owner 使用场景默认
/keyframe 重置;当前 backend contract 尚未提供浮动根状态与 PD reset
randomization。只想验证安装时,可临时追加
`algo.max_iterations=1 algo.num_envs=4 algo.num_steps_per_env=4 training.no_play=true
env.drake_nthread=1`;这些不是生产参数。

Expand Down
Loading