☰
你的第一次Zetta机器人Rollout:从启动Rollout Runtime到跑完LIBERO-Pro完整episode(附命令详解)
2026/10/28 1:16:28 网站建设 项目流程

【免费下载链接】Zetta-Embodiment

Zetta is an efficient closed-loop embodied harness for self-evolving physical intelligence. It evolves code-based runtime critics and recovery skills online while keeping the base policy frozen. Project Page: https://air-embodied-brain.github.io/zetta/

项目地址:https://gitcode.com/gh_mirrors/ze/Zetta-Embodiment
点击查看免费下载

第一次跑Zetta的机器人 Rollout?别慌。本文带你走完完整链路:安装 LIBERO-Pro + Pi0.5 环境 → 启动 Rollout Runtime → 准备 campaign → 跑完一个真实 LIBERO-Pro episode,并逐一讲解每条命令和关键参数。Zetta 是一个高效闭环具身智能 harness,它在线演化基于代码的运行时 Critic 与 recovery skill,同时保持基座策略(VLA 模型)冻结,在 LIBERO-Pro 上取得 90.8% 的成功率。

一、30秒搞懂 Zetta:为什么叫"自演化"

在动手前,先建立一个心智模型。Zetta 把一次 Rollout 拆成三个角色:

角色职责源码位置
EnvWorker进程内运行仿真器(LIBERO),产生观测、执行动作rollout_runtime/workers/env_worker.py
RolloutWorker加载 Pi0.5 模型,执行策略推理rollout_runtime/workers/rollout_worker.py
Evolution 状态机Rollout → 失败聚类(Cluster)→ 诊断(Diagnose)→ 生成 Critic-Recovery 候选 → Shadow Replay → 配对 Gate → Held-out 验收zetta/evolution/

也就是说,你启动的 "Rollout Runtime" 本质上是一个Gateway + 多 Worker 的推理服务,campaign 通过 HTTP 指向它,而不是每个任务各起一套 VLA/环境服务。这个架构在 LIBERO-Pro 上带来了 11.1x 的推理加速(见 README)。

二、环境准备:一键搭建 LIBERO-Pro + Pi0.5 运行时

Zetta 支持 Python 3.11–3.12,但 LIBERO-Pro 仿真器链路使用 Python 3.10 的专用 venv。整个环境由一个脚本构建:

git clone https://gitcode.com/gh_mirrors/ze/Zetta-Embodiment cd Zetta-Embodiment export REPO_ROOT="$PWD" export VENV_ROOT=/abs/path/to/venvs/libero-pro bash scripts/deployment/install_vla_env.sh --track libero-pro

这个脚本会做四件事(详见 scripts/deployment/VLA_ENV_SETUP.md):

  1. 创建独立 venv,锁定已验证版本(robosuite==1.4.x、rpent-liberopro==0.1.1、rlinf-openpi==0.1.1);
  2. 下载并构建LIBERO-Pro 复合资源树(合并 robosuite 机器人模型与 LIBERO-Pro 场景);
  3. 应用 7 个兼容性修复(如 MuJoCo 版本回退、pydantic 锁定);
  4. 最后自动执行一次"创建-重置-关闭"仿真环境冒烟测试——如果这一步失败,说明环境没装好。

⚠️ 注意:LIBERO-Pro 与 RoboCasa 因robosuite版本不兼容,不能共用同一个 venv。

另外,你还需要一份 Pi0.5 的 LIBERO 微调权重(RLinf-Pi05-LIBERO-SFTcheckpoint),放在本地任意路径即可。

三、启动 Rollout Runtime:核心命令详解

环境就绪后,启动 Gateway 服务。官方示例命令:

CUDA_VISIBLE_DEVICES=0 MUJOCO_GL=egl \ RR_PI05_MODEL_PATH=/abs/path/to/RLinf-Pi05-LIBERO-SFT \ python -m rollout_runtime.cli serve \ --config a100_libero_pi05_pro \ --host 127.0.0.1 \ --port 18730 \ --launch ray

