【免费下载链接】vla-evaluation-harness
One framework to evaluate any VLA model on any robot simulation benchmark.
vla-evaluation-harness(命令行工具为vla-eval)是一个统一 VLA 模型评估框架:一次集成任意 VLA 模型,即可在 LIBERO、SimplerEnv、CALVIN 等 18 个机器人仿真基准上跑评估。模型服务与仿真环境通过 WebSocket 解耦,基准全部打包进 Docker 镜像,零依赖冲突。本文带你 10 分钟跑通第一次 VLA 评估,并覆盖批量并行加速与常见坑位。
1️⃣ 为什么需要 VLA 评估框架
VLA(Vision-Language-Action)模型通常在 LIBERO、CALVIN、SimplerEnv 等多个基准上评测,但每个基准都有独立的依赖、观测格式和评测协议——现实中每个团队都不得不为每个基准维护私有 fork,结果难以互相复现。
vla-evaluation-harness 的解法很直接:模型集成一次、基准集成一次,交叉评估矩阵自动填充。
- ✅零配置:基准跑在 Docker 里,模型服务器是带内联依赖声明的单文件脚本,无需手动装环境
- ✅批量并行:分片 + GPU 批推理,2000 个 LIBERO episode 在 1× H100 上 18 分钟跑完(约 47× 加速)
- ✅可复现:官方 docs/reproductions/ 报告了多个模型与论文分数的对照结果
| 维度 | 规模 |
|---|---|
| 支持基准 | LIBERO / SimplerEnv / CALVIN / RoboCasa / ManiSkill2 / RoboTwin 等 18 个 |
| 支持模型 | OpenVLA、π₀、π₀.₅、GR00T、X-VLA、OFT、DB-CogACT 等 13+ 个 |
完整清单见 configs/README.md。
2️⃣ 安装:一条命令搞定
环境要求很简单:Python 3.8+、Docker(推荐)、一块 GPU。
pip install vla-eval由于快速上手要使用仓库内的示例配置,建议同时克隆一份仓库:
git clone https://gitcode.com/gh_mirrors/vl/vla-evaluation-harness cd vla-evaluation-harness💡 没有 Docker 守护进程?加
--no-docker本地运行,或使用--runtime charliecloud免 root 跑同一镜像,详见 docs/runtimes.md。
3️⃣ 两条命令跑通第一次评估(冒烟测试)
核心流程就是开两个终端:一个起模型服务,一个跑评估。
第一步:启动模型服务器(终端 1,GPU 主机)
vla-eval serve --config configs/model_servers/db_cogact/libero.yaml这条命令会加载 DB-CogACT 的 LIBERO 权重并监听ws://localhost:8000。配置内容见 configs/model_servers/db_cogact/libero.yaml。
等服务器就绪:当健康检查返回 HTTP 200 即代表加载完成(TCP 监听、/health路由、WebSocket 握手在同一时刻全部生效):
curl -fsS http://localhost:8000/health # → HTTP 200 即就绪第二步:运行评估(终端 2)
vla-eval run --config configs/benchmarks/libero/smoke_test.yaml冒烟测试只跑1 个任务 × 1 个 episode(configs/benchmarks/libero/smoke_test.yaml),几分钟内就能看到结果。跑通后就可以放心上全量任务了。
背后发生了什么?
- 基准(LIBERO 仿真器)在Docker 容器内运行,镜像为
libero(约 6 GB,构建文件见 docker/Dockerfile.libero) - 模型服务器在宿主机运行,两侧通过WebSocket + msgpack通信:每个 step 客户端发送观测(图像/状态/语言指令),服务器返回动作
- 结果默认保存到
results/目录,为 JSON 格式
组件与数据流的完整说明见 docs/architecture.md。
4️⃣ 看懂结果:成功率与录制备份
评估结束后关注两点:
- 聚合指标:JSON 输出中的
mean_success等字段,按 benchmark → task → episode 逐级聚合,终端会打印汇总表 - SQLite 录制:默认开启录制,写入
recording-<eval-id>.sqlite(逐步数据 + episode 结果)。单分片运行会自动导出为每集 JSONL + 聚合 JSON;需要手动导出时执行:
vla-eval export <recording.sqlite> -o <导出目录>想看每集过程的?加--record-video或配置record_video: true即可获得逐集 mp4。
5️⃣ 从冒烟测试到全量评估:换配置即可
其他基准和模型遵循完全相同的模式——从 configs/ 中挑一个兼容的基准配置和模型配置即可:
# 全量 LIBERO Spatial:10 任务 × 50 episodes vla-eval run --config configs/benchmarks/libero/spatial.yaml # SimplerEnv + X-VLA vla-eval serve --config configs/model_servers/xvla/simpler_widox.yaml # 见 configs/model_servers/xvla/ vla-eval run --config configs/benchmarks/simpler/widox_vm.yaml # CALVIN + DB-CogACT vla-eval serve --config configs/model_servers/db_cogact/calvin.yaml vla-eval run --config configs/benchmarks/calvin/eval.yaml # LIBERO + π₀.₅(🤗 LeRobot 桥接,任意 LeRobot PreTrainedPolicy 均可) vla-eval serve --config configs/model_servers/lerobot/pi05_libero.yaml vla-eval run --config configs/benchmarks/libero/object.yaml提示:每个模型/基准目录都有独立 README(如 configs/model_servers/db_cogact/README.md),列出了支持的全部配置与对应权重。
6️⃣ 批量并行评估:把 14 小时压缩到 18 分钟
全量评估串行跑要数小时。vla-evaluation-harness 提供两层正交的并行度,相乘放大:
① Episode 分片(环境并行):把(任务, episode)对切给 N 个独立进程,各自连接同一个模型服务器。用自带脚本一键拉起所有分片并自动导出:
./scripts/run_sharded.sh -c configs/benchmarks/libero/spatial.yaml -n 50② 批量推理(GPU 并行):在模型配置中设置max_batch_size > 1,服务器会把多个分片的观测请求合并成一次 GPU 前向(BatchPredictModelServer)。
两者的设计依据是"需求/供给"调优法:需求 λ(N) 衡量环境吞吐随分片数的增长,供给 μ(B) 衡量模型吞吐随 batch size 的上限,工作点取 λ(N) < 80%·μ(B*) 以避免排队堆积:
实测(DB-CogACT 7B,LIBERO Spatial,1× H100-80GB):
| 串行 | 批量并行(50 分片,B=16) | |
|---|---|---|
| 墙钟时间 | ~14 小时 | ~18 分钟 |
| 吞吐 | ~11 obs/s | ~486 obs/s |
想为自己的模型/基准组合测 λ 和 μ?仓库自带探测工具experiments/bench_demand.py、experiments/bench_supply.py,推导示例见 docs/tuning-guide.md。
7️⃣ 常见问题速查
| 问题 | 解法 |
|---|---|
| 没有 Docker 守护进程 | --no-docker本地开发模式,或--runtime charliecloud(免 root、免 daemon,见 docs/runtimes.md) |
| 渲染抢 GPU 显存 | --render cpu让仿真软件渲染,GPU 全留给模型(见 docs/render-backends.md) |
| 评估卡住不动 | 按边界逐段排查:环境 setup → 观测 → 推理 → 动作应用 → 成功判定 → 录制;框架内置 watchdog 可检测卡死的基准 |
| 分片跑完想导出结果 | 全部分片退出后执行vla-eval export <sqlite> |
| 想验证某个配置是否可用 | vla-eval test(快速校验)/vla-eval test --benchmark libero(跑单个基准冒烟) |
8️⃣ 下一步:训练时顺手评估
如果你想在训练循环里周期性评估,Python API 只需一行(模型服务从调用进程直接拉起):
import vla_eval results = vla_eval.evaluate(MyModelServer(model), "configs/benchmarks/libero/smoke_test.yaml") print(results[0]["mean_success"])完整参数见 docs/python-api.md。仓库还附了一个端到端示例项目 examples/pusht_train_eval/:训练和评估共用同一套环境,pip install vla-eval即可跑。
📚 延伸阅读
- docs/architecture.md:组件职责、通信协议、episode 执行流
- docs/reproductions/:各模型的复现报告与验证分数
- docs/tuning-guide.md:分片数与 batch size 的调优工作示例
- configs/README.md:全部基准/模型配置速查表
跑通冒烟测试只是开始——换两个 YAML 配置,你就能把手上的模型放到任何基准上横向对比了 🚀
【免费下载链接】vla-evaluation-harness
One framework to evaluate any VLA model on any robot simulation benchmark.
相关推荐
KubeEye 集群巡检完全指南:KubeSphere 扩展的安装、规则开发与报告获取
KubeEye 集群巡检完全指南:KubeSphere 扩展的安装、规则开发与报告获取 KubeEye 是面向 KubeSphere 的 Kubernetes
FluxVLA快速入门教程:3条命令搭建环境,10分钟跑通你的第一次VLA训练
FluxVLA快速入门教程:3条命令搭建环境,10分钟跑通你的第一次VLA训练 FluxVLA 是一个一站式 VLA(Vision Language Actio
GatedDeltaNet快速上手:10分钟跑通第一次前向传播的完整教程
GatedDeltaNet快速上手:10分钟跑通第一次前向传播的完整教程 本文带你快速上手 GatedDeltaNet (门控 Delta 网络,ICLR 20
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考