安装¶
本页仅涉及依赖配置。训练命令和回放细节请参阅快速上手与算法相关页面。
环境要求¶
Python
>=3.10,<3.14,来自pyproject.toml。uv,用于依赖同步和命令执行。Git 和
curl,用于克隆仓库及下载 runtime asset。使用
mujocoextra 时:MuJoCo 物理后端运行在mjbatch原生 batch 引擎上, 当前从钉住的集成 fork(unilabsim/mjbatch)源码构建。uv 以隔离构建 (scikit-build-core + nanobind)编译该 git 源码,需要 C++17 工具链和 Python 开发头文件;构建绑定mujoco==3.11.0,引擎在 mujoco 版本不一致时 拒绝导入。免编译器的安装路径取决于 fork 的最终分发渠道(预编译 wheel 还是 git 钉版),这是 roadmap 上的待定事项(见「切换本地 MuJoCo 版本」和 「安装错误特征对照表」)。macOS:
xcode-select --installUbuntu / Debian:
sudo apt-get install build-essential python3-devFedora / RHEL:
sudo dnf install gcc-c++ make python3-develWindows:MSVC Build Tools
提示:使用 uv 托管的 Python(
uv python install)自带头文件, 只有系统 Python 才需要额外安装python3-dev。
克隆与同步¶
# Linux / macOS:
curl -LsSf https://astral.sh/uv/install.sh | sh
# Windows PowerShell:
# powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
git clone https://github.com/unilabsim/UniLab.git
cd UniLab
# 推荐的主环境解释器:
uv python install 3.13
UniLab 支持 Python 3.10 到 3.13;主环境推荐使用 3.13。issue #1811
期间,外部 worker 后端不属于 scoped Manager runtime。
选择一条核心安装路径:
# 完整默认环境:MuJoCo 后端,并安装 shell 自动补全。
make setup
make setup 会同步默认环境(MuJoCo 后端与内置 RL 栈)并安装 shell 自动
补全。如果无法使用 make,可运行对应的底层命令:
uv sync --extra mujoco
uv run --no-sync unilab-complete install
conda 与 pip¶
推荐路径是源码仓库内的 make setup(或 uv)工作流。conda 可以作为外层
Python、CUDA 或系统库的隔离环境,但进入环境后仍建议继续使
用本仓库的 make / uv 命令:
conda create -n unilab python=3.13
conda activate unilab
pip install uv
git clone https://github.com/unilabsim/UniLab.git
cd UniLab
make setup
ROCm / XPU 仍走下方专用的 make 路径。
从源码 checkout 使用 pip 时,这是备用路径。请先安装 package,再显式添加所需 runtime:
# 本地开发的 editable install:
pip install -e .
# wheel 风格的常规安装(去掉 -e):
# pip install .
# 需要 MuJoCo 时(解析钉住的 mjbatch 集成 fork,针对 mujoco==3.11.0 构建):
pip install "mujoco~=3.11.0" "mjbatch @ git+https://github.com/unilabsim/mjbatch.git@cf4a83d"
editable install 会指向源码 checkout;常规安装会把 package 和任务配置
(unilab/conf/)复制进环境。两种方式都支持在任意目录运行 train / eval / demo,
日志与 checkpoint 写入当前工作目录。mjbatch 引擎针对钉住的
mujoco==3.11.0 构建;MJWarp、Genesis、平台相关 torch index、ROCm / XPU
profile 请优先使用上面的 uv 路径。机器人 mesh 和纹理不会打进 wheel,而是在 cold path 从
unilabsim/unilab-robots 数据集下载。请确保安装位置可写,或从源码 checkout 使用
uv run unilab-pull-assets 预拉取。
运行时 Asset¶
大型 asset 不打包进 wheel,而是在 cold path(所属功能首次使用时)从 Hugging Face 数据集仓库懒加载:
机器人 asset 可通过 uv run unilab-pull-assets 预拉取。中国大陆用户在默认
Hugging Face endpoint 无法访问时,可设置 HF_ENDPOINT=https://hf-mirror.com。
后端 Extras¶
当前 tensor-only Manager runtime 暴露五个生产后端(mujoco、mjwarp、
genesis、newton、motrix),另有一个 scoped Drake owner。各自的仿真依赖
均为可选。
# 一次安装全部 scoped 后端。
uv sync --extra mujoco --extra mjwarp --extra genesis --extra newton --extra motrix
后端 |
安装路径 |
重要前置条件 |
|---|---|---|
MuJoCo |
|
从源码构建钉住的 |
MJWarp |
|
NVIDIA CUDA;单 GPU 主机默认使用当前 CUDA 设备,多卡拓扑仍需显式配置 |
Genesis |
|
已验证路径使用 Linux x86_64、NVIDIA GPU 及固定版本 torch/Genesis |
Newton |
|
Linux CUDA,并钉定 newton / MuJoCo-Warp / Warp 版本 |
Motrix |
|
CPU-authoritative MotrixSim 与 packed Torch HOST_BRIDGE 传输 |
Drake |
|
本地 Drake C++ 前缀与 DrakeUni native batch extension;当前 scoped 到 PPO |
isaacgym、isaacsim 与 superdex 适配器在 issue #1811 期间由
unisim-core 暂时搁置。它们的 extras 和历史后端页面不构成生产支持声明;
在提供新的 capability、parity 与支持矩阵证据之前,UniLab train/eval CLI
会直接拒绝这些后端。
runtime 变量、渲染器要求和验证命令见 scoped 后端页面:
算法 Extras¶
不再需要任何算法 extra。完整的 RL 栈已内置在 unilab distribution 的
src/unilab/rl/ 中:PPO 直接运行在 rsl-rl-lib 之上,APPO、off-policy
(SAC / FlashSAC)与多卡数据并行 runtime 均随基础安装提供。原
unilab-rl 包已并入本仓库(issue #2372,决策见
ADR-0016 RL Reintegration Into unilab.rl And Single Distribution)。
旧 uni_rl extra 已移除。不要再将其传给 uv sync 或 pip install;
RL 栈已包含在基础发行版中。
如果你的代码直接 import uni_rl,请参见
从 unilab-rl(uni_rl)迁移 中的
uni_rl.* → unilab.rl.* 迁移映射。
切换本地 MuJoCo 版本¶
mujoco extra 声明 mujoco~=3.11.0,mjbatch batch 引擎针对
mujoco==3.11.0 构建:引擎会记录编译时的 mujoco 版本,加载时检测到不一致
会拒绝导入(见「安装错误特征对照表」中的 watchdog 行)。因此切换本地
MuJoCo 版本需要对应版本的 mjbatch 构建,而不是修改 UniLab 配置:
在
pyproject.toml(并同步镜像pyproject.rocm.toml)中提升mujoco边界和mjbatch源码钉版;重新锁定(
uv lock,ROCm lockfile 通过make sync-rocm)并重新同步 (uv sync --extra mujoco)。
fork 的构建在编译期钉住 mujoco==3.11.0,因此隔离构建总是针对匹配的 mujoco
编译。在 fork 的最终分发身份确定之前(PyPI package 还是 git 钉版——roadmap
待定事项),版本提升需要与 fork
维护者协调。
安装错误特征对照表¶
按报错文本反查原因与修复方式。
报错特征 |
触发场景 |
修复 |
|---|---|---|
|
uv 从源码构建 |
uv 托管的 Python( |
|
缺少编译器,无法从钉住的 git 源码构建 |
安装 C++ 工具链(见「环境要求」)后重试 |
|
版本 watchdog:引擎的编译期 mujoco 钉版与已安装的 mujoco 不一致 |
用 |
平台配置档¶
Linux CUDA 和 macOS 使用默认的 pyproject.toml。默认的 Linux torch
wheel 来源是在 pyproject.toml 中配置的 PyTorch cu130 索引。
在 Apple Silicon macOS 上,使用 make setup 安装 MuJoCo 训练路径。MuJoCo 回放
使用官方 MuJoCo wheel 自带的 mjpython application。可用时 Torch 会自动选择 mps device;为保持配置可移植,
没有 CUDA 时,cuda alias 会解析到 MPS。
在 Windows 上,如果没有 GNU make 和 Bash,请使用上面的直接 uv sync 命令。
mjbatch 引擎不提供 Windows wheel(官方的 mujoco.dll 不带 import
library),因此 MuJoCo 物理后端在 Windows 上仍不可用;纯 mujoco
(MJCF 转换、其他后端的回放渲染)仍可安装。如果要使用 Makefile,请另行安装
GNU Make 和 Bash(例如通过 Chocolatey 或 WSL)。
ROCm 和 Intel XPU 有各自显式的 Makefile 目标:
make sync-rocm
make sync-xpu
make sync-rocm 会将 pyproject.rocm.toml 复制为 pyproject.toml 并同步
ROCm 配置档。make sync-xpu 会同步 scoped 后端依赖但不安装默认的 torch 包,然后通过 uv pip 安装 XPU 版本的 torch wheel。
ROCm 说明:
make sync-rocm要求 ROCm>= 7.1,并按仓库的 ROCm 依赖文件安装对应的 PyTorch wheel。它会把
pyproject.rocm.toml/uv.rocm.lock激活为当前的pyproject.toml/uv.lock,因此之后可以直接运行裸uv run ...。切回默认 CUDA / macOS 配置档时,运行
git restore -- pyproject.toml uv.lock,然 后重新执行make setup;提交任何非 ROCm 依赖改动前先确认当前配置档。训练配置里的设备字段仍沿用
cuda语义,不要改成rocm。如果手工安装了 ROCm wheel,但项目仍使用默认依赖配置档,验证时使用
uv run --no-sync(或UV_NO_SYNC=1 make ...);自动同步会重新安装默认配置档的 CUDA wheel。安装 ROCm PyTorch 且 GPU 可用时,声明并接受
cudabuffer 的HOST_BRIDGE后端会在训练 learner 解析到 CUDA 时让 Manager/TorchEnv tensor 使用当前 GPU:默认的training.collector_tensor_device=auto跟随 learner 设备,显式training.collector_tensor_device=cuda也可对其他 learner 设备强制同样的路由。 直接构造环境仍为 CPU。host-bridge 物理仿真仍在 CPU 上,通过 packed 传输连接 GPU observation、action、reward 与 reset。CUDA-only 物理后端仍不支持 ROCm。见 ADR-0012 Sole Tensor Manager And Scoped Backends。从 PyPI 安装(不克隆仓库)时,
make sync-rocm不适用;先从 PyTorch ROCm 索引 安装仓库验证过的 torch build,再安装unilab。发布的依赖范围是torch>=2.9,<2.15,pip 会保留已安装的 ROCm build,不会替换为 CUDA wheel:pip install torch==2.14.0 --index-url https://download.pytorch.org/whl/rocm7.2 pip install unilab
Intel XPU 说明:
保持使用
uv run --no-sync ...,避免把默认的 Linux 依赖重新同步回来。Ubuntu 24.04+ 上还需要系统驱动包
intel-opencl-icd和libze-intel-gpu1。off-policy 训练可按需加
training.use_amp=true。
软件包镜像¶
如需使用本地软件包镜像,请在同步前设置 uv 索引:
export UV_INDEX_URL=https://pypi.tuna.tsinghua.edu.cn/simple
uv sync --extra mujoco \
--index-url https://pypi.tuna.tsinghua.edu.cn/simple
冒烟检查¶
同步完成后,通过顶层 CLI 运行一次小型检查:
uv run train --algo ppo --task go2_joystick_flat --sim mujoco \
algo.max_iterations=1 \
algo.num_envs=16 \
training.no_play=true
不要单独使用 training.sim_backend 字段来切换后端;请通过 --sim 选择后端。