2018-05-11-機器學習環境安裝-I7-GTX960M-UBUNTU1804-CUDA90-CUDNN712-TF180-KERAS-GYM-ATARI-BOX2D



layout: post
title: 2018-05-11-機器學習環境安裝-I7-GTX960M-UBUNTU1804-CUDA90-CUDNN712-TF180-KERAS-GYM-ATARI-BOX2D
key: 20180511
tags: 機器學習 cuda cudnn tensorflow gym
modify_date: 05-11

機器學習環境安裝-I7-GTX960M-UBUNTU1804-CUDA90-CUDNN712-TF180-KERAS-GYM-ATARI-BOX2D

說明:

正文:

  • 說明:這里記錄了如何在ubuntu最新環境安裝機器學習的主要環境的方法和嘗試過程。

機器學習環境安裝全家桶

ubuntu18.04環境安裝CUDA+CUDNN+TF

  • 1.查看nvidia顯卡配置

  •   # 查看N卡GPU的配置
      nvidia-smi
      # 查看N卡的圖形界面配置
      nvidia-settings 
      # 命令:查看nvidia卡型號;
      $ lspci | grep -i nvidia
      # 返回內容: 01:00.0 VGA compatible controller: NVIDIA Corporation GM107M [GeForce GTX 960M] (rev a2)
    
  • 2.安裝cuda的折騰過程

    • 神貼/好帖: http://www.zhimengzhe.com/bianchengjiaocheng/qitabiancheng/415560.html
    • 過程簡述:
      • 首先嘗試記憶中GTX960M顯卡只能支持的最高CUDA6+CUDNN5的組合配置安裝;
      • 官網查了硬件型號,匹配的就是CUDA6+CUDNN5,因為CUDNN是神經網絡NN加速庫,主要看cuda;
      • 但很快發現tf官網說即將最低支持cuda8,這怎么辦???
      • 查帖子發現也有人在GTX960M上安裝CUDA8,所以猜測:只要N卡安裝上驅動driver,而driver版本關聯到CUDA,cuda關聯到cudnn,tf也關聯CUDA版本,大膽猜測是這個邏輯;
      • 按照以上邏輯,貪心下載了CUDA9.1,越到了安裝問題,解決后發現TF不支持,慘;
      • 找貼發現可以安裝多個CUDA版本,只要路徑配置得當就行了,不像WIN系統有個黑盒子注冊表!
      • 查了TF的GITHUB管網的release里面1.8.0等最新幾個release-note信息,並查關鍵字CUDA,發現只支持到CUDA9.0;於是下決心安裝它;
      • NVIDIA官網不用注冊就能隨意下載CUDA(但CUDNN需要注冊下載),速度都很快,於是下載runfile(目前發現,我忘記安裝patch補丁,只安裝了CUDA9.0的主程序,目前也能用!)
      • 按照上述神貼方法,考慮到ubuntu18.04已經將GTX960M的顯卡升級到最新的390的drvier驅動,而且神貼說只要driver版本接近(帖子說AAA.BB小版本BB可以不一樣),但我發現CUDA9.0只支持到387,和390很接近,大膽嘗試,居然安裝上去了.主要安裝CUDA9.0的時候不要第一步就安裝它自帶的才387的driver顯卡驅動,否則顯卡驅動的安裝將極其復雜!
      • 順利安裝完CUDA9.0,按提示和神貼設定路徑,然后注冊NVIDA官網,下載配套CUDNN712,並同樣runfile安裝,並參考另外帖子(下面詳述)復制文件和做鏈接及path等;
      • 最后pip3 install tensorflow-gpu
      • 需要keras的就pip3 install tensorflow-gpu
  • 3.安裝cuda9.1/CUDA9.0/CUDA較高版本(cuda安裝包提示最高支持ubuntu17.10,別管它,其實我18.04照樣安裝!沒事!)

  A.執行cuda9.X的run安裝文件出現問題

    Error: unsupported compiler: 7.3.0. Use --override to override this check.
    sudo sh ./cuda_9.1.85_387.26_linux.run --override   //添加這個參數來屏蔽這個報錯! 於是可以繼續安裝了! 看到如下結果,基本OK.

= Summary =
===========

Driver:   Not Selected
Toolkit:  Installed in /usr/local/cuda-9.1
Samples:  Installed in /home/ya/cuda9-samples

Please make sure that
 -   PATH includes /usr/local/cuda-9.1/bin
 -   LD_LIBRARY_PATH includes /usr/local/cuda-9.1/lib64, or, add /usr/local/cuda-9.1/lib64 to /etc/ld.so.conf and run ldconfig as root

