unilabsim/UniLab
GitHub: unilabsim/UniLab
UniLab 是一种用于机器人强化学习的异构训练架构,通过 CPU 物理仿真与 GPU 策略学习的分离式设计,突破了传统 GPU 主导的训练范式。
Stars: 741 | Forks: 71
UniLab
一种用于超越 GPU 主导范式的机器人 RL 异构架构
语言:English | 简体中文
无需 GPU 仿真后端即可训练机器人 RL。演示动画使用 MotrixSim 渲染。
从下方的 `Quick Demo` 开始运行主要的训练命令。推荐设置使用 `uv`;Conda 和 pip 用户目前仍应遵循 `uv` 工作流。特定平台的说明和当前限制详见[安装指南](https://unilabsim.github.io/UniLab-doc/en/1-getting_started/2-installation.html)。
## ✨ 特性
```
┌───────────────────┐ ┌─────────────────────────┐
│ CPU Physics Sim │ Unified Shared Memory │ GPU Policy Training │
│ MuJoCo/Motrix │ ─────────────────────────▶ │ PPO / SAC / TD3 │
│ Multithread Step │ SharedReplayBuffer │ CUDA / MPS / ROCm / XPU │
└───────────────────┘ └─────────────────────────┘
```
- **异构 RL runtime:** CPU 并行仿真通过共享内存传输状态转换,同时策略学习在 GPU 加速器上运行。
- **双物理后端:** MuJoCoUni 和 MotrixSim 通过特定后端的适配器和任务所有者 config 进行集成。
- **统一训练 CLI:** `uv run train` 和 `uv run eval` 支持 PPO、MLX PPO、APPO、SAC、TD3 和 FlashSAC;额外的 HORA 和 HIM-PPO 路径作为脚本级工作流记录在文档中。
- **Config 驱动的任务:** Hydra 所有者 YAML 文件可同时选择任务、奖励、后端和算法设置;后端切换表示为 `task=
/`。
- **跨平台设置路径:** 本仓库支持 Linux CUDA、Linux ROCm、Linux XPU 以及 Apple Silicon / macOS 的设置流程。
## 🚀 快速演示
dance G1 motion tracking
|
wallflip G1 wall flip
|
teaser MotrixSim teaser
|
boxtracking G1 box tracking
|
inhandgrasp Sharpa in-hand
|
locomani Go2 loco-manipulation
|
```
# 0. 如果 uv 未安装
curl -LsSf https://astral.sh/uv/install.sh | sh
# 1. Clone the repository
git clone https://github.com/unilabsim/UniLab.git
cd UniLab
# 2. Install dependencies
# 根据您的平台选择相应的 setup 命令。
# Linux CUDA 或 macOS
make setup-motrix
# 不包含 shell completion 设置:uv sync --extra motrix
# 如果未安装 `make`:uv sync --extra motrix && uv run --no-sync unilab-complete install
# Linux AMD / ROCm
# make sync-rocm
# Linux Intel Arc / iGPU
# make sync-xpu
# 3. Pre-trained checkpoint 回放(首次运行时从 Hugging Face 下载)
uv run demo dance
```
可用的演示名称:`teaser`、`dance`、`wallflip`、`boxtracking`、`locomani`、`inhandgrasp`。完整列表和标志请参见[统一 CLI](https://unilabsim.github.io/UniLab-doc/en/2-user_guide/1-training/1-cli_reference.html) 页面。
用于训练和评估:
```
uv run train --algo appo --task go2_joystick_flat --sim motrix
uv run eval --algo appo --task go2_joystick_flat --sim motrix --load-run -1
# 用于 Linux/服务器运行的 Headless Motrix 视频导出
uv run eval --algo appo --task go2_joystick_flat --sim motrix --load-run -1 --render-mode record
```
这会路由到 `go2_joystick_flat/motrix` 任务所有者 config,并保持后端选择明确。
在 macOS / MacBook 上,UniLab CLI 会在需要时通过 `mxpython` 路由 Motrix 交互式回放。Motrix 默认为交互式回放;使用 `--render-mode record` 进行无头视频导出,或使用 `--render-mode none` 跳过回放。详细的脚本级命令请参见[训练指南](https://unilabsim.github.io/UniLab-doc/en/2-user_guide/1-training/0-index.html)。
## 🏃 示例运行
```
uv run train --algo sac --task g1_walk_flat --sim mujoco
```
```
uv run train --algo sac --task g1_motion_tracking --sim motrix
```
```
uv run train --algo appo --task sharpa_inhand --sim mujoco --profile hora
```
```
uv run train --algo ppo --task go2_arm_manip_loco --sim motrix
uv run eval --algo ppo --task go2_arm_manip_loco --sim motrix --load-run -1
```
使用 `uv run train` 进行训练,`uv run eval` 进行 checkpoint 回放,以及 `uv run demo` 运行本地演示预设。这些命令使算法、任务和后端的选择保持明确。
更多训练命令、脚本级入口、算法矩阵、恢复流程和 W&B 详情请参见[训练指南](https://unilabsim.github.io/UniLab-doc/en/2-user_guide/1-training/0-index.html)。
## 📚 文档
请使用已发布的 [UniLab 文档](https://unilabsim.github.io/UniLab-doc/);从[英文文档索引](https://unilabsim.github.io/UniLab-doc/en/0-index.html)开始。高价值入口:
- [入门指南](https://unilabsim.github.io/UniLab-doc/en/1-getting_started/0-index.html):安装、Docker runtime、依赖项设置和首次运行命令
- [训练指南](https://unilabsim.github.io/UniLab-doc/en/2-user_guide/1-training/0-index.html):训练、回放、恢复流程、Hydra 覆盖和 W&B
- [仿真后端](https://unilabsim.github.io/UniLab-doc/en/2-user_guide/3-backends/0-index.html):生成的 MuJoCo / Motrix 支持矩阵
- [开发标准](https://unilabsim.github.io/UniLab-doc/en/4-developer_guide/0-index.html):契约、分层和验证边界
- [ADR 索引](https://unilabsim.github.io/UniLab-doc/adr/ADR-0000-index.html):已采纳的架构决策
## 🧾 引用
### UniLab
```
@article{jia2026unilab,
title = {UniLab: A Heterogeneous Architecture for Robot RL Beyond GPU-Dominant Paradigms},
author = {Yufei Jia and Zhanxiang Cao and Mingrui Yu and Heng Zhang and Shenyu Chen and Dixuan Jiang and Meng Li and Xiaofan Li and Yiyang Liu and Junzhe Wu and Zheng Li and XiLin Fang and Tingyu Cui and Shengcheng Fu and Haoyang Li and Anqi Wang and Zifan Wang and Dongjie Zhu and Chenyu Cao and Zhenbiao Huang and Ziang Zheng and Jie Lu and Xin Ma and Zhengyang Wei and Xiang Zhao and Tianyue Zhan and Ye He and Yuxiang Chen and Yizhou Jiang and Yue Li and Haizhou Ge and Yuhang Dong and Fan Jia and Ziheng Zhang and Meng Zhang and Xiwa Deng and Zhixing Chen and Hanyang Shao and Chenxin Dong and Yixuan Li and Yizhi Chen and Bokui Chen and Kaifeng Zhang and Hanqing Cui and Yusen Qin and Ruqi Huang and Lei Han and Tiancai Wang and Xiang Li and Yue Gao and Guyue Zhou},
journal = {arXiv preprint arXiv:2605.30313},
year = {2026},
url = {https://arxiv.org/abs/2605.30313}
}
```
### 物理后端
```
@article{jia2026mujocouni,
title = {MuJoCoUni: Persistent Batched Runtime Primitives for MuJoCo},
author = {Jia, Yufei and Wu, Junzhe},
journal = {arXiv preprint arXiv:2605.24922},
year = {2026}
}
@software{motrixsim2026,
title = {MotrixSim: A Physics Simulation Engine for Robotics and Embodied AI},
author = {{Motphys Team}},
year = {2026},
url = {https://motrixsim.readthedocs.io/},
note = {Python binary package}
}
```
标签:Apex, Vectored Exception Handling, 异构架构, 强化学习, 机器人, 机器学习, 物理仿真, 请求拦截, 逆向工具