跳转到内容

LIBERO 评测

LIBERO 是一个桌面机械臂操作仿真基准,包含 4 个任务套件(Spatial、Object、Goal、Long Horizon),共 40 个任务,用来测试 VLA 模型的空间理解、物体识别、目标推理和长序列操作能力。使用 Franka 机械臂。

本文档提供在 LIBERO 上复现我们实验结果的操作指南。评测流程主要包含两部分:

  1. 配置 LIBERO 环境与依赖。
  2. 分别在 starVLALIBERO 环境中启动服务并运行评测。

我们已在 NVIDIA A100RTX 4090 上验证该流程可稳定运行。


我们在 Hugging Face 上提供了一组预训练检查点,方便社区进行评测:🤗 StarVLA/bench-libero。对应的 LIBERO 结果汇总如下表。

ModelStepsEpochsSpatialObjectGoalLongAvg
$\pi_0$+FAST--96.496.888.660.285.5
OpenVLA-OFT175K22397.698.497.994.597.1
$\pi_0$--96.898.895.885.294.1
GR00T-N1.520K20392.092.086.076.086.5
StarVLA-FAST (Qwen2.5-VL)30K9.5497.397.296.190.295.2
StarVLA-OFT (Qwen2.5-VL)30K9.5497.498.096.892.096.1
StarVLA-π (Qwen2.5-VL)30K9.5498.299.295.688.495.4
StarVLA-GR00T (Qwen2.5-VL)30K9.5497.898.294.690.895.4
StarVLA-FAST (Qwen3-VL)30K9.5497.397.496.390.695.4
StarVLA-OFT (Qwen3-VL)30K9.5497.898.696.293.896.6
StarVLA-π (Qwen3-VL)30K9.5498.899.695.888.495.7
StarVLA-GR00T (Qwen3-VL)30K9.5497.898.897.492.096.5

我们使用同一个策略覆盖全部 4 个 suite。每个 task suite 的分数均为 500 次试验平均(10 个任务 × 每任务 50 个 episode)。


请先参考官方 LIBERO 仓库 安装基础 LIBERO 环境。

⚠️ 常见问题:LIBERO 默认使用 Python 3.8,但 3.8 与 3.10 之间的语法更新差异较大。我们验证 Python 3.10 可以避免许多问题

随后,在 LIBERO 环境中安装以下依赖:

Terminal window
pip install tyro matplotlib mediapy websockets msgpack
pip install numpy==1.24.4 # 降级 numpy 是因为仿真环境对 numpy 版本有严格兼容性要求

请在 starVLA 主仓库根目录使用两个独立终端运行评测(每个环境一个终端)。

  • starVLA 环境:运行推理服务(server)。
  • LIBERO 环境:运行仿真(simulation)。

Step 1. 启动服务端(starVLA 环境)

Section titled “Step 1. 启动服务端(starVLA 环境)”

在第一个终端中,激活 starVLA conda 环境并运行:

Terminal window
bash examples/LIBERO/eval_files/run_policy_server.sh

⚠️ 注意:请确保你在 examples/LIBERO/eval_files/run_policy_server.sh 中填写了正确的 checkpoint 路径。


在第二个终端中,激活 LIBERO conda 环境并运行:

Terminal window
bash examples/LIBERO/eval_files/eval_libero.sh

⚠️ 注意:请确保你在 eval_libero.sh 中正确设置了以下变量:

变量含义示例
LIBERO_HOMELIBERO 仓库克隆路径/path/to/LIBERO
LIBERO_PythonLIBERO conda 环境的 Python 路径$(which python) (在 LIBERO 环境中)
your_ckptStarVLA checkpoint 路径./results/Checkpoints/.../steps_30000_pytorch_model.pt
unnorm_key数据集的 robot type 名,用于加载反归一化统计量franka(LIBERO 使用 Franka 机械臂)

unnorm_key 用来从 checkpoint 中读取训练时保存的归一化统计信息(min/max 等),以便在评测时将模型输出的归一化动作恢复为实际关节角度。

最后,每次评测结果也会保存一段可视化视频(示例):

Example


将数据集下载到 playground/Datasets/LEROBOT_LIBERO_DATA 目录:

并将 modality.json 移动到每个 $LEROBOT_LIBERO_DATA/subset/meta/modality.json

你可以通过下面的脚本快速准备数据:

Terminal window
## Set DEST to the directory where you want to store the data
export DEST=/path/to/your/data/directory
bash examples/LIBERO/data_preparation.sh

训练所需文件已整理在 examples/LIBERO/train_files/

运行以下命令开始训练:

Terminal window
bash examples/LIBERO/train_files/run_libero_train.sh

⚠️ 注意:请确保你在 examples/LIBERO/train_files/run_libero_train.sh 中填写了正确的路径。