【免费下载链接】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/
第一次跑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):
- 创建独立 venv,锁定已验证版本(
robosuite==1.4.x、rpent-liberopro==0.1.1、rlinf-openpi==0.1.1); - 下载并构建LIBERO-Pro 复合资源树(合并 robosuite 机器人模型与 LIBERO-Pro 场景);
- 应用 7 个兼容性修复(如 MuJoCo 版本回退、pydantic 锁定);
- 最后自动执行一次"创建-重置-关闭"仿真环境冒烟测试——如果这一步失败,说明环境没装好。
⚠️ 注意: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):
两个实用建议:
- JPEG 编码:在 preset 的
env_config中设置image_codec: jpeg+jpeg_quality: 90,图像编码可快 27 倍(报告见 docs/img-encode-report/nvjpeg-optimization-report.md);但注意它是有损实验路径,特定 checkpoint 下可能出现非有限动作,正式跑仍建议默认 PNG; - 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,零依赖跑完整流程 |
小结
回顾一下完整链路:
install_vla_env.sh --track libero-pro建环境(含自动资产下载);python -m rollout_runtime.cli serve --config a100_libero_pi05_pro --launch ray启动 Runtime;prepare_libero_campaign.py冻结 manifest;run_campaign.py驱动 Rollout → 诊断 → 候选 → Gate 全流程;- 在
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/
相关推荐
Zetta Rollout Runtime架构拆解:Gateway会话调度、EnvWorker与Ray分布式部署完全指南
Zetta Rollout Runtime架构拆解:Gateway会话调度、EnvWorker与Ray分布式部署完全指南 Zetta Rollout Runti
Docker-Rollout 命令行参数详解:实现优雅的容器滚动更新
Docker Rollout 命令行参数详解:实现优雅的容器滚动更新 前言 在现代容器化部署中,如何实现零停机时间的服务更新是一个重要课题。Docker Rol
EasyWAM-Hidden-Wan22快速上手:3步完成LIBERO检查点下载,跑通第一次机器人策略评估
EasyWAM Hidden Wan22快速上手:3步完成LIBERO检查点下载,跑通第一次机器人策略评估 EasyWAM Hidden Wan22 是面向机器
人工智能大模型具身智能机器人
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考