【StarVLA】在LIBERO中评估之环境配置
【StarVLA】在LIBERO中评估之环境配置
记录缘由
最初按照StarVLA官方提供的教程(starVLA_guideline.md的evaluate-a-pretrained-checkpoint 和 LIBERO 评测),按照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
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)