Skip to main content

GR00T-N1.7 LIBERO 闭环成功率

每个 episode 都会在 LIBERO 中执行模型动作,直到 check_success() 返回真或达到 episode 步数上限。

结果

逐任务结果

每个任务包含 50 个固定初始状态。

测试配置

测试使用以下两个脚本:
  • benchmark/gr00t/libero_rollout_server.py:将 PhyAI 包装为 NVIDIA policy-server 协议。
  • benchmark/gr00t/libero_closed_loop_client.py:运行 LIBERO episode,并在每个 episode 后保存结果。

复现

先按照 ws1 准备 checkpoint。PhyAI 复现使用固定版本的 LIBERO 仿真容器,环境 需要 Docker、NVIDIA Container Toolkit 和 CUDA GPU。 在 PhyAI 仓库根目录设置:
将传输依赖安装到临时目录:
在第一个终端启动 PhyAI adapter:
如果本地尚未缓存 Cosmos-Reason2 文件,第一次运行时追加 --online。 内置processor不需要执行远程代码;只有在使用可信的自定义processor仓库时才传入 --trust-remote-code。 启用CUDA Graph时,--max-batch-size就是捕获Graph所用的batch,必须与 客户端实际请求batch一致。此处客户端每次发送一个环境,因此两者都为1; 使用官方客户端时,应将其设为与--n-envs相同的值。 --capture-suite libero_10会在绑定端口前扫描全部十个任务,并按Backbone 和Action Head的完整Graph结构对profile去重。这十条标准任务描述的结构 相同,因此setup只对一条代表profile执行预热,两个阶段分别只捕获一张 Graph;运行时只回放这些Graph。测试自定义固定任务子集时,将其替换为 重复的--capture-task "...";等价结构仍只捕获一次。该CUDA Graph路径中的 Action Head使用SDPA;选择可选FlashInfer backend时,scheduler会同时关闭 Backbone和Action Head的CUDA Graph,让完整请求统一走eager。看到 Server is ready and listening 后,在另一个终端重新导出相同变量并运行:
检查结果:
如果运行中断,--resume 会跳过已经完成的 (task_id, episode)。结果中的 server_info 记录服务端身份,backend 记录结果分组。

官方基线

复现官方基线时,按照 Isaac-GR00T 说明准备 LIBERO 环境, 然后启动 NVIDIA server:
将同一条仿真命令的端口改为 5555,设置 --backend official,并将结果写入 /results/official.json。其余参数沿用上面的测试配置。