強化學習Reinforcement Learning需要工具的配置,包括(mujoco、mujoco_py、gym、baselines)

配置流程

0.電腦配置情況

  網上有一些基本安裝流程,在此前提下,根據自己安裝以及遇到的問題,來總結下整個安裝步驟以及問題解決,也歡迎各位一同來交流學習強化學習。
  電腦系統ubuntu16.04,以下內容使用python3.5 (或python3.6),因此通過anaconda建立python3.5的環境。
  本文針對CS294的強化學習的前面要求,所以根據課程需要安裝以下配置。當然在使用強化學習RL的時候,這些工具也是很常用的。
  課程鏈接:[click here]
  這裏的anaconda安裝以及配置就不講了,如果需要請看我的另外有一篇文章:
Anaconda常用操作整理


接下來進入正題。

1.安裝Tensorflow

此步驟開始,建議配置conda環境,防止影響基本環境。

conda create -n mujoco python=3.5

# 可以根據我另外一篇,安裝一下tensorflow
# 主要是後面的baselines需要,也可以先不安裝
conda install tensorflow-gpu=1.12         # 這裏tensorflow可以選擇安裝版本

2.安裝mujoco150/200

注意:現在的mujoco-py的部分已經更新到v2.0了,可以將以下內容換成mujoco200,其他一樣。

MuJoCo(Multi-Joint dynamics with Contact)是一個模擬機器人,生物力學,圖形和動畫等領域的物理引擎。用於物理仿真分析,主要用於機器人領域的開發和研究。
  1)首先mojoco官網的上端菜單的License欄:[click here];
  包括:
    1.MuJoCo Trial License: 30 days;
    2.MuJoCo Personal License: 1 year;
  在校學生可以通過學校的Edu郵箱申請一年的使用權限。
在這裏插入圖片描述
申請學生版本的一年License,會在郵箱收到一串Account number;
這裏說明一下,發送之後,因爲是人工審覈,需要大概1-2個工作日以內收到,30天Trial版是立刻收到。
  2) 在License界面下載getid_linux,用於得到自己的電腦信息Computer id;

chmod +x getid_linux
./getid_linux 

  3) 等收到郵件後,將Computer id和Account number輸入License界面的以下位置,會受到另一封郵件,包含mjkey.txt;
在這裏插入圖片描述
  4) 下載軟件,由於cs294課程建議版本是150,這裏下載mjpro150 linux
(同樣最新版本地址:mujoco200 linux)
  5) 在home的目錄下,創建隱藏文件夾.mujoco,然後將安裝包解壓到此文件夾(也可以手動從下載位置複製到該目錄下);

mkdir ~/.mujoco
cp mjpro150_linux.zip ~/.mujoco
cd ~/.mujoco
unzip mjpro150_linux.zip

   6) 將前面郵件收到的mjkey.txt拷貝到.mujoco文件夾中;

cp mjkey.txt ~/.mujoco
cp mjkey.txt ~/.mujoco/mjpro150/bin

  然後添加環境變量:

gedit ~/.bashrc

  加入以下兩句到末尾:

export LD_LIBRARY_PATH=~/.mujoco/mjpro150/bin${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH}

這裏提醒一下:mujoc150版本的安裝爲mjpro150,而200的名字爲mujoco200,名字不一樣,所以添加到bashrc中的環境變量注意修改。

或者,需要安裝mujoco200的版本時,採用以下:

# mujoco200
export LD_LIBRARY_PATH=~/.mujoco/mujoco200/bin${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

  7) 以上mujoco安裝完成,測試如下:

cd ~/.mujoco/mjpro150/bin
./simulate ../model/humanoid.xml

在這裏插入圖片描述

3.mujoco_py

  1) 前面的建立的conda環境下操作

source activate mujoco
# 新版本爲 conda activate mujoco

  2) 接着下載官方的源碼

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

注意:現在的mujoco-py的部分已經更新到v2.0了(沒有關係的),一般使用問題不大,想用最新的需要將前面的操作更換一下版本(下載200版本的mujoco,並將前面介紹的所有150修改爲200)。