To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-9.1/bin

Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-9.1/doc/pdf for detailed information on setting up CUDA.

WARNING: Incomplete installation! This installation did not install the CUDA Driver. A driver of version at least 384.00 is required for CUDA 9.1 functionality to work.
To install the driver using this installer, run the following command, replacing <CudaInstaller> with the name of this run file:
    sudo <CudaInstaller>.run -silent -driver

Logfile is /tmp/cuda_install_13322.log
Signal caught, cleaning up

---------------------


  B 設定配置(參照上面提示)

$ sudo vim /etc/profile
在打開的文件末尾,添加以下兩行。

64位系統:
$ export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} 

32位系統:
$ export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
$ export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

  C 安裝完畢CUDA9.x,還需安裝如下lib

sudo apt-get install freeglut3-dev build-essential libx11-dev libxmu-dev libxi-dev libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

  D 最后reboot,並用如下命令測試,看是否安裝CUDA9.X正確

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2017 NVIDIA Corporation
Built on Fri_Nov__3_21:07:56_CDT_2017
Cuda compilation tools, release 9.1, V9.1.85
  • 4.安裝cudnn7.1.2(配套CUDA9.X)

  • 5.安裝TF-CUDA-CUDNN經驗

    • 首先,目前GPU做的最好的是N卡(NIVIDA顯卡),不僅硬件好,驅動,CUDA平台,CUDNN神經網絡加速庫都好,遠超其他顯卡;目前其他顯卡無法加速神經網絡!!!
    • 其次,你有幸買了N卡,且准備搞深度學習,最著名的開源框架TF(Tensorflow),Pytorch,以及高級庫keras等等,一般都支持CUDA/CUDNN,先選其一學習吧;
    • 再則,有了N卡,比如我的GTX960M(游戲本的,但是不打游戲),關鍵是配套驅動driver要不斷升級,比如跟着ubuntu18.04,最新升級到了390.xx的版本;
      • N卡的驅動driver版本AAA.XX(比如390.xx),它配套CUDA,也就是說CUDA庫會說明需要drvier升級到何版本,一般xx不同沒關系,AAA最好一樣;
        • 筆者經驗:AAA相差小的沒關系,而且新的driver一般向下兼容,舊的AAA就必須升級了;(如果上N卡官網查你的硬件比如GTX960M,它自動匹配的CUDA很低,不要信!否則絕望!)
      • CUDNN是配套cuda的版本的;
      • TF也是配套cuda的版本的;
    • 安裝依賴路徑: GTX960M-->DRIVER FOR UBUNTU18.04(390.XX) -->CUDA9.0(9.X)-->CUDNN7.1.2/TF1.8.0-->KERAS
      • TF馬上最低支持cuda8.0了,請盡快升級driver,以便升級到cuda8/9/..,來使用配套的TF/CUDNN,老硬件N卡照樣用!
    • 這里僅僅是我這種硬件軟件配置的成功案例,供看管參考,不代表原理和其他軟硬件配置都能成功,還需嘗試!!!
      • 另外,我CUDA的幾個patch忘記安裝了,估計是它修改兼容性和BUG的,目前不出其他問題,我就不安裝了,怕有問題;

ubuntu18.04環境安裝OpenAI的GYM的強化學習環境

  • 1.安裝GYM環境

    • 通常做法,用命令: pip3 install gym[all] //這里假設ubuntu已經安裝升級了python3和pip3,且按照上述方法切換默認python為PY3而不是PY2;
    • 問題:一般你會遇到結果提示,Box2D和atari-py安裝失敗,重復上述命令,再次安裝全部gym[all],就更清晰的看到只有此2模塊沒有安裝成功(和win10一致);
  • 2.安裝swig

    • 如上述2個模塊安裝失敗,發現一個錯誤是沒有swig,和win10一樣,到官網下載對應的swig版本,win10下是exe(能成功),ubuntu用命令(能成功);
    • sudo apt-get install swig
    • swig鏈接:http://www.swig.org/download.html
  • 3.安裝gym的Box2D-kengz的物理引擎

    • gym是個全家桶,里面包含了多種物理引擎Box2D等,游戲環境Atari等,是個用於研發和調測強化學習RL的好環境;
    • 先再次安裝,改個名字: pip3 install gym[Box2D] //單獨命令安裝Box2D,而不是all,也不是原來過時的Box2D-kengz
    • 安裝成功后,如下測試:
測試Box2D物理引擎是通過激活如下的小游戲CartPole:

