【StarVLA】在LIBERO中评估之环境配置

记录缘由

最初按照StarVLA官方提供的教程(starVLA_guideline.md的evaluate-a-pretrained-checkpointLIBERO 评测),按照Python 3.10进行conda环境的配置,但一直报错

报错信息如下:主要是OpenGL.raw.EGL._errors.EGLError

AttributeError: 'MjData' object has no attribute 'getattr'
Exception ignored in: <function MjRenderContext.__del__ at 0x7f8540bb2710>
Traceback (most recent call last):
  File "/home/sen/data/conda/conda_envs/libero/lib/python3.10/site-packages/robosuite/utils/binding_utils.py", line 199, in __del__
  File "/home/sen/data/conda/conda_envs/libero/lib/python3.10/site-packages/robosuite/renderers/context/egl_context.py", line 149, in free
  File "/home/sen/data/conda/conda_envs/libero/lib/python3.10/site-packages/OpenGL/error.py", line 230, in glCheckError
OpenGL.raw.EGL._errors.EGLError: <exception str() failed>
Exception ignored in: <function EGLGLContext.__del__ at 0x7f8540bb2560>
Traceback (most recent call last):
  File "/home/sen/data/conda/conda_envs/libero/lib/python3.10/site-packages/robosuite/renderers/context/egl_context.py", line 155, in __del__
  File "/home/sen/data/conda/conda_envs/libero/lib/python3.10/site-packages/robosuite/renderers/context/egl_context.py", line 149, in free
  File "/home/sen/data/conda/conda_envs/libero/lib/python3.10/site-packages/OpenGL/error.py", line 230, in glCheckError
OpenGL.raw.EGL._errors.EGLError: <exception str() failed>

报错的核心原因大概是:bddl、robosuite、mujoco、numba、llvmlite、numpy等包的依赖版本存在问题

解决方法

在尝试了很多版本后依然在评估过程中会报错,转而改用Python 3.8进行conda环境的配置

具体步骤

相关依赖包的版本参考了openpi官方提供的requirement.txt,感谢PI官方提供的如此详尽的版本信息

1.创建3.8.13的虚拟环境
conda create -n libero38 python=3.8.13
2.安装依赖(我使用的requirements.txt内容见下文)
pip install -r requirements.txt --extra-index-url https://download.pytorch.org/whl/cu113
3.安装torchvision torchaudio
pip install  torchvision==0.12.0+cu113 torchaudio==0.11.0 --extra-index-url https://download.pytorch.org/whl/cu113
4.安装starvla的评估依赖包
pip install tyro matplotlib mediapy websockets msgpack 
5.收尾
pip install -e .

requirements.txt的内容

hydra-core==1.2.0
#  numpy==1.22.4 
wandb==0.13.1 
easydict==1.9 
transformers==4.21.1
#opencv-python==4.6.0.66 
robomimic==0.2.0 
einops==0.4.1
thop==0.1.1-2209072238
# robosuite==1.4.0
bddl==1.0.1
future==0.18.2 
#matplotlib==3.5.3 
cloudpickle==2.1.0
gym==0.25.2
torch==1.11.0+cu113

# This file was autogenerated by uv via the following command:
#    uv pip compile examples/libero/requirements.in -o examples/libero/requirements.txt --python-version 3.8 --index-strategy=unsafe-best-match
absl-py==2.1.0
    # via mujoco
certifi==2024.12.14
    # via requests
charset-normalizer==3.4.0
    # via requests
cycler==0.12.1
    # via matplotlib
docstring-parser==0.16
    # via tyro
etils==1.3.0
    # via mujoco
eval-type-backport==0.2.0
    # via tyro
evdev==1.7.1
    # via pynput
fonttools==4.55.3
    # via matplotlib
glfw==1.12.0
    # via mujoco
idna==3.10
    # via requests
imageio==2.35.1
    # via -r examples/libero/requirements.in
imageio-ffmpeg==0.5.1
    # via imageio
importlib-metadata==8.5.0
    # via typeguard
importlib-resources==6.4.5
    # via etils
kiwisolver==1.4.7
    # via matplotlib
