Jupyter notebookでOpenAI Gymを動かすために,やったこと.
環境
CentOS7, Jupyter notebook(サーバー上,anaconda),notebookはssh接続でクライアントから操作.
##目的
- OpenAI GymのCartPole-v0を動作させ,アニメーション化する.
やったこと
- Nvidiaのドライバを「./NVIDIA-Linux-x86_64-XXX.XX.run --silent --no-opengl-files --no-libglx-indirect --dkms」でインストールする.(再インストールした,reboot必要)
- xvfbをインストールする(yum)
- pygletを導入する(pip) (100%必要かは不明)
- pipでインストールしたpygletで,pyglet/gl/init.pyの"del base"がNameErrorになるので削除(削除した影響については未調査だがせいぜいメモリ圧迫するぐらい?)
- Jupyterの起動を「nohup xvfb-run -s "-screen 0 1400x900x24" jupyter notebook &」とする
- あとは,OpenAI Gymの公式サイトのインストール方法に従う.
必要なかったこと
- (sshクライアント側)Xmingのインストール(GLXがないとかXを使うやらのエラーメッセージに騙されたが,そもそも必要ない)
OpenAI Gym(CartPole-v0)を動かすのにかかった時間
約7時間
動いたサンプルコード(CartPole-v0)
sample.py
import gym
from matplotlib import animation
from matplotlib import pyplot as plt
%matplotlib nbagg
env = gym.make('CartPole-v0')
# Run a demo of the environment
observation = env.reset()
cum_reward = 0
frames = []
for t in range(5000):
# Render into buffer.
frames.append(env.render(mode = 'rgb_array'))
action = env.action_space.sample()
observation, reward, done, info = env.step(action)
if done:
break
env.render(close=True)
fig = plt.gcf()
patch = plt.imshow(frames[0])
plt.axis('off')
def animate(i):
patch.set_data(frames[i])
anim = animation.FuncAnimation(fig, animate, frames = len(frames), interval=50)
anim
以上