用如下命令來測試Box2D是否安裝成功,如果失敗,只會出現白框,而沒有桿子!
python //進入python,最好是PY3
import gym  //load gym庫,這里不能有報錯
env = gym.make("CartPole-v0")  //新建一個樹立桿子的游戲環境
env.reset() //初始化
env.render()  //渲染,此時會彈出dialog,里面有桿子!就算OK了!
env.close()  //關閉env環境,dialog不能被gui關閉,只能用本行命令關閉!

  • 4.安裝gym的Atari-py的小游戲強化環境集合
    • 單獨安裝: pip3 install gym[atari-py] //報錯一樣,顯示可能cmake有問題(win10下就需要安裝MingGW等環境,最終沒時間弄下去)
    • 安裝cmake: sudo apt-get install cmake //cmake是ubuntu操作系統lib庫,不是python庫,所以用apt而不是pip3來安裝;
    • 然后再安裝atari-py: pip3 install gym[atari] //成功
    • 如果報錯如下,請進入該報錯提示的目錄,需要額外手動生成缺漏的so文件,src源碼在atari該目錄,進入該目錄直接make就能生成!
      • OSError: /home/ya/atari-py/atari_py/ale_interface/build/libale_c.so: cannot open shared object file: No such file or directory
      • 請進入/home/youraccount/atari-py/atari_py/ale_interface/ //此時沒有build目錄和文件libale_c.so
      • 在該目錄看到了makefile文件和src目錄,猜測是沒有編譯出so文件!
      • 在該目錄直接運行命令make,它自動編譯同目錄的makefile編譯編輯腳本,於是so文件有了,再次測試!!!通過了!!!
      • atari 安裝完成!!!!
測試:
python //進入python,最好是PY3
import gym  //load gym庫,這里不能有報錯
env = gym.make("SpaceInvaders-v0")  //新建一個打飛機游戲環境(這里可能會報錯如下!!!)
env.reset() //初始化
env.render()  //渲染,此時會彈出dialog,里面有飛機!就算OK了!
env.close()  //關閉env環境,dialog不能被gui關閉,只能用本行命令關閉!
  • 5.運行RL強化學習的例子
    • 強化學習RL很有趣,最近在學習,看了一些morvan的教程(github查找關鍵字"morvan"得到的第一個結果)
    • 跑一個普通RL例子,雖然import里面不需要純python的圖形庫tkinter,但是matplotlib著名py的畫圖庫需要,則要做如下安裝:
      • 安裝tkinter: sudo apt install python3-tk //特別注意,不是 sudo apt install python-tk!!!

ubuntu18.04環境實用經驗

  • 請參考持續收集的項目computer-using-hints, 及源碼

  • 1.ubuntu18.04切換默認的python方法:

    • 鏈接: https://segmentfault.com/q/1010000003713912
    • 命令:
      # 如下命令用來定義2種python
      sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100     
      sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150
      
      # 如下命令用來切換
      sudo update-alternatives --config python
      
  • 3.ssh登錄ubuntu18.04

    • 原理:默認ubuntu系統安裝后有ssh,而沒有sshd,所以其他服務器要通過ssh鏈接ubuntu需要如下
      安裝指導:https://jingyan.baidu.com/article/359911f5a5b74857fe0306c4.html
      首先看看自己的Ubuntu是不是已經安裝或啟用了ssh服務,執行ps -e |grep ssh
      如果只有ssh-agent 這個是ssh-client客戶端服務,如果沒有sshd,繼續如下安裝ssh-server
      安裝sshd: 
      sudo apt install openssh-server
    
      手動操作開啟/關閉ssh服務相關命令:
      sudo service ssh start #手動啟動服務
      sudo service ssh stop #手動關閉服務
      sudo service ssh status #查詢服務狀態
    
  • 6.安裝pycharm

    • 先下載免費社區版本的pycharm,然后執行bin下面的pycharm.sh腳本就啟動了圖形界面(pycharm.sh)
    • 其次參照如下鏈接,配置Project Interperter;因為一般有多個python,比如pycharm自帶,ananconda如果你安裝了,系統的python3或2如果你安裝了,我選系統python3作為解析其),你選了哪個,pycharm會自動探測其依賴庫的更新,一般ananconda好. https://www.cnblogs.com/fanmu/p/8010580.html
  • 7.解決apt-get循環依賴而無法安裝lib庫的問題

    • 問題:遇到ubuntu系統中使用apt-get來安裝某個lib庫,但是A依賴B,C;B依賴D;D依賴A,E,這樣循環依賴,沒法單獨安裝每個lib庫;
    • 解決:其實只要你sudo apt-get install A,B,C,D,E //將循環依賴庫一並寫上就可!

END


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM