Как запустить среду Gym с помощью nvidia-docker 1.0 - PullRequest
0 голосов
/ 04 июня 2019

Можно ли запустить тренажерный зал OpenAI (точнее, car_racing) в док-контейнере, используя nvidia-docker версии 1.0? Я знаю, что необходимо использовать xvfb-run для имитации отображения, чтобы позволить pyglet отображать, но даже используя его и пробуя разные образы nvidia / cuda и nvidia / cudagl для разных версий cuda и версии ubuntu, я не смог запустить это.

Я пробовал разные вещи и всегда получаю одну и ту же ошибку. Я должен сказать, что заставить его работать на nvidia-docker2 проще. Я использовал xvfb, что-то вроде xvfb-run -a -s "-screen 0 1400x900x24 python run_car_racing.py, я также пробовал разные встроенные образы из openai и stable-baselines (например, link ), и все они терпят неудачу в docker-nvidia v1.

По сути, ошибка, которая всегда возникает при запуске CarRacing в контейнере, составляет

root/miniconda3/lib/python3.6/site-packages/numpy/core/fromnumeric.py:3118: RuntimeWarning: Mean of empty slice.
  out=out, **kwargs)
/root/miniconda3/lib/python3.6/site-packages/numpy/core/_methods.py:85: RuntimeWarning: invalid value encountered in double_scalars
  ret = ret.dtype.type(ret / rcount)
Process SpawnProcess-1:
Traceback (most recent call last):
  File "/root/miniconda3/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/root/miniconda3/lib/python3.6/multiprocessing/process.py", line 93, in run
    self._target(*self._args, **self._kwargs)
  File "/HRL/hrl/common/track_generator.py", line 17, in worker
    env.reset()
  File "/gym/gym/envs/box2d/car_racing.py", line 1543, in reset
    obs = self.step(None)[0]
  File "/gym/gym/envs/box2d/car_racing.py", line 1581, in step
    self._update_state(self.render("state_pixels"))
  File "/gym/gym/envs/box2d/car_racing.py", line 1609, in render
    from gym.envs.classic_control import rendering
  File "/gym/gym/envs/classic_control/rendering.py", line 23, in <module>
    from pyglet.gl import *
  File "/root/miniconda3/lib/python3.6/site-packages/pyglet/gl/__init__.py", line 239, in <module>
    import pyglet.window
  File "/root/miniconda3/lib/python3.6/site-packages/pyglet/window/__init__.py", line 1896, in <module>
    gl._create_shadow_window()
  File "/root/miniconda3/lib/python3.6/site-packages/pyglet/gl/__init__.py", line 208, in _create_shadow_window
    _shadow_window = Window(width=1, height=1, visible=False)
  File "/root/miniconda3/lib/python3.6/site-packages/pyglet/window/xlib/__init__.py", line 166, in __init__
    super(XlibWindow, self).__init__(*args, **kwargs)
  File "/root/miniconda3/lib/python3.6/site-packages/pyglet/window/__init__.py", line 571, in __init__
    self._create()
  File "/root/miniconda3/lib/python3.6/site-packages/pyglet/window/xlib/__init__.py", line 263, in _create
    self.context.attach(self.canvas)
  File "/root/miniconda3/lib/python3.6/site-packages/pyglet/gl/xlib.py", line 323, in attach
    self.set_current()
  File "/root/miniconda3/lib/python3.6/site-packages/pyglet/gl/xlib.py", line 328, in set_current
    super(XlibContext13, self).set_current()
  File "/root/miniconda3/lib/python3.6/site-packages/pyglet/gl/base.py", line 301, in set_current
    gl_info.set_active_context()
  File "/root/miniconda3/lib/python3.6/site-packages/pyglet/gl/gl_info.py", line 98, in set_active_context
    if self.have_version(3):
  File "/root/miniconda3/lib/python3.6/site-packages/pyglet/gl/gl_info.py", line 170, in have_version
    imajor, iminor, irelease = [int(v) for v in ver.split('.', 3)[:3]]
  File "/root/miniconda3/lib/python3.6/site-packages/pyglet/gl/gl_info.py", line 170, in <listcomp>
    imajor, iminor, irelease = [int(v) for v in ver.split('.', 3)[:3]]
ValueError: invalid literal for int() with base 10: ''

Есть идеи, как заставить его работать? или что я делаю не так? У меня нет возможности обновиться до nvidia-docker2

...