Miniconda + OpenAI Gym + MuJoCo + Tensorflow-gpu

引子

        大家好,最近因为实验需要,得搭好一个机械臂的强化学习仿真环境。在去年我基于Ros + Gazebo搭过一个baxter机器人的强化学习环境,但是为了能够与别人的baseline进行对比,所以现在我准备使用OpenAI Gym新发布的Fetch机械臂环境。

环境配置

        我的环境配置如下:

  • Ubuntu 14.04
  • Miniconda 3 + Python 3.5.4
  • CUDA 8.0.61
  • cuDNN 6.0
  • TensorFlow 1.4.0-gpu
  • MuJoCo 1.50.1.56
  • Gym 0.10.5
  • Baselines 0.1.5

        其中TensorFlow使用1.4.0-gpu版本的原因是为了安装Baselines,具体可以查看baselines/setup.py文件。此外,为了更好地使用Baselines的代码,我们需要安装Python 3.5以上的版本,这里我们采用Python3.5(在尝试Python3.6的过程中,出现了一些错误,所以不建议使用Python3.6)。

安装

安装Miniconda

        首先,我们安装Miniconda,具体可以参考《浅说Anaconda》,值得注意的是,我们选择的是Miniconda 3,别装错了~

        装好Miniconda之后,我们创建一个baselines_RL环境:

$ conda create -n baselines_RL python=3.5.4

        

安装配置CUDA + cuDNN

        这一步大家可以参考简书《安装配置Ubuntu14.04 + CUDA8.0 + cuDNN v5 + caffe》,只需要配置好CUDA 8.0和cuDNN v6即可,注意注意,一定要安装v6或以上版本的cuDNN,因为TensorFlow 1.3.0及以上版本至少需要v6的cuDNN。网上的CUDA 8.0 + cuDNN v5一般都是安装的TensorFlow 1.2.0。另外,大家也可以参考《Ubuntu16.04安装Cuda、OpenCV方法》。

安装Gym + MuJoCo

        主要分为三步:

  1. 安装MuJoCo;
  2. 安装mujoco-py;
  3. 安装gym。

        我们先安装MuJoCo,在下载网址上选择mjpro150 linux,下载之后,解压到~/.mujoco下。同时在申请试用版申请一个license(学生可以用学校邮箱申请一年)。先下载网站上提供的getid_linux,用sudo chmod +x 添加可执行权限后运行得到本机id,填写到申请页面,此时将收到包含mjkey.txt的邮件,下载放置于~/.mujoco目录下。最后打开~/.bashrc,并加入下面的语句:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/(username)/.mujoco/mjpro150/bin

        全部完成之后,尝试运行bin中的simulate看是否正常。

        安装完成MuJoCo之后,我们可以下载OpenAI公司开发的MuJoCo Python连接件,即mujoco-py:

$ git clone https://github.com/openai/mujoco-py

        进入baselines_RL环境:

$ source activate baselines_RL

        然后在mujoco-py文件夹下执行下面的命令:

$ sudo /path-to-baselines_RL/bin/pip install -r requirements.txt
$ sudo /path-to-baselines_RL/bin/pip install -r requirements.dev.txt
$ sudo python3 setup.py install

        这样我们就安装好了mujoco-py,最后安装gym即可:

$ sudo /path-to-baselines_RL/bin/pip install gym

        需要注意,这里并不是pip3,因为在conda中,直接在某个环境(如baselines_RL)运行pip时就是是用的这个环境的Python版本对应的pip,用which pip可以发现它对应的就是Python3。

        为了后面能够更方便地使用mujoco-py,我们需要在~/.bashrc中添加下面的语句:

export PYTHONPATH=$PYTHONPATH:/home/(username)/.../mujoco-py

        其中省略号需要我们自己按照自己的路径进行填写。

        同样地,我们可以对此进行测试。在baselines_RL中,进入到Python交互环境下:

>>> import mujoco_py

        如果报错:“command ‘gcc’ failed with exit status 1”,则修改mujoco-py/mujoco_py/gl/eglshim.c文件的第159行,将:

for (int device_id=0; device_id<MAX_DEVICES; device_id++){

        改为:

int device_id;
for (device_id=0; device_id<MAX_DEVICES; device_id++){

        再次尝试对mujoco-py进行导入即可。

        我们可以对gym进行整体测试:

>>> import gym
>>> env = gym.make('HalfCheetah-v2')
>>> env.reset()
>>> for _ in range(100):
>>>     env.render()
>>>     env.step(env.action_space.sample())

        如果报错:“ERROR: GLEW initialization error: Missing GL version”,则可以在~/.bashrc中添加:

export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so:/usr/lib/nvidia-375/libGL.so

        其中“nvidia-375”需要我们自己去文件夹下寻找对应版本。

安装TensorFlow GPU

        我们前面说过,Baselines要求的TensorFlow版本为>=1.4.0,这里我们选择的是1.4.0,因为前面我们装的是CUDA 8.0 + cuDNN v6。如果大家想要安装tensorflow 1.6.0的话,可以安装对应的CUDA 9.0 + cuDNN v7。

        因为在安装Baselines的时候,将会自动去查找是否已经安装了对应版本的TensorFlow,所以我们这里就不自己安装了。

安装Baselines

        Baselines的安装比较简单:

$ git clone https://github.com/openai/baselines.git

        将代码下载到envs/baselines_RL文件夹下,cd到baselines中,先修改setup.py,将其中的“tensorflow>=1.4.0”改为“tensorflow-gpu==1.4.0”。如果不修改的话,将安装最新版本1.7.0的tensorflow。当然,大家可以按照自己的需要进行修改。

        修改完成之后,执行:

$ sudo /path-to-baselines_RL/bin/pip install .

        即使用我们的baselines_RL环境下的pip进行安装。注意,这里不能使用:

$ sudo pip install .

        因为这样的话,将使用/usr/bin/pip,大家如果有兴趣的话可以使用“sudo which pip”进行验证。

        验证TensorFlow GPU版本的安装:

import tensorflow as tf
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))

        如果显示有GPU的“Device mapping”,则安装成功。

        大家可以尝试着运行Baselines中的示例,效果还不错哟~

        最后仍旧祝大家周末愉快~




猜你喜欢

转载自blog.csdn.net/u013745804/article/details/80022051