繼續使用1.50版本問題不大,因爲很多包都是基於150版本的,可以使用github更新2.0之前的最後一個版本,399a22b1384a078f8cd02d10486cff379cdf5985,使用前六位即可。
在下載完官方包之後,進入文件夾,使用git checkout 399a22,切換到以前的版本。

  3) 然後安裝mujoco_py,注意ubuntu16.04內部自帶安裝有python2.7和3.5的版本,採用pip3安裝,會導致把mujoco_py自動安裝到/usr/local/lib/python3.5/dist-packages目錄下,不方便使用。
這裏通過使用的是conda建立的環境,所以先進入創建的環境下,然後再通過pip安裝:

pip install -U 'mujoco-py<1.50.2,>=1.50.1'

# mujoco200
# pip3 install -U 'mujoco-py<2.1,>=2.0'

  4) 安裝到這裏可能會出現以下錯誤:
Notes{\color{Red} {Notes}}: 這裏出錯我遇到的是以下幾個方面,如果和你遇到的不一樣,請注意出現紅字Failed building wheel for mujoco-py上面一排的提示,確少什麼內容就安裝什麼內容,如下①中numpy和②中顯卡,③的gcc問題,④的patchelf問題。

  ①無法建立
在這裏插入圖片描述
這裏就需要安裝以下:

sudo apt-get install libglew-dev

當然這個環境沒有numpy,上面也提示了

conda install numpy

  ②顯卡驅動問題
在這裏插入圖片描述
這個錯誤根據提示就可以解決,需要向.bashrc中

gedit ~/.bahsrc

添加:

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia-390

  ③如果提示gcc錯誤,補充如下:

sudo apt-get install libgl1-mesa-dev libgl1-mesa-glx libosmesa6-dev

  ④出現error: [Errno 2] No such file or directory: 'patchelf': 'patchelf'
需要安裝

sudo apt-get install patchelf

  ⑤檢測安裝成功沒有(IDE可能無法識別到通過第三方pip安裝的這些包,解決方法見以下第5節)。
  此時建立一個python文件(mujocoTest),通過conda進入到mujoco環境後,cd到該文件目錄,在ubuntu的terminator中運行。

python mujocoTest.py

mujocoTest如下:

import mujoco_py
from os.path import dirname
model = mujoco_py.load_model_from_path(dirname(dirname(mujoco_py.__file__))  +"/xmls/claw.xml")
sim = mujoco_py.MjSim(model)
print(sim.data.qpos)
#[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
sim.step()
print(sim.data.qpos)
#[ 2.09217903e-06 -1.82329050e-12 -1.16711384e-07 #-4.69613872e-11
# -1.43931860e-05  4.73350204e-10 -3.23749942e-05 #-1.19854057e-13
# -2.39251380e-08 -4.46750545e-07  1.78771599e-09 -1.04232280e-08]

4.gym

gym安裝較爲簡單,可以參考官方方法:[click here]
  1) 這裏建議用以下方法來安裝完整版:
先進入上面建立的conda環境,確保所有包都安裝在該環境中。

git clone https://github.com/openai/gym.git
cd gym
---
apt-get install -y python-numpy python-dev cmake zlib1g-dev libjpeg-dev xvfb libav-tools xorg-dev python-opengl libboost-all-dev libsdl2-dev swig
pip install -e .[all]

  2) 和以上第三節一樣通過建立python文件,在terminator裏用指令運行該文件(需要先進入canda建立的mujoco環境)

import gym
env = gym.make('CartPole-v0')
for i_episode in range(20):
    observation = env.reset()
    for t in range(100):
        env.render()
        print(observation)
        action = env.action_space.sample()
        observation, reward, done, info = env.step(action)
        if done:
            print("Episode finished after {} timesteps".format(t+1))
            break

效果如下:
在這裏插入圖片描述
問題描述:這裏如果gym.make裏面的調用其他框架,無法實現預期時候,根據框架分別安裝相應的環境。
運行其他環境的時候,比如CartPole-v0,MountainCar-v0, MsPacman-v0等時,需要Atari 依賴;又或者Hopper-v1則需要mujoco 依賴。

# 進入到上述下載的gym文件夾下
cd gym
# 安裝Atari環境
pip install -e '.[atari]'
# 安裝棋盤類遊戲
pip install -e '.[board_game]'
# 安裝box2d控制類遊戲
pip install -e '.[box2d]'
# 安裝經典控制類遊戲
pip install -e '.[classic_control]'
# 安裝mujoco控制類環境
pip install -e '.[mujoco]'

