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
---html

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

說明:python

正文:linux

  • 說明:這裏記錄瞭如何在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, 及源碼git

  • 1.ubuntu18.04切換默認的python方法:
    • 連接: https://segmentfault.com/q/1010000003713912
    • 命令:github

      # 以下命令用來定義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好. http://www.javashuo.com/article/p-rdokfage-he.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

相關文章
相關標籤/搜索