逐个参数解释(CLI 实现在 rollout_runtime/cli.py):

  • --config:preset 名或 yaml 路径。这里用a100_libero_pi05_pro,它把libero_variant设为pro、return_all_frames: true(开录像,工具链要靠它产出episode.mp4)。所有 preset 都在 rollout_runtime/config/presets/,建议复制一份后按本机 GPU 数量改num_ranks和placement,而不要提交带真实路径的新 preset;
  • --launch ray:真实运行必须加。它把 EnvWorker(仿真)和 RolloutWorker(模型推理)放进独立进程,避免互相抢占资源;--launch local(默认)只适合 CI 冒烟测试;
  • RR_PI05_MODEL_PATH:环境变量覆盖 preset 里的model_path,避免把机器路径写进仓库(见 a100_libero_pi05_pro.yaml);
  • MUJOCO_GL=egl:无显示器服务器上用 EGL 做离屏渲染。

[!TIP] 单卡想先试水?可用 zetta_libero_pi05.yaml(1 env rank × 1 rollout rank 形态),它专为"一个 agent 一个 session"的交互式回合设计。

一分钟冒烟检查

Runtime 是标准 HTTP 服务,绑在127.0.0.1(非回环地址会强制要求RR_AUTH_TOKEN)。服务起来后:

curl http://127.0.0.1:18730/healthz

返回正常即说明 Gateway 已就绪,Gateway 的实现见 rollout_runtime/serve/app.py。

四、准备 Campaign:冻结一份不可变实验清单

Zetta 的实验流程是固定的两步:先用prepare_*_campaign.py对着运行中的 Runtime冻结一份manifest.json(任务、种子、评测 horizon、Gate 契约全部固化,且不含任何密钥),再用run_campaign.py驱动状态机。

针对 LIBERO-Pro,执行(参数清单以--help为准,脚本见 scripts/evolution/prepare_libero_campaign.py):

python scripts/evolution/prepare_libero_campaign.py \ --output-root runs/libero-goal-s-task3/g0000 \ --campaign-id libero-goal-s-task3-g0000 \ --repository-root "$PWD" \ --runtime-python .venv/bin/python \ --code-commit "$(git rev-parse HEAD)" \ --suite libero_goal_swap \ --task-id 3 \ --task libero_goal_swap/task3 \ --task-language "Open the top layer of the drawer and put the bowl inside" \ --master-seed 2026081103 \ --rollout-count 50 \ --fixed-heldout-seeds 1-20 \ --heldout-mode test \ --runtime-url http://127.0.0.1:18730 \ --runtime-policy-id pi05

关键参数说明:

  • --runtime-url/--runtime-policy-id:指向你刚启动的 Rollout Runtime 及其policy_id(preset 里是pi05)。这是新版连接方式,替代了旧的--vla-endpoint直连;
  • --master-seed:开发种子由它确定性派生。注意:开发种子永远不要与 held-out 种子 1..20 重叠,这是官方安全规范;
  • --rollout-count 50:正式跑默认 50 条 rollout;如果只是验证链路通不通,可用 1/1/1 的小配置做有界检查(但那不算 benchmark 结果);
  • --heldout-mode test:held-out 结果只用于测试,除非你在任何 episode 运行前预注册validation模式。

这一步完成后,runs/.../g0000/下会出现manifest.json、preregistration.json、tool-catalog.json等冻结文件。

五、运行 Campaign:从 Rollout 到技能晋升

python scripts/evolution/run_campaign.py \ --manifest runs/libero-goal-s-task3/g0000/manifest.json \ --root runs/libero-goal-s-task3/g0000 \ --queue-root runs/libero-goal-s-task3/queue \ --tool-catalog runs/libero-goal-s-task3/g0000/tool-catalog.json \ --workers libero-worker-0 \ --model <model-name> \ --max-generations 1

命令来自 scripts/evolution/run_campaign.py,它启动 worker、接收 episode 结果,并驱动整个状态机:

50 条开发 Rollout → Failure Cluster → Stage 1 因果诊断 → Stage 2 Critic-Recovery 候选 → Shadow Replay → 配对 Same-seed Gate → Held-out seeds 1..20 → 拒绝则回到 Stage 2,通过则 Promote 完成