5.baselines

安裝需要工具baselines [click here]:
根據前面幾節的情況,這裏同樣先進入建立的虛擬環境中。
Note:需要運行本文安裝的包時候,也需要先進入環境中

# 進入運行環境後,在安裝
source activate mujoco
git clone https://github.com/openai/baselines.git
cd baselines
pip install -e .

接下來測試安裝效果,使用pytest工具

pip install pytest
pytest

效果如下:
在這裏插入圖片描述

如果出現安裝baselines的問題時候,可以嘗試安裝以下:

sudo apt install libopenmpi-dev
sudo apt install mpich

6.IDE問題

 Pycharm部分

  1)通過使用pycharm,會發現在環境設置Project Interpreter中,添加conda建立的mujoco環境,運行以上測試代碼的時候,會無法識別到非conda install安裝,而是pip安裝的包。
切換在界面右上角:
在這裏插入圖片描述
在這裏插入圖片描述
然後在Python interpreter中切換自己的環境(我這裏的環境名字叫做gpu)

  2) 改變了環境之後,仍然不能像terminator中那樣正常的運行。
運行mujocoTest後會出現:(注意:以下[pc_name]替換成你自己電腦用戶名)

Missing path to your environment variable.  
Current values LD_LIBRARY_PATH= 
Please add following line to .bashrc: 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/[pc_name]/.mujoco/mjpro150/bin

根據以上提示將最後一行export添加到.bashrc中仍然不能解決。
所以嘗試其他方法,在查閱信息之後得到:pycharm可能添加conda的時候,可能無法識別第三方pip安裝的包。
多次嘗試後,得打解決辦法:通過在terminator中運行pycharm(建議),如下:
在這裏插入圖片描述

或者在安裝完以上所有需要的工具之後,重新安裝pycharm,即可。

  3) 在運行gym測試文件的時候出現:

AttributeError: module 'gym' has no attribute 'make'

  有的可能是沒有安裝好,比如在terminator中運行也出現這個,通過以下修復:

sudo apt install cmake libz-dev

  如果在terminator中運行沒有問題,而是根據以上(2)方法在pycharm中出現,可能是:python文件的名字命名爲(gym),導致無法識別,修改文件名即可。

 jupyter-notebook部分

  使用該軟件的用戶,不要在anaconda軟件界面中點擊install jupyter,會導致mujoco環境中的python以及其附帶包的版本改變,建議以下安裝方式:

conda install jupyter

  安裝的時候可以注意一下版本問題,右邊顯示爲py35則通過y安裝(以下圖示例爲我另一個環境,是python3.6的):
在這裏插入圖片描述

7.Berkeley CS294課程

  開始以上課程的時候,運行第一個作業(click here)的時候會出現錯誤
如下,下載完官方的homework1後,運行demo操作:

cd homework/hw1/
./demo.bash

  可能會出現如下問題:

Running trained model
Creating window glfw
ERROR: GLEW initalization error: Missing GL version
Press Enter to exit ...Killed

  需要向.bashrc中添加如下:

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

效果如下:
mujoco中展示

  完成後.bashrc中會添加如下依賴:(注意:以下[pc_name]替換成你自己電腦用戶名)

export PATH="$PATH:$HOME/bin"
export LD_LIBRARY_PATH=~/.mujoco/mjpro150/bin${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export MUJOCO_KEY_PATH=~/.mujoco${MUJOCO_KEY_PATH}

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/[pc_name]/.mujoco/mjpro150/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/nvidia-390
export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/libGLEW.so:/usr/lib/nvidia-390/libGL.so




參考資料:
[1]:http://rail.eecs.berkeley.edu/deeprlcourse/
[2]:https://github.com/openai/mujoco-py/issues/267
[3]:https://github.com/openai/gym/issues/535
[4]:https://blog.csdn.net/will_ye/article/details/81087463
[5]:https://blog.csdn.net/linyijiong/article/details/84382279
[6]:https://stackoverflow.com/questions/39604271/conda-environments-not-showing-up-in-jupyter-notebook

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章