安装 ubuntu16 系统及配置强化学习环境(gym, TensorFlow, CUDA)

Ubuntu下配置强化学习环境(gym, TensorFlow, CUDA)


检查BIOS设置里的SATA Control Mode

  重启电脑,开机时连续按F2进入BIOS,进入Configure选项,检查SATA Control Mode,如果默认是Inter RST Premium,说明windows是安装在RST模式下,而* Linux是需要安装在ACHI模式下 *,为避免安装完linux后双系统间的切换存在问题,将windows改为ACHI。具体操作如下:

  1. 不修改BIOS的模式(使用默认的RST,否则进入不了系统),进入windows系统 → 按键盘 win+r,输入msconfig,在引导 下,勾选 安全引导,点击确定,重启进入安全模式;

  2. 进入安全模式后,继续重启电脑(这一步只是为了检查是否能进win10的安全模式;

  3. 在启动界面开始是连续按F2,进入BIOS界面,在Configuration选项里将SATA Control Mode改为ACHI;在Security选项,将Secure Boot选为disablede;在Boot选项,确认Boot ModeUEFI,并且USB BootEnabledF10 保存退出,进入win10安全模式,此时选择“启动带网络连接的安全模式”,然后再重启;

  4. 进入win10后,按键盘 win+r ,输入msconfig,选择引导,取消勾选安全引导,点击确定,重启,此时能进入win10,表明win10系统的启动已从 RST 模式改为 ACHI 模式。

一. 安装ubuntu

  1. 制作U盘启动盘(不详细说明);
  2. 在win10下磁盘管理里压缩卷分出一个区域,我分出200G,用于ubuntu;
  3. 电脑重启,启动时连续按F12,选择U盘进行启动,按照提示进行安装(先不要联网,不要选择“安装中下载更新”以及“安装这个第三方软件”,安装类型选“其它选项”);
  4. 分区设置:
    找到在 win10 下压缩出的空闲空间(200G),点击 + 进行分区:

         efi系统分区 :逻辑分区,空间起始位置,EFI,540M(不低于300M)
        swap        :逻辑分区,空间起始位置,交换分区,8G(本子的内存是8G)
        /           :主分区,空间起始位置,EXT4,30G
        /home       :逻辑分区,空间起始位置,EXT4,剩下所有空间大概162G
  5. 安装启动引导器的设备:
    选择重新分出来的efi分区作为ubuntu的启动项,windows的efi分区不要动。
  6. 安装完成,此时ubuntu没有无线,解决如下:

    在终端敲入:

        $ rfkill list all

    会出现类似如下情况:

            0:ideapad_wlan: Wireless LAN
            Soft blocked: no
            Hard blocked:yes
    
            1:ideapad_bluetooth: Bluetooth
            Soft blocked: no
            Hard blocked: yes
    
            2:phy0: Wireless LAN
            Soft blocked: no
            Hard blocked:no
    
            3:hci0: Bluetooth
            Soft blocked: yes
            Hard blocked: no

      可以看到,优先级前的ideapad_wlan的Hard blocked 默认为yes,即ubuntu默认关闭了硬件wifi开关,而联想R720(我使用的本)的wifi只有软件开关,没有硬件开关的启动,所以引起了wifi无法开启的问题。

      因此,移出ideapad无线模块:

        $ sudo modprobe -r ideapad_laptop

      此时,wifi模块工作正常,但是每次重启ubuntu系统都要重新进行模块移出,故可将该命令设置为开机自启动。
    /etc/rc.local文件中添加命令:

        #!/bin/sh -e
        #
        # rc.local
        #
        # This script is executed at the end of each multiuser runlevel.
        # Make sure that the script will "exit 0" on success or any other
        # value on error.
        #
        # In order to enable or disable this script just change the execution
        # bits.
        #
        # By default this script does nothing.
        #因为使用的是非管理员登录,故在执行sudo命令时要输入密码,方可自动化执行,
        #此处假设用户密码为123,命令一定要在exit 0之前运行,该文件如果没有修改权限
        #修改前使用 chmod 命令修改权限即可!
        echo "123" | sudo modprobe -r ideapad_laptop
        exit 0

    开机启动后系统会自动执行改脚本文件,完成wifi模块的自动移出操作。

  7. 安装完毕,进入ubuntu后,最好执行下此命令:
    $ sudo apt-get update

二. 安装nvidia显卡驱动

  我的本是GTX1060的显卡,在NVIDIA官网(http://www.nvidia.cn/Download/Find.aspx?lang=cn)找到的是390.25版本的驱动,可下载下来安装,也在终端使用命令安装:

    $ sudo add-apt-repository ppa:graphics-drivers/ppa

  根据提示回车后继续

    $ sudo apt-get update
    $ sudo apt-get install nvidia-390
    $ sudo apt-get install mesa-common-dev
    $ sudo apt-get install freeglut3-dev

  查看显卡驱动:

    # 查看GPU型号
    $ lspci | grep -i nvidia

    # 看NVIDIA驱动版本
    $ sudo dpkg --list | grep nvidia-*

三. 下载安装cuda

  1. 在官网(https://developer.nvidia.com/cuda-90-download-archive)下载cuda9.0,
    下载的安装文件名为:cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb

  2. 根据官网安装提示进行安装

        1. $ sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
        2. $ sudo apt-key add /var/cuda-repo-<version>/7fa2af80.pub`
        3. $ sudo apt-get update`
        4. $ sudo apt-get install cuda`

    安装完成后设置环境变量:

        $  sudo gedit ~/.bashrc

    末尾添加:

        # added by cuda_9.0 installer  
        $ export PATH="/usr/local/cuda-9.0/bin:$PATH"  
        $ export LD_LIBRARY_PATH="/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH"

    然后更新:

        $ source ~/.bashrc
  3. 验证:

        $ cd /usr/local/cuda/samples/1_Utilities/deviceQuery
        $ sudo make
        $ sudo ./deviceQuery

      结果若显示 no CUDA-capable device is detected,继续第5步操作,若成功查询出设备表示已安装成功。

  4. 执行命令:

    $ nvcc -V

  根据结果的提示执行指令,好像是sudo apt-get install cuda-toolkit (记不清了,直接从nvcc -V 的结果提示拷贝即可),重新进行第三步验证,能成功查询设备表明安装成功。

四. 下载安装cuDNN

  下载cuDNN压缩文件,本机下载的是:cudnn-9.1-linux-x64-v7.tgz,其中9.1是指支持cuda9.1,也支持上节安装的cuda9.0 。

进入下载的文件目录:

    $  tar -xzvf cudnn-9.1-linux-x64-v7.tgz
    $  sudo cp cuda/include/cudnn.h /usr/local/cuda/include 
    $  sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
    $  sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

五. 更新系统

    $ sudo apt-get update && sudo apt-get upgrade
    $ sudo apt-get install linux-source
    $ sudo apt-get install linux-headers-`uname -r`

六. 下载安装tensorflow

通过以下其中一种方式安装即可:

1.通过源代码安装(待续…)

(1)下载tensorflow源码:

    $ git clone https://github.com/tensorflow/tensorflow

(2)Installing Bazel,网址
(https://docs.bazel.build/versions/master/install-ubuntu.html)

2.终端命令安装(python2 下安装很容易)
  安装完CUDA Toolkit和cuDNN后,使用pip安装Tensorflow

    $ sudo apt-get install python-pip python-dev 
    $ sudo pip install –upgrade pip 
    $ sudo pip install tensorflow-gpu 

3.下载安装(推荐)
  在网站(https://pypi.python.org/pypi/tensorflow-gpu)下载对应python版本的tensorflow.

  例如,下载的是tensorflow_gpu-1.6.0-cp27-cp27mu-manylinux1_x86_64.whl,其中cp27表示对应python2.7

  进入下载的目录,使用pip install 安装

    $ pip install --ignore-installed –upgrade tensorflow_gpu-1.6.0-cp27-cp27mu-manylinux1_x86_64.whl

   注意: 因为 ubuntu 默认安装了 python2.7 和 python3.5,默认情况下pip是指向的 python2.7 而 pip3 是指向 python3.5。因此第2步和第3步中,安装 python2.7 下的 tensorflow 就使用 pip,安装 python3.5 下的 tensorflow 就使用 pip3。


4.安装检查

    $ python
    >> import tensorflow as tf
    >> tf.__version__

  注意:如果是从本文攻略开始一直执行到此步骤,系统是没有装 anaconda 的,因此安装的 tensorflow (使用的sudo pip 安装)是安装在系统自带的 python2.7 下,即/usr/bin/python2.7/site-packages/tensorflow(可通过以下方式查看出 tensorflow 的安装路径)。

    $ python
    >> import tensorflow as tf
    >> tf.__path__

  因此如果调用的是系统自带的 python 解释器,就可以使用 tensorflow 。换言之,安装的 tensorflow 是作为 python 的第三方包安装的,使用 sudo pip install tensorflow-gpu是将其安装 python2.7 环境下(/usr/bin/python2.7/site-packages/)。

  如果安装了 anaconda ,终端下会调用 anaconda 下的 python 解释器,路径类似于这样/home/tl/anaconda2/lib/python2.7,但是 pycharm 软件可以对工程进行自行选择解释器,在界面的 File → settings → Project:<工程名> → Project Interpreter, 右侧可以选择 python 的解释器,选择解释器后下方会显示可用的第三方包。如果要用到 tensorflow ,则选择安装好 tensorflow 版本的解释器。

七. 下载安装 gym

  gym 主要是通过源码安装,在openAI的 Github 网站(https://github.com/openai/gym),根据 README 提示安装。如果安装完全体,依赖的第三方库 MuJoCo 需要 License。

1.安装 MuJoCo

(1) 根据网站(https://github.com/openai/mujoco-py#obtaining-the-binaries-and-license-key)下的 README 提示进行安装。
  因为用的 python2.7 环境,所以安装 0.5版本的

    $ pip install mujoco-py==0.5.7

(2) 下载mjpro131_linux(https://www.roboti.us/),将其解压到 ~/.mujoco/ 下,默认是没有这个目录的,自己创建

    $ cd ~
    $ sudo mkdir .mujoco
    $ cd < mjpro131_linux.zip 所在目录 >
    $ cp mjpro131_linux.zip ~/.mujoco
    $ cd ~/.mujoco
    $ unzip mjpro131_linux.zip

(3) 申请license,在该网站(https://www.roboti.us/license.html)填写资料申请,可申请免费试用30天的,也可通过高校邮箱申请学生版(免费使用一年)。
  把申请的 mjkey.txt 放到~/.mujoco/目录下和~/.mujoco/mjpro131/bin( mujoco_py 的初始化文件会在目录~/.mujoco/下找 mjkey 和 mjpro131 )。
  终端进入python,导入mujoco_py,如果没有报错,说明安装完成

    $ python
    >> import mujoco_py

2.安装 gym
(根据 README 提示进行)

(1) 安装依赖包:
然后下载源码

    $ sudo 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
    $ git clone https://github.com/openai/gym.git
    $ cd gym

(2) 打开 setup.py 文件,修改对应的 mujoco 版本号

    'mujoco': ['mujoco_py==0.5.7', 'imageio'],
    'robotics': ['mujoco_py==0.5.7', 'imageio']

(3) 安装

    $ pip install -e '.[all]'

(4) 测试安装

    $ python
    >> import gym
    >> env = gym.make('CartPole-v0')
    >> env.reset()
    >> env.render()

说明:gym 支持python2 和 python3 ,但是第三方库mujoco只支持 python3 , 这里安装的是支持 python2 的低版本的 0.5.7 , 这样处理只是为了能够成功安装 gym ,但是 gym 下 MuJoCo 和 Robotics 使用起来有点问题,可以运行 gym 下 readme 里 MuJoCo 和 Robotics 的实例,显示 mujoco_py 没有属性 ‘load_model_from_path’。

  考虑解决办法是环境全部建立在 python3 下,这样需要重新下载安装 Anaconda3 ,并安装 python3 下的 tensorflow-gpu ,然后重新安装 mujoco 和 gym 。

  最好对readme下每个库的实例都运行一遍,本机除了对mujoco依赖的库无法正常使用外,在运行box2d的月球登录的例子也出现问题,解决方法如下(根据环境选择其中一个方法):

(1)anaconda 环境下

    $ conda uninstall swig
    $ conda search swig
    $ conda install swig=3.0.2
    $ conda install -c https://conda.anaconda.org/kne pybox2d

(2) 默认python 环境下
(a) 下载swig3.0.2源代码,并进入下载目录

    $ tar -zxvf swig-3.0.2.tar.gz
    $ cd swig-3.0.2
    $ ./configure
    $ make
    $ sudo make install

(b) 安装 pybox2d

    $ git clone https://github.com/pybox2d/pybox2d
    $ cd pybox2d
    $ python2 setup.py build
    $ sudo python2 setup.py install

八. 其他

1. 安装anaconda

1)安装anaconda

  去清华源下载 anaconda(https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/) 安装文件。

  本机下载的是对应 python2.7 版本的 Anaconda2-5.1.0-Linux-x86_64.sh,进入到下载文件所在目录,执行

    $ bash Anaconda2-5.1.0-Linux-x86_64.sh

  根据提示选择,基本一直是yes,安装完成,关闭并重新打开一个终端,输入 conda -V 可查看版本。

2)安装 tensorflow

  说明:在第六节中已说明,tensorflow 是作为 python 的第三方包,而 anaconda 不是 python 的第三方包,是集成了很多第三方包在内的 python 解释器,安装完成被添加到环境变量中后,终端输入 python 会自动进入 anaconda 下的 python 环境。在终端输入 conda list 会查看当前 python 环境下的第三方包,可以看到是没有 tensorflow 的。因此需要对此 python 环境安装 tensorflow 。

(a)创建虚拟环境

    $ conda create -n tensorflow

(b)激活虚拟环境

    # 激活虚拟环境
    $ source activate tensorflow

    # 取消激活的虚拟环境
    $ source deactivate

(c)安装

    $ pip install tensorflow-gpu 

  重启一个终端,输入 conda list 可以看到有 tensorflow-gpu ,说明安装成功,也可以使用第六节第4部分的方法检查。

  更新:上述安装 tensorflow 的方式是创建虚拟环境,通过学习 conda 使用方式,conda 主要用来管理版本的问题,创建虚拟环境一般指定 python 版本,这样就可以用虚拟环境下的 python 版本来运行 .py 文件,例如系统装的是 python2.7 ,虚拟环境指定为 python=3.5 就可以运行其他人写的 python3.5 的程序文件。而上述过程没有指定 python 版本,因此可以认为不需要创建虚拟环境,直接运行第(c)步就可以安装好 tensorflow 。

2. 安装pycharm

1)添加源

    $ sudo add-apt-repository ppa:mystic-mirage/pycharm

2)选择下面其中一种进行安装

 (a) 安装收费的专业版:

    $ sudo apt update
    $ sudo apt install pycharm

 (b) 安装免费的社区版:

    $ sudo apt update
    $ sudo apt install pycharm-community

你可能感兴趣的:(ubuntu,强化学习)