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)
- 官網下載:https://developer.nvidia.com/rdp/cudnn-archive (需免費注冊nvidia會員)
- 釋放后做些拷貝和路徑設定就行,參考以上CUDA的神貼,較簡單.
-
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的版本的;
- N卡的驅動driver版本AAA.XX(比如390.xx),它配套CUDA,也就是說CUDA庫會說明需要drvier升級到何版本,一般xx不同沒關系,AAA最好一樣;
- 安裝依賴路徑: 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 //將循環依賴庫一並寫上就可!