openpi icon indicating copy to clipboard operation
openpi copied to clipboard

fix: add OpenCV dependencies to prevent training startup errors

Open StarrickLiu opened this issue 6 months ago • 0 comments

Problem:

When following the README's Docker build process and running training, the container crashes with:

ImportError: libGL.so.1: cannot open shared object file

This occurs during OpenCV initialization, preventing training from starting.

Root Cause:

Docker image lacks OpenCV's required graphics libraries:

libgl1 (OpenGL)
libglib2.0-0 (GLib)

Solution:

Added to Dockerfile:

RUN apt-get update && apt-get install -y libgl1 libglib2.0-0

Verification:

• Training now starts successfully

• OpenCV modules load correctly

• No impact on GPU compute (A800 verified)

Error Trace:

wandb: Tracking run with wandb version 0.19.1
wandb: Run data is saved locally in /workspace/openpi/wandb/run-20250515_123700-yf5ex8i4
wandb: Run `wandb offline` to turn off syncing.
wandb: Syncing run my_experiment
wandb:⭐️ View project at https://wandb.ai/XXXX
wandb: 🚀 View run at https://wandb.ai/XXXXXXX
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/multiprocessing/spawn.py", line 122, in spawn_main
    exitcode = _main(fd, parent_sentinel)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/multiprocessing/spawn.py", line 131, in _main
    prepare(preparation_data)
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/multiprocessing/spawn.py", line 246, in prepare
    _fixup_main_from_path(data['init_main_from_path'])
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/multiprocessing/spawn.py", line 297, in _fixup_main_from_path
    main_content = runpy.run_path(main_path,
                   ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen runpy>", line 280, in run_path
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/pkgutil.py", line 184, in <module>
    iter_importer_modules.register(
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/functools.py", line 892, in register
    if _is_union_type(cls):
       ^^^^^^^^^^^^^^^^^^^
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/functools.py", line 842, in _is_union_type
    from typing import get_origin, Union
  File "/.venv/lib/python3.11/site-packages/cv2/typing/__init__.py", line 60, in <module>
    import cv2.dnn
ImportError: libGL.so.1: cannot open shared object file: No such file or directory
Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/multiprocessing/spawn.py", line 122, in spawn_main
    exitcode = _main(fd, parent_sentinel)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/multiprocessing/spawn.py", line 131, in _main
    prepare(preparation_data)
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/multiprocessing/spawn.py", line 246, in prepare
    _fixup_main_from_path(data['init_main_from_path'])
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/multiprocessing/spawn.py", line 297, in _fixup_main_from_path
    main_content = runpy.run_path(main_path,
                   ^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen runpy>", line 280, in run_path
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/pkgutil.py", line 184, in <module>
    iter_importer_modules.register(
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/functools.py", line 892, in register
    if _is_union_type(cls):
       ^^^^^^^^^^^^^^^^^^^
  File "/root/.local/share/uv/python/cpython-3.11.9-linux-x86_64-gnu/lib/python3.11/functools.py", line 842, in _is_union_type
    from typing import get_origin, Union
  File "/.venv/lib/python3.11/site-packages/cv2/typing/__init__.py", line 60, in <module>
    import cv2.dnn
ImportError: libGL.so.1: cannot open shared object file: No such file or directory

StarrickLiu avatar May 15 '25 13:05 StarrickLiu