跳转到内容

正在加载搜索…

阅读一次运行

每个 episode 都会留下完整的记录:发给模型的内容和模型的回答、每个程序、每次有界执行及其事件、结果。 本教程阅读其中一个。

文件 内容
manifest.json 配置快照(agent 版本、主模型、runtime、prompt、任务、预算)、agent 的 lock 和 identity、服务运行的位置、embodiment 配置、来源信息(Python、git commit 及是否有未提交改动、包哈希)
events.jsonl 每个事件一个 JSON 对象,按顺序排列(seq、time、event、各字段)
summary.json 状态、是否成功、reward、步数、模型和 verifier 调用次数、cell 数、token、花费、时间、按原因统计的决策、已处理和已上报的事件、所选策略
kernel.log kernel 自己的日志:每次工具调用(locate、pick、release、transfer、push 等)一行 JSON,附带结果
videos/ worker 录制视频时,每个相机一个 MP4
{"status": "finished", "success": true, "reward": 1.0, "steps": 95,
"model_calls": 4, "verifier_calls": 0, "cells": 4, "decisions": {"start": 1, "program_end": 2, "error": 1},
"events_handled": 0, "events_escalated": 0, "cost_usd": 0.0029, ...,
"strategy": {"strategy": "B", "kind": "pick up the blue race toy car by 10 cm", "policy": null, "step": 0}}

先看 strategy 和 decisions。strategy 是模型用 start(strategy, kind) 做出的选择:A 或 C 把任务 交给学习型策略(policy;附带 policy_ran),B 把任务留给程序;after 记录一个后来才移交的 B。 移交的任务通常需要两次调用,一次观察和一次移交(start、一次 program_end),并随 episode 结束 (episode_ended),或在策略停止后再进行最多 4 次调用。由程序保留的任务每次与物体接触需要一次调用, 另加观察和结束。events_handled 统计程序自己处理的事件(handler);events_escalated 统计上报给模型的 事件。大量 error 或 escalation 调用是一个信号:程序没有消化自己的失败。修复通常是一个 skill、一个 检查或一个 handler,而不是改 prompt。

Terminal window
python scripts/episode_status.py runs/dev # the newest episode, one line per turn
python scripts/episode_status.py runs/dev --code # with the programs
事件 字段
reset 第一个观测:指令、机器人状态、图像
model_request call、reason、新消息、整个上下文的摘要
model_reply text、usage(token、花费、结束原因)、seconds
cell 程序(code)及其 result:状态、stdout、错误、上报、各次执行的事件、机器人状态
verify 声明以及 verifier 的回答
finish 摘要文本(程序调用 finish() 时为 source: "program",策略运行之后的调用次数用完时为 "driver")
policy_to_end 策略运行之后的调用次数用完后,被移交的任务一直运行到 episode 结束
wrap_up 打开空的夹爪,手臂回到起始姿态
outcome 是否成功、reward、过程分、步数
protocol_error、malformed_dropped、kernel_died、error、cleanup_error 出了什么问题

trace 参考列出了每个事件和字段。

Terminal window
python scripts/view_runs.py runs
python scripts/serve_runs.py runs 8000 # http://127.0.0.1:8000/

view_runs.py 在 trace 旁边写出静态页面,不修改任何 trace:

  • runs/index.html:所有运行,开发 layout 和评测 layout 分在不同的表中,附带每个维度的 suite 分数;
  • <run>/index.html:一次运行的各个 episode;
  • <episode>/view.html:summary、与各轮同步的相机视频,以及每个事件:每个请求及其图像、每个程序 (编号、高亮)、每次执行及其事件、结果。

serve_runs.py 在 127.0.0.1 上提供这些页面,支持 HTTP range 请求,视频拖动进度需要它;从另一台机器 访问时通过 SSH 隧道。scripts/run_and_view.sh 运行 harness program,并在其结束时重建页面。

当两次运行的清单带有相同的 identity,且 episode 的任务、seed 和 layout 相同时,二者可以比较。对两个 目录分别运行 harness report,可以并排得到按任务的表格;失败或出错的 episode 仍计入分母。