SuperAPI AI 工具集

physicalai-train-benchmarking-a-policy

测试与质量

查看项目

更新于 10-16 10:48

技能介绍

用途

本技能用于对已训练好的 Physical AI Studio 策略进行基准测试(Benchmarking)。其核心流程是在仿真 gym 中让策略执行 rollout,并对成功率进行评分,最终报告成功指标。适用于需要评估机器人策略性能、与基线检查点进行对比,或在任务出现回归时进行定性审查的场景。

主要能力

基准类的定义位于 library/src/physicalai/benchmark/gyms/benchmark.py,包含 Benchmark、PushTBenchmark、LiberoBenchmark。结果类型位于 benchmark/gyms/results.py,包含 BenchmarkResults、TaskResult。rollout 逻辑位于 library/src/physicalai/eval/rollout.py,对应 evaluate_policy。该库同时支持直接使用 Python API 以及 physicalai benchmark CLI 封装(library/src/physicalai/cli/benchmark.py)。

使用方式

Python API 调用

适用于 notebook、测试、自定义脚本或直接集成库的场景。

from physicalai.benchmark.gyms import PushTBenchmark
from physicalai.policies import ACT

policy = ACT.load_from_checkpoint("experiments/act/version_0/checkpoints/last.ckpt")
benchmark = PushTBenchmark(num_episodes=1)
results = benchmark.evaluate(policy)
print(results.summary())
results.to_json("results/benchmark/results.json")
results.to_csv("results/benchmark/results.csv")

对于已导出的制品,需先加载面向 Runtime 的模型:

from physicalai.benchmark.gyms import PushTBenchmark
from physicalai.inference import InferenceModel

model = InferenceModel("./exports/act_policy")
results = PushTBenchmark(num_episodes=1).evaluate(model)

CLI 调用

physicalai benchmark \
  --config configs/benchmark/pusht.yaml \
  --policy physicalai.policies.ACT \
  --ckpt_path experiments/act/version_0/checkpoints/last.ckpt \
  --output_dir ./results/benchmark

参数说明:--policy 为策略类路径;--ckpt_path 为 .ckpt 文件或导出目录;--config 为基准配置(如 configs/benchmark/pusht.yaml、configs/benchmark/libero.yaml),用于选择 Benchmark 类及其设置;--output_dir 默认值为 ./results/benchmark。可在 CLI 上覆盖基准设置,例如 --benchmark.num_episodes 10 --benchmark.num_envs 8。

输出

将 results.summary() 打印到 stdout;把 results.json 和 results.csv 写入 --output_dir;可通过配置 video_dir 与 record_mode(all | failures | successes | none)选择性录制视频。

工作流程

  1. 明确选择 API 或 CLI。代码级任务使用 Python API;配置/文档/入口点任务使用 CLI。当所选路径与用户请求的接触面匹配时完成。
  2. 在完整扫描前,先确认策略能从检查点/导出加载:
physicalai benchmark --config configs/benchmark/<suite>.yaml --policy <ClassPath> --ckpt_path <path> --benchmark.num_episodes 1

当单个 episode 端到端运行并打印摘要时完成。

  1. 使用预期的 episode/env 数量运行完整基准测试。当 results.json 与 results.csv 写入且成功指标被填充时完成。
  2. 通过 BenchmarkResults/TaskResult 字段解读结果;在同一配置上与基线检查点对比。
  3. 当任务出现回归时,录制视频用于定性审查(record_mode: failures)。

添加或修改 Benchmark

  1. 在 benchmark/gyms/ 中子类化 Benchmark(可参考 PushTBenchmark / LiberoBenchmark);gym 本身来自 physicalai.gyms(pusht.py、libero.py 等)。
  2. 在 library/configs/benchmark/ 中添加匹配的配置。
  3. 在 library/tests/unit/benchmark/ 下添加测试。当 uv run pytest tests/unit/benchmark 通过且 1-episode 运行成功时完成。

必需检查

  • 若同时支持 .ckpt 与导出目录,策略应从两者均可运行。
  • 对于面向用户的基准变更,Python API 路径(Benchmark(...).evaluate(...))与 CLI 封装在支持的输入上应保持一致。
  • 成功/episode 指标应被填充(并非意外为零/NaN),且跨运行可复现。
  • env/episode 数量应与硬件匹配;较大的 num_envs 需能容纳于内存。
  • 重量级 gym 依赖(如 libero、robocasa)应置于其可选 extras 之后并延迟导入。

相关技能

  • physicalai-train-training-a-policy:用于生成被基准测试的检查点。
  • physicalai-train-exporting-and-validating:用于对导出制品进行基准测试以实现部署一致性。

限制

资料未提供具体的收费、价格、平台支持范围或性能效果的具体数值。