强化学习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

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