1. 程式人生 > >Miniconda + OpenAI Gym + MuJoCo + Tensorflow-gpu

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中的示例,效果還不錯喲~

        最後仍舊祝大家週末愉快~