Psi0在SIMPLE仿真器跑基准测试:数据生成到3级域随机化评测完整指南
【免费下载链接】Psi0[RSS'26] Welcome to Psi-Zero, a Humanoid VLA towards Universal Humanoid Intelligence.项目地址: https://gitcode.com/gh_mirrors/ps/Psi0
🎯 本文带你完整走一遍Psi0(开源人形 VLA 基础模型)在SIMPLE 仿真器中跑基准测试的全流程:从运动规划/遥操作数据生成、模型微调、策略服务部署,到level-0/1/2 三级域随机化评测,并给出成功率统计与常见坑的解决方法,适合想复现论文结果或评测自己的 VLA 模型的新手。
一、先认识 Psi0 与 SIMPLE 仿真器
Psi0 (Ψ₀)是一个面向"通用人形运动-操作"(Universal Humanoid Loco-Manipulation)的开源视觉-语言-动作(VLA)基础模型。它的架构分为三层:
- System-2(VLM 骨干):基于 Qwen3-VL-2B-Instruct,从第一视角图像和语言指令中提取语义特征;
- System-1(动作专家):约 500M 参数的多模态扩散 Transformer,预测整身连续动作块;
- System-0(底层控制器):基于 RL 的跟踪控制器,执行下半身动作指令,保证物理稳定。
SIMPLE则是 Psi0 官方选用的人形机器人基准测试仿真器,基于 MuJoCo 物理引擎 + Isaac Sim 渲染,内置 G1 人形的整机操作任务(移动+抓取、弯腰拾取等),并自带datagen(数据生成)与 eval(评测)两套 CLI,是复现论文结果的"标准考场"。
二、环境准备:一键拉起 Psi0 + SIMPLE 运行时
📦 仓库内置了third_party/SIMPLE子模块,推荐用"第三方依赖"方式安装 SIMPLE(最适合评测 Psi0 与全部基线):
git clone https://gitcode.com/gh_mirrors/ps/Psi0 cd Psi0 git submodule update --init --recursive仓库用 uv):
env -u LD_LIBRARY_PATH nix --extra-experimental-features "nix-command flakes" develop source .venv-psi/bin/activate GIT_LFS_SKIP_SMUDGE=1 uv sync --all-groups --index-strategy unsafe-best-match --active cp .env.sample .env # 填入 HF_TOKEN / WANDB_API_KEY / PSI_HOMEuv sync会把psi和simple都装成可编辑包,之后即可直接import simple。验证安装:
python -c "import simple; print(simple.__version__)"⚠️ 不要手动把
third_party/SIMPLE/src加进PYTHONPATH,仓库级uv sync已经处理好了。
三、数据生成:两种方式来造训练数据
SIMPLE 提供两种数据生成方式,产出的都是 LeRobot 格式数据集:
| 方式 | 特点 | 适用场景 |
|---|---|---|
| 运动规划(CuRobo MP) | 全自动、可批量 | 任务以MP结尾(如G1WholebodyXMoveAndPickMP-v0) |
| 遥操作(Teleop) | 更拟人、上限更高 | 任务以Teleop结尾(如G1WholebodyXMovePickTeleop-v0) |
📝 快速验证数据生成(仅生成 1 条 episode,DR 级别 0):
python -m simple.cli.datagen \ simple/G1WholebodyXMoveAndPickMP-v0 \ --sim-mode mujoco_isaac \ --headless \ --data-format lerobot \ --save-dir $PWD/third_party/SIMPLE/data/datagen \ --num-episodes 1 \ --dr-level 0常用参数:--scene-uid选择场景实例、--target-object指定目标物体、--eval只生成评测环境配置。
💡不想自己生成数据?官方已放出 6 个整机任务(含G1WholebodyBendPick、G1WholebodyXMovePick等)的预采仿真数据与simple-eval评测集,直接下载解压到data/simple/data/evals即可跳过本步。
四、微调 Psi0:一条命令开训
数据就位后,用官方训练脚本微调(以 BendPick 任务为例,超参见 scripts/train/psi0/finetune-simple-psi0.sh):
export task=G1WholebodyBendPick-v0 bash scripts/train/psi0/finetune-simple-psi0.sh $task关键配置一览:
- 骨干冻结(
no-tune-vlm),只训 500M 动作专家; - 动作块长 30 步、动作维度 36(36-DoF 整身动作);
- RTC(实时控制)开启,
max-delay=8; - 学习率 1e-4,cosine 衰减,建议全局 batch size 保持 128(设备 batch × GPU 数 × 梯度累积)。
训练产物(run dir)位于项目根目录.runs下,之后评测时通过--run-dir+--ckpt-step定位 checkpoint。显存紧张可加--train.optimizer-foreach=false换时间省显存。
五、启动策略服务,连接 SIMPLE 评测客户端
Psi0 以 HTTP 服务方式暴露策略推理,SIMPLE 评测客户端通过host:port拉取动作块:
export run_dir=<.runs 下的训练目录> export ckpt_step=<checkpoint 步数> uv run --active --group psi --group serve serve_psi0 \ --host 0.0.0.0 --port 22085 \ --run-dir=$run_dir --ckpt-step=$ckpt_step \ --action-exec-horizon=24 --rtc服务启动后,curl -i http://localhost:22085/health返回正常即代表就绪。🖥️ 由于 Isaac Sim 资源开销大,官方推荐把 VLA 服务部署在远程 GPU 服务器,本地机器只跑仿真:
ssh -L 22085:localhost:22085 user@your-server # 端口转发六、核心环节:3 级域随机化评测怎么跑
🎲 SIMPLE 为每个任务都提供了三档域随机化(domain randomization)评测集:
| 级别 | 含义 | 用途 |
|---|---|---|
level-0 | 基础场景 | 验证策略基本正确性 |
level-1 | 中等随机化 | 检验一定鲁棒性 |
level-2 | 强随机化 | 压力测试泛化上限 |
先下载对应评测集并解压到data/evals/simple-eval/$task/$dr,然后按任务来源选对入口:
- 任务以
Teleop结尾(遥操作数据训练)→ 入口eval_decoupled_wbc.py+ agentpsi0_decoupled_wbc - 任务以
MP结尾(运动规划数据训练)→ 入口eval.py+ agentpsi0
export task=G1WholebodyXMovePickTeleop-v0 export dr=level-0 export entry=eval_decoupled_wbc.py export agent=psi0_decoupled_wbc python src/simple/cli/$entry \ simple/$task $agent $dr \ --host=localhost --port=22085 \ --sim-mode=mujoco_isaac \ --no-headless \ --data-format=lerobot \ --data-dir=data/evals/simple-eval/$task/$dr想三档全跑,循环for dr in level-0 level-1 level-2; do ... done即可;各基线(H-RDT、EgoVLA、π0.5、ACT、Diffusion Policy)的同样流程分别写在 examples/quick_start/hrdt.md、examples/quick_start/egovla.md、baselines/pi05/README.md 等文档中。
懒人方案:一条命令"起服务 + 跑评测"
仓库提供了开箱即用的 examples/simple/simple_eval.py:自动挑选空闲端口、拉起serve_psi0_simple服务、等待就绪后运行EvalRunner,结束后打印success_rate与日志路径:
source .venv-psi/bin/activate python examples/simple/simple_eval.py \ --run-dir /path/to/.runs/finetune/xxx \ --ckpt-step 40000 \ --env-id simple/G1WholebodyBendPick-v0 \ --data-dir $DATA_HOME/G1WholebodyBendPick-v0-psi0 \ --num-episodes 10 \ --save-video策略 rollout 视频与结果日志统一输出在third_party/SIMPLE/data/evals/psi0,评测完成即"交卷"✅。
七、常见问题与调优技巧
- 单条 episode 要 6~10 分钟?正常现象——SIMPLE 在 Isaac Sim 中使用同步渲染 API,渲染本身耗时,属预期行为;
- 评测集路径:必须指向
simple-eval中对应任务的该 DR 级别目录,--data-dir与dr参数要一致; - 评测通过标准:
--success-criteria默认 0.9(即目标物达到 90% 位置/姿态容差记为成功),--max-episode-steps默认 360 步; - 多 worker 加速:加
--num-workers可并行评测多条 episode; - lerobot 加载报
stack(): ... not Column:说明环境里的lerobot版本与 SIMPLE 不一致,执行uv sync --group psi --active重新同步即可(见 README.md 的 Troubleshootings)。
八、关键资料速查
| 资料 | 路径 |
|---|---|
| 环境搭建总指南 | examples/quick_start/psi.md |
| SIMPLE 库/CLI 用法 | examples/quick_start/simple.md |
| 一键评测脚本 | examples/simple/simple_eval.py |
| SIMPLE 评测说明(Docker/nix) | examples/simple/README.md |
| Psi0 微调脚本 | scripts/train/psi0/finetune-simple-psi0.sh |
| 离线开环评测 notebook | examples/simple/openloop_eval.py |
| 基线模型评测文档 | baselines/README.md |
| 模型架构与检查点清单 | README.md |
🏁 至此,你就完整掌握了Psi0 在 SIMPLE 仿真器中的基准测试全流程:环境 → 数据生成 → 微调 → 部署 → 三级域随机化评测。接下来不妨挑一个MP任务,先跑 level-0 验证链路,再逐级加压,看看你的模型能扛到 level-几。
【免费下载链接】Psi0[RSS'26] Welcome to Psi-Zero, a Humanoid VLA towards Universal Humanoid Intelligence.项目地址: https://gitcode.com/gh_mirrors/ps/Psi0
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考