在以前的深度學習中,我是在MAC上跑CPU版本的tensorflow程序,當數據量變大後,tensorflow跑的很是慢,在內存不足狀況下,又容易形成系統崩潰,這個時候我以爲不該該浪費個人限制的微星遊戲本,便想着拿來跑深度學習的代碼。python
個人老電腦配置以下:linux
這個配置通常,可是爲了避免讓個人mac發光發熱,同時體驗下GPU給深度學習的加速效果(雖然可能加不了多少速度)以及不想讓老電腦荒廢的心,我最終決定仍是在上面安裝Ubuntu18.04跑TensorFlow了。git
TensorFlow官網中提到了須要安裝如下軟件纔可使用TensorFlow的GPU版本: github
簡單來講就是咱們須要在Ubuntu18.04的環境下安裝如下軟件:sql
NVIDIA的GPU驅動(nvidia drive-390)ubuntu
CUDA 9.0(不要下載CUDA 10.0,由於TensorFlow 1.12.0目前只支持到CUDA 9.0)bash
cuDNN v7.3.1 for CUDA 9.0 (選當前最新的)curl
至於CUDA和cuDNN是什麼自行谷歌,對應的下載頁面和地址以下:ionic
CUDA 9.0 developer.nvidia.com/cuda-toolki…ide
cuDNN 7.3.1 developer.nvidia.com/rdp/cudnn-a… 注意cuDNN下載前須要註冊登陸
cuda的官網 docs.nvidia.com/cuda/cuda-i… 安裝說明中已經列出了檢查步驟。若是你的GPU在支持列表中,則咱們只須要作以下操做:
Ubuntu在安裝後,是給了一個叫Nouveau默認內建的驅動程序。咱們須要安裝GPU針對性的驅動程序,有篇文章教怎麼在Ubuntu上安裝合適的驅動:linuxconfig.org/how-to-inst… 。
簡單來講,執行 ubuntu-drivers devices
命令獲得推薦的nvidia驅動程序,
而後執行 sudo apt-get install nvidia-driver-390
(根據提示的驅動程序而定)便可安裝完成。
注意安裝完成後須要重啓。
重啓完成後執行nvidia-smi
,若是出現相似於下圖所示的信息則說明驅動安裝成功:
sudo apt-get install gcc-4.8
ll /usr/bin |grep gcc #若存在高版本的gcc,則繼續
cd /usr/bin
sudo mv gcc gcc.bak #備份
sudo ln -s gcc-4.8 gcc #從新指向
複製代碼
執行gcc --version
可檢查是否爲4.8版本,g++可執行一樣的操做。
進入CUDA9.0的下載頁,選擇安裝類型爲runfile(local),可發現有一個基礎安裝包,和三個補丁包,都下載下來,而後依次執行:
sudo sh cuda_9.0.176_384.81_linux.run
複製代碼
安裝時會以提問的方式,一路默認便可,當第二個詢問是否安裝新驅動程序時,選擇否,其他均是yes。而後再以一樣的方式安裝如下補丁包。
sudo sh cuda_9.0.176.1_linux.run
sudo sh cuda_9.0.176.2_linux.run
sudo sh cuda_9.0.176.3_linux.run 
複製代碼
結束後,能夠在/usr/local/cuda-9.0 發現有安裝文件,執行sudo gedit /etc/profile
或者sudo gedit ~/.bashrc
在/etc/profile
或~/.bashrc
的文件後面添加環境變量:
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}}  
複製代碼
而後執行source ~/.bashrc
或者source /etc/profile
讓剛剛修改的環境變量生效。而後執行nvcc -V
來驗證CUDA是否完成安裝。
安裝好CUDA9.0後,接下來就安裝cuDNN,進入cuDNN下載頁選擇 cuDNN v7.3.1 Library for Linux 下載。
執行以下命令:
tar -xzvf cudnn-9.0-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*
複製代碼
這樣就安裝完成了。
這裏我採用了pyenv的方式來隔離不一樣環境下的python。
首先安裝curl,它一個命令行式的下載工具
sudo apt install curl
複製代碼
而後下載pyenv的安裝包,pyenv的GitHub連接:pyenv
curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash
複製代碼
編輯~/.bashrc
:
sudo gedit ~/.bashrc
複製代碼
在該文件中添加如下內容(直接複製便可):
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"</pre>
複製代碼
終端執行如下命令安裝python的依賴包
sudo apt-get update
sudo apt-get install make build-essential libssl-dev zlib1g-dev
sudo apt-get install libbz2-dev libreadline-dev libsqlite3-dev wget curl
sudo apt-get install llvm libncurses5-dev libncursesw5-dev
複製代碼
安裝python 3.6.5
pyenv install 3.6.5
複製代碼
安裝過程可能很緩慢,一個簡便方法,只須要在python的官網(此處給出python3.6.5的下載地址)下載你須要的python版本的tar.xz
文件而後放到 ~/.pyenv/cache
中而後再執行pyenv install [version]
就能夠了,cache文件夾可能不存在,請自行新建。
pyenv的經常使用命令
上圖是官方文檔中的例子,若是想要查看完整命令列表,能夠點擊查看pyenv命令列表
在終端執行pyenv global 3.6.5
便可將3.6.5設置爲系統默認的python環境
終端中輸入如下命令便可安裝:
pip install --index-url http://pypi.douban.com/simple --trusted-host pypi.douban.com --upgrade tensorflow-gpu
複製代碼
利用終端新建一個.py文件
touch test.py
複製代碼
而後利用Visual Studio Code打開該文件
code test.py
複製代碼
輸入
import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))
複製代碼
而後執行該腳本python test.py
便可獲得包含有GPU輸出信息的正確結果