每个 episode 由 robots/libero/run_evolution_rollout.py 实际执行:Pi0.5 负责抓取(pi_pick),LLM 角色(Role1)负责运动、放置与重试决策——Recovery 工具的完整清单见 docs/libero-recovery-tools.md。

运行期间随时查看进度(只读):

python -m zetta.evolution.cli status \ --root runs/libero-goal-s-task3/g0000 \ --queue-root runs/libero-goal-s-task3/queue

六、一个完整 LIBERO-Pro episode 留下什么?

跑完一个 episode 后,输出目录里你会看到(目录布局见 docs/libero-recovery-tools.md):

<attempt>/ result.json # 成败、耗时、artifact 索引 trajectory/ actions.jsonl # 每步动作 states.jsonl # 每步状态(感知隔离模式,不含GT坐标) chunks.jsonl # 策略动作块与 Critic 提议 videos/ episode_agentview.mp4 # 主视角完整录像 episode_wrist.mp4 # 腕部相机录像 visual-evidence/ # 轨迹分段与可视化证据

打开episode_agentview.mp4看机械臂在抽屉场景里执行 "Open the top layer of the drawer and put the bowl inside",恭喜你——你的第一次 Zetta 机器人 Rollout 就跑通了 ✅

七、性能提示:让 Rollout 更快

Runtime Gateway 的端到端吞吐是 Zetta 的核心卖点。下图来自 nvJPEG 编码实验,展示真实 Pi0.5 模型经 Runtime Gateway 的端到端 rollout 吞吐(steps/s):

两个实用建议:

  1. JPEG 编码:在 preset 的env_config中设置image_codec: jpeg+jpeg_quality: 90,图像编码可快 27 倍(报告见 docs/img-encode-report/nvjpeg-optimization-report.md);但注意它是有损实验路径,特定 checkpoint 下可能出现非有限动作,正式跑仍建议默认 PNG;
  2. FlashRT 后端:单卡 RTX 4090 上,把 preset 的policy_backend换成flashrt(FP8 + CUDA Graph),Pi0.5 单样本延迟降 9.9×,经 Gateway 降 4.5×,动作余弦相似度 0.9989。步骤见 README 的 FlashRT Integration 章节。

八、常见问题速查

现象排查方向
serve启动即退出(exit code 2)非回环地址未设置RR_AUTH_TOKEN,安全前置检查失败
环境冒烟测试失败复合资源树缺robots/panda/robot.xml,重跑install_vla_env.sh或检查LIBERO_ASSETS_ROOT_OVERRIDE
episode 卡死无进展用zetta.evolution.cli status查看 phase;基础设施故障不计为 0 分,会自动重试
想只测链路不通真机用local_fakepreset:python -m rollout_runtime.cli smoke --config local_fake,零依赖跑完整流程

小结

回顾一下完整链路:

  1. install_vla_env.sh --track libero-pro建环境(含自动资产下载);
  2. python -m rollout_runtime.cli serve --config a100_libero_pi05_pro --launch ray启动 Runtime;
  3. prepare_libero_campaign.py冻结 manifest;
  4. run_campaign.py驱动 Rollout → 诊断 → 候选 → Gate 全流程;
  5. 在episodes/下拿到episode_agentview.mp4与全部轨迹证据。

从第一条命令到看你的第一条机械臂视频,这就是 Zetta 的完整闭环:基座策略保持冻结,进化发生在线、可审计、可复现。祝你的第一次 Rollout 顺利 🚀

【免费下载链接】Zetta-Embodiment

Zetta is an efficient closed-loop embodied harness for self-evolving physical intelligence. It evolves code-based runtime critics and recovery skills online while keeping the base policy frozen. Project Page: https://air-embodied-brain.github.io/zetta/

项目地址:https://gitcode.com/gh_mirrors/ze/Zetta-Embodiment
点击查看免费下载
上一篇:终极指南:Ostrich - Scala服务器的强大统计收集与报告工具
下一篇:res-downloader 视频解密下载完整指南

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询