天天看點

Ubuntu16.04利用pyenv和Anaconda安裝TensorFlow-gpu以及Keras

配置說明

Ubuntu 16.04, NVIDIA GTX 1060

搭建目标

CUDA 8.0, cuDNN 5.1, Tensorflow-gpu(本文目前隻是1.2,浏覽TensorFlow官網擷取其他版本。注意與CUDA和cuDNN對應), Keras

做任何操作之前請看文章大綱!

接下來會做什麼?

  • pyenv安裝以及常見指令
  • 安裝Anaconda
  • 安裝GPU驅動以及裝載CUDA
  • 設定cuDNN
  • 建立環境安裝TensorFlow-GPU
  • 安裝Keras
  • Keras demo
  • 常見問題清單

pyenv安裝以及常見指令

首先介紹pyenv是什麼東西?可以簡單了解為一種能夠管理多種python環境友善我們不同需求下運作不同的python并且全局設定。具體詳情可以參見pyenv-github

1. 安裝git

$ sudo apt-get install git #安裝git
$ git --version #檢查版本以及确認已經成功
           

2. 開始裝pyenv

$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv #下載下傳源檔案
$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc  #定義PYENV_ROOT
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc #定義PYENV_ROOT
$ echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n  eval "$(pyenv init -)"\nfi' >> ~/.bashrc  #pyenv init
           

重新開機終端即可。

3. 檢視可安裝清單

4. 安裝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
           

安裝Anaconda

Anaconda是專門為了科學計算所封裝的常用的python的資料包例如(numpy…) 其主要内容請Anaconda參考官網,考慮到國内網速比較慢甚至可能會導緻中途失敗,以下均用清華鏡像 tuna(以下參考下載下傳Anaconda3-5.1.0-Linux-x86_64.sh 備用)

$ cd  ~/.pyenv #進入.pyenv配置檔案中
$ sudo mkdir cache #建立cache檔案夾(預設沒有)
$ cp Anaconda3--Linux-x86_64.sh ~/.pyenv/cache #通過cp指令 将xxx.sh檔案copy到cache下
$ pyenv install anaconda3- #安裝 預設會掃描cache目錄下面的檔案 是以可以快速安裝
$ pyenv rehash # 重新整理
           

參考常用指令

$ pyenv versions #檢視本地的Python版本
$ pyenv install --list #檢視可安裝的清單
$ pyenv install xxxx #安裝xxx
$ pyenv uninstall xxxx #解除安裝xxx
$ pyenv global 環境名稱 # 設定全局Python環境版本
$ pyenv local 環境名稱 # 設定本地shell的Python環境版本
# ps:其他指令請輸入pyenv或者查詢官方手冊檢視
           

安裝GPU驅動以及裝載CUDA

1. 解除安裝原有驅動(針對之前有驅動的情況)

$ sudo apt-get remove --purge nvidia*
$ sudo chmod +x *.run #賦給.run運作的權限
$ sudo ./NVIDA-Linux-x86_64-.run --uninstall #具體版本參考自己的GPU型号去官網查詢
           

2. 禁止nouveau驅動

$ sudo gedit /etc/modprobe.d/blacklist.conf
# 将下面的兩句話加入這個配置檔案中儲存
blacklist nouveau
options nouveau modeset= 
           

修改後執行

sudo update-initramfs -u

重新開機電腦後,輸入

lsmod | grep nouveau

。如果螢幕沒有任何資訊輸出,說明禁止成功。

3.禁止X-windows服務

$ sudo service lightdm stop #會關閉圖形化界面
# 然後Ctrl + Alt + F1 切換到到指令行界面 然後利用賬戶和密碼登入
           
Tips: sudo service lightdm start 開啟 Ctrl + Alt + F7 即可以切換回去。

4. 指令行驅動安裝

一直看着提示安裝,如果出現錯誤(32bit 相容…)忽略不計,或者多次反複安裝即可。

驅動測試
$ nvidia-smi #會顯示出本機安裝的驅動清單 有提示就行了。
# or
$ nvidia-settings #彈出NVIDIA對話框即可
           

5. 安裝CUDA

首先官網下載下傳好對應的.run檔案 詳情請看nvida CUDA

然後根據提示進行安裝 以下是我的選擇

$ accept #同意安裝
$ n #不安裝driver,之前已經裝載最新驅動
$ y #安裝CUDA toolkit
$ <Enter>
$ <Enter>
$ y #允許建立目錄
$ y #允許複制/Sample
           
測試CUDA Sample

編譯以及測試deviceQuery

$ cd /usr/local/cuda-/samples/Utilities/deviceQuery
$ sudo make
$ ./deviceQuery
           

