阅读一次运行
每个 episode 都会留下完整的记录:发给模型的内容和模型的回答、每个程序、每次有界执行及其事件、结果。 本教程阅读其中一个。
episode 目录
Section titled “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 |
summary
Section titled “summary”{"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。
python scripts/episode_status.py runs/dev # the newest episode, one line per turnpython 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 参考列出了每个事件和字段。
python scripts/view_runs.py runspython 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 仍计入分母。