llvmlite==0.36.0
    # via numba
markdown-it-py==3.0.0
    # via rich
matplotlib==3.5.3
    # via -r examples/libero/requirements.in
mdurl==0.1.2
    # via markdown-it-py
mujoco==3.2.3
    # via robosuite
numba==0.53.1
    # via robosuite
numpy==1.22.4
    # via
    #   -r examples/libero/requirements.in
    #   imageio
    #   matplotlib
    #   mujoco
    #   numba
    #   opencv-python
    #   robosuite
    #   scipy
    #   torchvision
opencv-python==4.6.0.66
    # via
    #   -r examples/libero/requirements.in
    #   robosuite
packaging==24.2
    # via matplotlib
pillow==10.4.0
    # via
    #   imageio
    #   matplotlib
    #   robosuite
    #   torchvision
psutil==6.1.0
    # via imageio
pygments==2.18.0
    # via rich
pynput==1.7.7
    # via robosuite
pyopengl==3.1.7
    # via mujoco
pyparsing==3.1.4
    # via matplotlib
python-dateutil==2.9.0.post0
    # via matplotlib
python-xlib==0.33
    # via pynput
pyyaml==6.0.2
    # via -r examples/libero/requirements.in
requests==2.32.3
    # via torchvision
rich==13.9.4
    # via tyro
robosuite==1.4.1
    # via -r examples/libero/requirements.in
scipy==1.10.1
    # via robosuite
setuptools==75.3.0
    # via
    #   imageio-ffmpeg
    #   numba
shtab==1.7.1
    # via tyro
six==1.17.0
    # via
    #   pynput
    #   python-dateutil
    #   python-xlib
termcolor==2.4.0
    # via robosuite
torch==1.11.0+cu113
    # via
    #   -r examples/libero/requirements.in
    #   torchaudio
    #   torchvision
torchaudio==0.11.0+cu113
    # via -r examples/libero/requirements.in
torchvision==0.12.0+cu113
    # via -r examples/libero/requirements.in
tqdm==4.67.1
    # via -r examples/libero/requirements.in
typeguard==4.4.0
    # via tyro
typing-extensions==4.12.2
    # via
    #   etils
    #   rich
    #   torch
    #   torchvision
    #   typeguard
    #   tyro
tyro==0.9.2
    # via -r examples/libero/requirements.in
urllib3==2.2.3
    # via requests
zipp==3.20.2
    # via
    #   etils
    #   importlib-metadata
    #   importlib-resources

starvla代码修改

由于Python 3.8 不支持Python 3.10 类型注解,因此需要对代码进行微小修改
修改处1:examples/simBenchmarks/LIBERO/eval_files/eval_libero.py的23行加入

from typing import Optional, Union

修改处2:examples/simBenchmarks/LIBERO/eval_files/eval_libero.py的_binarize_gripper_open函数修改为

# def _binarize_gripper_open(open_val: np.ndarray | float) -> np.ndarray:
def _binarize_gripper_open(
    open_val: Union[np.ndarray, float]
) -> np.ndarray:
    arr = np.asarray(open_val, dtype=np.float32).reshape(-1)
    v = float(arr[0])
    bin_val = 1.0 - 2.0 * (v > 0.5)
    return np.asarray([bin_val], dtype=np.float32)

修改处3:deployment/model_server/tools/websocket_policy_client.py的112、113行注释掉, websockets==13.1 的同步客户端不支持后面两个参数

在这里插入图片描述
经过如此即可按照starvla的官方代码进行评估(评估完成最后的exception是正常的哈)~
在这里插入图片描述

附上我最后环境的所有包的版本

