在Ubuntu 18.04安裝tensorflow 1.12 GPU版本

僱個城管打天下發表於2018-12-13

在之前的深度學習中,我是在MAC上跑CPU版本的tensorflow程式,當資料量變大後,tensorflow跑的非常慢,在記憶體不足情況下,又容易造成系統崩潰,這個時候我覺得不應該浪費我的限制的微星遊戲本,便想著拿來跑深度學習的程式碼。

1. 配置資訊

我的老電腦配置如下:

  • CPU i5-4210M
  • 16G記憶體
  • GPU GTX 950M 視訊記憶體2G
  • 128G SSD
  • Ubuntu 18.04

這個配置一般,但是為了不讓我的mac發光發熱,同時體驗下GPU給深度學習的加速效果(雖然可能加不了多少速度)以及不想讓老電腦荒廢的心,我最終決定還是在上面安裝Ubuntu18.04跑TensorFlow了。

2. 選擇安裝所需軟體

TensorFlow官網中提到了需要安裝以下軟體才可以使用TensorFlow的GPU版本:

image

簡單來說就是我們需要在Ubuntu18.04的環境下安裝以下軟體:

  1. NVIDIA的GPU驅動(nvidia drive-390)

  2. CUDA 9.0(不要下載CUDA 10.0,因為TensorFlow 1.12.0目前只支援到CUDA 9.0)

  3. cuDNN v7.3.1 for CUDA 9.0 (選當前最新的)

至於CUDA和cuDNN是什麼自行谷歌,對應的下載頁面和地址如下:

3. 安裝NVIDIA驅動並降低gcc版本

cuda的官網 docs.nvidia.com/cuda/cuda-i… 安裝說明中已經列出了檢查步驟。如果你的GPU在支援列表中,則我們只需要做如下操作:

3.1 安裝GPU驅動程式。

Ubuntu在安裝後,是給了一個叫Nouveau預設內建的驅動程式。我們需要安裝GPU針對性的驅動程式,有篇文章教怎麼在Ubuntu上安裝合適的驅動:linuxconfig.org/how-to-inst…

簡單來說,執行 ubuntu-drivers devices 命令得到推薦的nvidia驅動程式,

然後執行 sudo apt-get install nvidia-driver-390 (根據提示的驅動程式而定)即可安裝完成。

注意安裝完成後需要重啟。

重啟完成後執行nvidia-smi,如果出現類似於下圖所示的資訊則說明驅動安裝成功:

image

3.2 安裝gcc-4.8和g++4.8

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++可執行同樣的操作。

4. 安裝CUDA和cuDNN

進入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*
複製程式碼

  這樣就安裝完成了。

5. 安裝pyenv

這裡我採用了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資料夾可能不存在,請自行新建。

image

pyenv的常用命令

image

上圖是官方文件中的例子,如果想要檢視完整命令列表,可以點選檢視pyenv命令列表

在終端執行pyenv global 3.6.5即可將3.6.5設定為系統預設的python環境

6. 安裝tensorflow-gpu

終端中輸入以下命令即可安裝:

pip install --index-url http://pypi.douban.com/simple --trusted-host pypi.douban.com --upgrade tensorflow-gpu
複製程式碼

7. 驗證結果

利用終端新建一個.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輸出資訊的正確結果

相關文章