編譯以及測試bandwidthTest

$ cd ../bandwidthTest
$ sudo make
$ ./bandwidthTest
           

如果兩個的結果均為 Result = PASS,說明到現在我們已經完成了CUDA的安裝

設定cuDNN

這裡的主要工作是關關聯态連結。

下載下傳cuDNN 需要先注冊賬戶

首先我們需要下載下傳相應的cuDNN,我這裡下載下傳的是

cuDNN v5.1 Library Linux

即cudnn-8.0-linux-x64-v5.1.tgz,其他請參考官網cuDNN版本庫

由于我安裝發現在我的

`/usr/local/

下會出現cuda以及

cuda-8.0

,是以我建議下面的操作兩個都需要試試(視情況而定)。

解壓下載下傳的

cudnn

得到

cuda

這個檔案夾并且進入進行一下操作

$ sudo cp include/cudnn.h /usr/local/cuda(需要後面都替換為cuda-,後面都需要做兩次)/include/ #複制頭檔案
$ sudo cp lib64/* /usr/local/cuda/lib64/
$ cd /usr/local/cuda/lib64
$ sudo ln -sf libcudnn.so.. libcudnn.so. #這裡生成軟連結 根據自己下載下傳cudnn版本不同 其數字會有所不同
$ sudo ln -sf libcudnn.so. libcudnn.so
$ sudo ldconfig -v #生成連結
$ ls # 檢視一下目前目錄下是否存在上面的so檔案以及是否會有紅色(表示連結錯誤)
           

建立環境安裝TensorFlow-GPU

1. 安裝pip

2. 利用anaconda安裝TensorFlow-GPU

首先需要根據CUDA和cuDNN選擇相應的tensorflow版本 這裡選擇1.2 因為之前的驅動裝的版本比較低,因為比較穩定。據你自己情況而定。

首先去看tensorflow官網不要去國内的網站中文網站,版本太低了。

檢視

Installing TensorFlow on Ubuntu

首先檢視CUDA以及cuDNN版本要求。

點選右邊目錄中的

Installing with Anaconda

建立anaconda環境(為TensorFlow做準備)
$ pyenv global anaconda-xxx-xx # 首先切換之前裝好的anaconda
$ conda create -n tensorflow(環境名稱) #建立tensorflow環境可以了解為容器
           
開啟TensorFlow環境
$ source activate tensorflow #跟前面的建立的名稱一緻
(tensorflow)$  # 你的shell就會變成這樣 
           
安裝TensorFlow-GPU

這裡的

tfURL

需要根據不同的python版本以及cpu或者GPU選擇,檢視側邊菜單就能找到

由于我這裡

anaconda-3.5

python 3.6

是以就需要選擇

GPU version:

CPU version:

然後等待安裝(速度超級快!)

然後再嘗試

import tensorflow as tf

到這裡會出現一些問題請參考後面的常見問題清單

安裝Keras

到了這裡應該是最簡單的一步了。

$ source activate tensorflow # 首先進入我們之前搭建的環境
$ pip install keras #安裝keras
# 等待安裝結束
           

輸入

python

進入環境中

import tensorflow as tf
import keras
# 沒有報錯就完成了所有的搭建
           

Keras demo

$ git clone https://github.com/fchollet/keras.git
$ cd keras/examples/
$ python mnist_mlp.py
           

接下來你就會看見很酷的訓練資料以及模型,沒有任何錯誤即可。

常見問題清單

Q1:

ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory

解決思路:仔細看提示則就是提示

libcudart.so.8.0

不能打開共享連結,我們需要用一種方法找到這個東西(修改

.bashrc

檔案)

$ export LD_LIBRARY_PATH=/usr/local/cuda/lib64/
$ export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64/
# 再次解釋,由于我安裝cuda之後就會出現這兩個檔案,防止錯誤 是以我進行了兩次操作
           

Q2:

ImportError: libcudnn.5: cannot open shared object file: No such file or directory

解決思路:其實這裡也應該是檔案問題,并且這個檔案是在前面生成的軟連結,是以現在重新進行生成連結操作即可。

$ cd /usr/local/cuda/lib64或者cuda-
$ ls # 檢視這個檔案是否存在,我當時是紅色就說明有問題,然後删除
$ sudo ln -sf libcudnn.so.. libcudnn.so. #這裡生成軟連結 根據自己下載下傳cudnn版本不同 其數字會有所不同
$ sudo ln -sf libcudnn.so. libcudnn.so
$ sudo ldconfig -v #生成連結
# 注意這裡依然在cuda-8.0和cuda都進行一次。
           

3

3

3