(/home/sen/data/conda/conda_envs/libero38) sen@sen1553:~/data/new_python_project/CRL_Project/starVLA$ pip list
Package                   Version              Editable project location
------------------------- -------------------- ------------------------------------------------------------
absl-py                   2.1.0
antlr4-python3-runtime    4.9.3
asttokens                 3.0.2
attrs                     25.3.0
backcall                  0.2.0
bddl                      1.0.1
certifi                   2024.12.14
cffi                      1.17.1
charset-normalizer        3.4.0
click                     8.1.8
cloudpickle               2.1.0
cryptography              45.0.7
cycler                    0.12.1
decorator                 5.3.1
docker-pycreds            0.4.0
docstring_parser          0.16
easydict                  1.9
egl_probe                 1.0.2
einops                    0.4.1
etils                     1.3.0
eval_type_backport        0.2.0
evdev                     1.7.1
exceptiongroup            1.3.1
executing                 2.2.1
fastjsonschema            2.21.2
filelock                  3.16.1
fonttools                 4.55.3
fsspec                    2025.3.0
future                    0.18.2
gitdb                     4.0.12
GitPython                 3.1.58
glfw                      1.12.0
google-auth               2.50.0
google-auth-oauthlib      1.0.0
grpcio                    1.70.0
gym                       0.25.2
gym-notices               0.1.0
h5py                      3.11.0
hf-xet                    1.6.0
huggingface_hub           0.36.2
hydra-core                1.2.0
idna                      3.10
imageio                   2.35.1
imageio-ffmpeg            0.5.1
importlib_metadata        8.5.0
importlib_resources       6.4.5
iniconfig                 2.1.0
ipython                   8.12.3
jedi                      0.19.2
jsonschema                4.23.0
jsonschema-specifications 2023.12.1
jupyter_core              5.8.1
jupytext                  1.17.1
kiwisolver                1.4.7
libero                    0.1.0                /home/sen/data/new_python_project/CRL_Project/starVLA/LIBERO
llvmlite                  0.36.0
Markdown                  3.7
markdown-it-py            3.0.0
MarkupSafe                2.1.5
matplotlib                3.5.3
matplotlib-inline         0.1.7
mdit-py-plugins           0.4.2
mdurl                     0.1.2
mediapy                   1.2.7
msgpack                   1.1.1
mujoco                    3.2.3
nbformat                  5.10.4
networkx                  3.1
numba                     0.53.1
numpy                     1.22.4
oauthlib                  3.3.1
omegaconf                 2.3.1
opencv-python             4.6.0.66
packaging                 24.2
parso                     0.8.7
pathtools                 0.1.2
pexpect                   4.9.0
pickleshare               0.7.5
pillow                    10.4.0
pip                       24.2
pkgutil_resolve_name      1.3.10
platformdirs              4.3.6
pluggy                    1.5.0
promise                   2.3
prompt_toolkit            3.0.52
protobuf                  3.20.3
psutil                    6.1.0
ptyprocess                0.7.0
pure_eval                 0.2.3
pyasn1                    0.6.4
pyasn1_modules            0.4.2
pycparser                 2.23
Pygments                  2.18.0
pynput                    1.7.7
PyOpenGL                  3.1.7
pyparsing                 3.1.4
pytest                    8.3.5
python-dateutil           2.9.0.post0
python-xlib               0.33
PyYAML                    6.0.2
referencing               0.35.1
regex                     2024.11.6
requests                  2.32.3
requests-oauthlib         2.0.0
rich                      13.9.4
robomimic                 0.2.0
robosuite                 1.4.1
rpds-py                   0.20.1
scipy                     1.10.1
sentry-sdk                2.66.1
setproctitle              1.3.7
setuptools                75.3.0
shortuuid                 1.0.13
shtab                     1.7.1
six                       1.17.0
smmap                     5.0.3
stack-data                0.6.3
tensorboard               2.14.0
tensorboard-data-server   0.7.2
tensorboardX              2.6.2.2
termcolor                 2.4.0
thop                      0.1.1.post2209072238
tokenizers                0.12.1
tomli                     2.4.1
torch                     1.11.0+cu113
torchaudio                0.11.0+cu113
torchvision               0.12.0+cu113
tqdm                      4.67.1
traitlets                 5.14.3
transformers              4.21.1
typeguard                 4.4.0
typing_extensions         4.12.2
tyro                      0.9.2
urllib3                   2.2.3
wandb                     0.13.1
wcwidth                   0.8.2
websockets                13.1
Werkzeug                  3.0.6
wheel                     0.44.0
zipp                      3.20.2

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