跳转到内容

正在加载搜索…

不调用模型检查改动

对 skill、运行时或 worker 的改动,可以在模拟器中端到端检查而不进行模型调用:用回放的模型回复代替调用模型。

--script FILE 接受一个回复的 JSON 列表,或者同时带有 verifier 答复的 {"replies": [...], "verifier": [...]}(没有这些答复时,verifier 回答 YES):

[
"<python>\nif 'start' in globals():\n start('B', 'scripted check')\nprint(list_policies())\nname = list_policies()[0]['name']\non('TIMEOUT', lambda trace: True)\nimport time\nbegan = time.time()\nt = run_policy(name, 'Stack the three bowls together.', max_seconds=6)\nprint(t, 'wall', round(time.time() - began, 1))\nprint([round(v, 3) for v in get_state()['joint_position']])\nshow(get_observation(['cam_head']), 'after policy')\n</python>",
"<finish>run_policy check</finish>"
]
Terminal window
harness run configs/experiments/dev.toml --script configs/scripts/pipeline_check.json --output runs/check
harness program configs/experiments/dev.toml --task stack_bowls --script my_replies.json
脚本 检查内容
configs/scripts/pipeline_check.json 状态、相机、一次运动、一个 guard 中止一次运动、夹爪、一个控制器、一次错误报告、verifier、finish
configs/scripts/run_policy_check.json 第一个配置的学习型策略运行 6 s
configs/scripts/run_policy_rules_check.json 同一个策略:在偏离起始位姿时新的运行被拒绝,在 home() 之后运行,持续到机械臂停止
configs/scripts/policy_alone.json 单独运行配置的学习型策略:从起始位姿到 episode 结束完成整个任务(configs/experiments/policy-alone-dev.toml 在每个任务上测量它;scripts/policy_card.py 为其描述整理分数)
configs/scripts/eef_check.json 在 stack_bowls 上按物体 id 使用的工具:locate、pick、release、push,然后 home()
configs/scripts/xpolicylab_check.json 在调试环境下运行一个导出的 XPolicyLab 策略

回复用完时,episode 结束(<finish>scripted replies exhausted</finish>)。

Terminal window
python scripts/replay_script.py runs/dev/general_pickup/seed-0 > replay.json
harness run configs/experiments/dev.toml --tasks general_pickup --seeds 0 --script replay.json \
--output runs/replay-check

replay_script.py 把一个 episode 的模型回复和 verifier 答复转成脚本,并在 stderr 上打印记录的状态、reward 和步数。在相同任务和开发 seed 上回放它们,会用改动后的代码运行相同的程序。预计会有小的差异:即使代码不变,接触丰富的运动在不同运行之间也不是确定性的。

Terminal window
python scripts/dev_console.py --reset stack_bowls 0
python scripts/dev_console.py --code "print(move_eef('left_arm', get_state()['left_ee_pose'], max_seconds=2))"
python scripts/dev_console.py --exec my_program.py --images /tmp/shots

dev_console.py 针对 --endpoint(默认 http://127.0.0.1:8771)构建一个包含所有层的会话,运行代码,打印各次执行,并把 show() 的图像保存到 --images。episode 在多次调用之间保持;Python 变量不保持。--vlm、--segmenter、--policy 和 --world-model 接受各服务的 URL。

Terminal window
python scripts/episode_status.py runs/dev # the newest episode, one line per turn