用途
本技能用于对已训练好的 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)选择性录制视频。
工作流程
- 明确选择 API 或 CLI。代码级任务使用 Python API;配置/文档/入口点任务使用 CLI。当所选路径与用户请求的接触面匹配时完成。
- 在完整扫描前,先确认策略能从检查点/导出加载:
physicalai benchmark --config configs/benchmark/<suite>.yaml --policy <ClassPath> --ckpt_path <path> --benchmark.num_episodes 1
当单个 episode 端到端运行并打印摘要时完成。
- 使用预期的 episode/env 数量运行完整基准测试。当 results.json 与 results.csv 写入且成功指标被填充时完成。
- 通过 BenchmarkResults/TaskResult 字段解读结果;在同一配置上与基线检查点对比。
- 当任务出现回归时,录制视频用于定性审查(record_mode: failures)。
添加或修改 Benchmark
- 在
benchmark/gyms/中子类化Benchmark(可参考PushTBenchmark/LiberoBenchmark);gym 本身来自physicalai.gyms(pusht.py、libero.py等)。 - 在
library/configs/benchmark/中添加匹配的配置。 - 在
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:用于对导出制品进行基准测试以实现部署一致性。
限制
资料未提供具体的收费、价格、平台支持范围或性能效果的具体数值。