ManiSkill3:一张 4090 并行仿真 8192 个机器人,26 万 FPS
【免费下载链接】ManiSkillManipulation Skill Framework, an open source GPU parallelized robotics simulator and benchmark项目地址: https://gitcode.com/GitHub_Trending/ma/ManiSkill
用 Isaac Lab 这类传统仿真器做机器人策略训练,最卡的瓶颈往往是显存:一开大批并行环境、一上几百个相机,显存直接顶满,GPU 上的 replay buffer 根本塞不下。ManiSkill3 是基于 SAPIEN 的 GPU 并行化机器人仿真框架,把物理和渲染都搬上 GPU,一张 RTX 4090 就能用 8192 个并行环境跑出 26 万+ FPS 的状态仿真。
30 秒搞懂它能干什么
它是给做机器人学习的研究者和开发者准备的,专门解决"单机串行仿真吞吐太低、喂不饱策略训练"这个痛点。你不用自己碰底层内存管理,按 Gymnasium 的接口调,就能批量产出数据。
- 🧩 30+ 种机器人,工业臂到灵巧手
- ⚡ 物理 + 渲染全上 GPU
- 📦 标准 Gymnasium 接口
- 🎮 RL / IL / VLA 都有 baseline
凭什么比传统方案快一个数量级
传统 CPU 仿真器(MuJoCo、PyBullet 这一类)是一个环境一个线程,环境数一多,要么 CPU 核数不够,要么进程间同步把时间全吃光;Isaac Lab 靠光线追踪做并行渲染,画质好但显存吃得很凶,相机一多就 OOM。
ManiSkill3 的绕法很直接:物理走 PhysX 的 CUDA 后端(physx_cuda),渲染走 SAPIEN 的并行光栅化,而且观测、动作全程是 batched torch tensor,一直待在 GPU 上,省掉了 CPU↔GPU 的来回拷贝。代价是它默认数据是 tensor,不想要 numpy 得手动切。
这段就是在演示"怎么开启"——把num_envs设为大于 1,GPU 并行仿真就自动点亮,不用你手动指定后端:
import gymnasium as gym import mani_skill.envs env = gym.make( "PickCube-v1", num_envs=1024, # >1 自动启用 GPU 并行仿真 obs_mode="state", )所以它不是"再加几层封装",而是把"每环境独立、数据在 CPU 上走"这条老路整个换成"一批环境一张表、数据不落地"。
不同任务实测:FPS 到底能拉多高
官方基准跑在一张 RTX 4090 上,下面这组数字都能从仓库自带的 CSV 里查到:
| 任务 | 观测模式 | 并行环境 | 相机配置 | FPS |
|---|---|---|---|---|
| FrankaMove | state | 4096 | — | 330,096 |
| FrankaPickCube | state | 8192 | — | 261,546 |
| PickCube | rgb | 1024 | 1×128×128 | 17,472 |
| OpenCabinetDrawer | rgb | 1024 | 1×128×128 | 8,222 |
| Franka | rgb | 512 | 1×640×480 | 6,740 |
优势最大的是纯state观测 + 简单控制:4096 环境冲到 33 万 FPS,比 CPU 串行仿真高两三个数量级。差距缩小出现在复杂物理交互 + 高分辨率多相机上——比如仿 Open-X 的 1×640×480 或仿 Droid 的 3×320×180,FPS 就会掉到几千,和高端光追方案的差距明显收窄。
也得说句公道话:官方目前只正式对比了 Cartpole 这一个任务(对 Isaac Lab),而且两边渲染技术不同(光栅化 vs 光线追踪),文档自己也承认不是完全 apples-to-apples。
拿它实际能跑哪些活儿
强化学习训练。内置 PPO、SAC、TD-MPC2 等调好的 baseline,PickCube / PushCube 这类任务基本是baselines.sh一把梭。num_envs调大,样本吞吐就上去,state 观测下基本不用担心数据生产拖后腿。
模仿学习。BC 和 Diffusion Policy 都有对应目录,配合 record/replay wrapper 存轨迹,还能转成 LeRobot 格式喂给下游模型。
VLA 大模型。提供 AI2THOR 和 ReplicaCAD 重建的真实家庭场景(HAB),跑rgbd观测就能给 Octo / RDT / RT-x 这类大模型供数,官方口径是 RGBD+分割数据在 4090 上能到 3 万+ FPS。
数据生成。遥操作 + 运动规划脚本可以批量出演示轨迹,sim2real 的部署链路也有现成 example。
从装好到跑通第一个环境
两条命令装完:
pip install --upgrade mani_skill pip install torch第一行能跑通的验证脚本(无头模式,不用显示器):
python -m mani_skill.examples.demo_random_action -e PickCube-v1兼容性一览(取自官方 README):
| 系统 / GPU | CPU 仿真 | GPU 仿真 | 渲染 |
|---|---|---|---|
| Linux / NVIDIA | ✅ | ✅ | ✅ |
| Windows / NVIDIA | ✅ | ❌ | ✅ |
| Windows / AMD | ✅ | ❌ | ✅ |
| WSL / 任意 | ✅ | ❌ | ❌ |
| MacOS / 任意 | ✅ | ❌ | ✅ |
两个最常踩的坑:
- 只有 Linux + NVIDIA 才能开 GPU 仿真(
physx_cuda),Windows 和 Mac 上 GPU 后端不可用,只能 CPU 仿真,别在错平台上等"为什么没加速"。 - 渲染要先单独配 Vulkan(见安装文档),否则
render_mode="human"起不来;没有本机 GPU 的话,官方 quickstart notebook 在 Colab free tier 能白嫖。
把 FPS 再榨出来的几个招
- 观测从
rgbd降成state→ PickCube 从 1.7 万 FPS 直接跳到十万级(state 8192 环境 26 万 vs rgb 1024 环境 1.7 万),数量级的差距。 - 相机降分辨率→ Cartpole 1024 环境下,640×480(1.1 万 FPS)换成 128×128(3.2 万 FPS),约 3 倍。
- 减相机数量→ 仿 Droid 的 3×320×180 换成单相机,Cartpole 64 环境约 2.2 倍提升。
- 别把
num_envs拉满→ 显存随环境数线性涨(state 4096 环境才 2.5GB,rgb+depth 8192 环境就 13GB),留点余量给 replay buffer 更稳。 - 纯 step 时关渲染→ 不需要出图就把渲染关掉,省掉整条渲染管线开销。
后面它还打算往哪走
- Real2sim:把真实世界策略丢进仿真规模化评估,官方口径是 GPU 仿真让评估快 100 倍。
- 基准覆盖:目前只正式对比了 Cartpole 一个任务,文档自述还在 WIP,计划补更多任务和其他物理引擎(如 MuJoCo)的公平对比。
- sim2real 链路:已有把仿真训好的策略部署到真机的 example,会持续补。
回到开头那个"显存爆掉"的痛点:把物理和渲染都塞进 GPU、数据全程不落地 CPU,ManiSkill3 让你用一张 4090 就能喂饱成千上万个并行环境。一句话收束——与其等 CPU 串行仿真慢慢磨,不如把策略训练搬上 GPU 并行,8192 个环境、26 万 FPS,数据生产从此不再是瓶颈。
参考:官方文档 · 性能基准
【免费下载链接】ManiSkillManipulation Skill Framework, an open source GPU parallelized robotics simulator and benchmark项目地址: https://gitcode.com/GitHub_Trending/ma/ManiSkill
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考