前言
以下采用的版本設置均可以參考tensorflow官網(wǎng)然后選擇相應的CUDA以及cuDNN版本。另外說一句發(fā)現(xiàn)再這用錨點很難受庄蹋。想要更好的閱讀體驗請直接訪問我的博客
配置說明
Ubuntu 16.04, NVIDIA GTX 1060
搭建目標
CUDA 8.0, cuDNN 5.1, Tensorflow-gpu(本文目前只是1.2尾抑,瀏覽TensorFlow官網(wǎng)獲取其他版本斗躏。注意與CUDA和cuDNN對應), Keras
做任何操作之前請看文章大綱贷币!
接下來會做什么?
- pyenv安裝以及常見命令
- 安裝Anaconda
- 安裝GPU驅動以及裝載CUDA
- 設置cuDNN
- 創(chuàng)建環(huán)境安裝TensorFlow-GPU
- 安裝Keras
- [Keras demo
- 常見問題列表
pyenv安裝以及常見命令
首先介紹pyenv是什么東西换怖?可以簡單理解為一種能夠管理多種python環(huán)境方便我們不同需求下運行不同的python并且全局設定。具體詳情可以參見pyenv-github
1. 安裝git
$ sudo apt-get install git #安裝git
$ git --version #檢查版本以及確認已經(jīng)成功
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. 查看可安裝列表
$ pyenv install --list
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的數(shù)據(jù)包例如(numpy…) 其主要內(nèi)容請Anaconda參考官網(wǎng)狰域,考慮到國內(nèi)網(wǎng)速比較慢甚至可能會導致中途失敗,以下均用清華鏡像 tuna(以下參考下載Anaconda3-5.1.0-Linux-x86_64.sh 備用)
$ cd ~/.pyenv #進入.pyenv配置文件中
$ sudo mkdir cache #新建cache文件夾(默認沒有)
$ cp Anaconda3-5.1.0-Linux-x86_64.sh ~/.pyenv/cache #通過cp命令 將xxx.sh文件copy到cache下
$ pyenv install anaconda3-5.1.0 #安裝 默認會掃描cache目錄下面的文件 所以可以快速安裝
$ pyenv rehash # 刷新
參考常用命令
$ pyenv versions #查看本地的Python版本
$ pyenv install --list #查看可安裝的列表
$ pyenv install xxxx #安裝xxx
$ pyenv uninstall xxxx #卸載xxx
$ pyenv global 環(huán)境名稱 # 設置全局Python環(huán)境版本
$ pyenv local 環(huán)境名稱 # 設置本地shell的Python環(huán)境版本
# ps:其他命令請輸入pyenv或者查詢官方手冊查看
安裝GPU驅動以及裝載CUDA
1. 卸載原有驅動(針對之前有驅動的情況)
$ sudo apt-get remove --purge nvidia*
$ sudo chmod +x *.run #賦給.run運行的權限
$ sudo ./NVIDA-Linux-x86_64-390.48.run --uninstall #具體版本參考自己的GPU型號去官網(wǎng)查詢
2. 禁止nouveau驅動
$ sudo gedit /etc/modprobe.d/blacklist.conf
# 將下面的兩句話加入這個配置文件中保存
blacklist nouveau
options nouveau modeset=0
修改后執(zhí)行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. 命令行驅動安裝
$ sudo ./NVIDA-Linux-x86_64-390.48.run --no-opengl-files #不需要安裝額外的OpenGL庫(ubuntu本身已經(jīng)有了)
一直看著提示安裝,如果出現(xiàn)錯誤(32bit 兼容...)忽略不計帆赢,或者多次反復安裝即可小压。
驅動測試
$ nvidia-smi #會顯示出本機安裝的驅動列表 有提示就行了。
# or
$ nvidia-settings #彈出NVIDIA對話框即可
5. 安裝CUDA
首先官網(wǎng)下載好對應的.run文件 詳情請看nvida CUDA
$ sudo ./cuda_8.0.61_375.26_linux.run --no-opengl-libs
然后根據(jù)提示進行安裝 以下是我的選擇
$ accept #同意安裝
$ n #不安裝driver椰于,之前已經(jīng)裝載最新驅動
$ y #安裝CUDA toolkit
$ <Enter>
$ <Enter>
$ y #允許創(chuàng)建目錄
$ y #允許復制/Sample
測試CUDA Sample
編譯以及測試deviceQuery
$ cd /usr/local/cuda-8.0/samples/1_Utilities/deviceQuery
$ sudo make
$ ./deviceQuery
編譯以及測試bandwidthTest
$ cd ../bandwidthTest
$ sudo make
$ ./bandwidthTest
如果兩個的結果均為 Result = PASS怠益,說明到現(xiàn)在我們已經(jīng)完成了CUDA的安裝
設置cuDNN
這里的主要工作是關聯(lián)動態(tài)鏈接。
下載cuDNN 需要先注冊賬戶
首先我們需要下載相應的cuDNN瘾婿,我這里下載的是cuDNN v5.1 Library Linux
即cudnn-8.0-linux-x64-v5.1.tgz蜻牢,其他請參考官網(wǎng)cuDNN版本庫
由于我安裝發(fā)現(xiàn)在我的``/usr/local/下會出現(xiàn)cuda以及
cuda-8.0`烤咧,所以我建議下面的操作兩個都需要試試(視情況而定)。
解壓下載的cudnn
得到cuda
這個文件夾并且進入進行一下操作
$ sudo cp include/cudnn.h /usr/local/cuda(需要后面都替換為cuda-8.0,后面都需要做兩次)/include/ #復制頭文件
$ sudo cp lib64/* /usr/local/cuda/lib64/
$ cd /usr/local/cuda/lib64
$ sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5 #這里生成軟鏈接 根據(jù)自己下載cudnn版本不同 其數(shù)字會有所不同
$ sudo ln -sf libcudnn.so.5 libcudnn.so
$ sudo ldconfig -v #生成鏈接
$ ls # 查看一下當前目錄下是否存在上面的so文件以及是否會有紅色(表示鏈接錯誤)
創(chuàng)建環(huán)境安裝TensorFlow-GPU
1. 安裝pip
$ sudo apt-get install python-pip
2. 利用anaconda安裝TensorFlow-GPU
首先需要根據(jù)CUDA和cuDNN選擇相應的tensorflow版本 這里選擇1.2 因為之前的驅動裝的版本比較低抢呆,因為比較穩(wěn)定煮嫌。據(jù)你自己情況而定。
首先去看tensorflow官網(wǎng)不要去國內(nèi)的網(wǎng)站中文網(wǎng)站抱虐,版本太低了昌阿。
查看Installing TensorFlow on Ubuntu
首先查看CUDA以及cuDNN版本要求。
點擊右邊目錄中的Installing with Anaconda
創(chuàng)建anaconda環(huán)境(為TensorFlow做準備)
$ pyenv global anaconda-xxx-xx # 首先切換之前裝好的anaconda
$ conda create -n tensorflow(環(huán)境名稱) #創(chuàng)建tensorflow環(huán)境可以理解為容器
開啟TensorFlow環(huán)境
$ source activate tensorflow #跟前面的創(chuàng)建的名稱一致
(tensorflow)$ # 你的shell就會變成這樣
安裝TensorFlow-GPU
$ pip install --ignore-installed --upgrade tfURL
這里的tfURL
需要根據(jù)不同的python版本以及cpu或者GPU選擇恳邀,查看側邊菜單就能找到
由于我這里anaconda-3.5
是python 3.6
所以就需要選擇
GPU version:
https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.2.1-cp36-cp36m-linux_x86_64.whl
CPU version:
https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-1.2.1-cp36-cp36m-linux_x86_64.whl
然后等待安裝(速度超級快E潮)
然后再嘗試import tensorflow as tf
到這里會出現(xiàn)一些問題請參考后面的常見問題列表
安裝Keras
到了這里應該是最簡單的一步了。
$ source activate tensorflow # 首先進入我們之前搭建的環(huán)境
$ pip install keras #安裝keras
# 等待安裝結束
輸入python
進入環(huán)境中
import tensorflow as tf
import keras
# 沒有報錯就完成了所有的搭建
Keras demo
$ git clone https://github.com/fchollet/keras.git
$ cd keras/examples/
$ python mnist_mlp.py
接下來你就會看見很酷的訓練數(shù)據(jù)以及模型谣沸,沒有任何錯誤即可刷钢。
常見問題列表
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之后就會出現(xiàn)這兩個文件闯捎,防止錯誤 所以我進行了兩次操作
Q2:
ImportError: libcudnn.5: cannot open shared object file: No such file or directory
解決思路:其實這里也應該是文件問題,并且這個文件是在前面生成的軟鏈接许溅,所以現(xiàn)在重新進行生成鏈接操作即可瓤鼻。
$ cd /usr/local/cuda/lib64或者cuda-8.0
$ ls # 查看這個文件是否存在,我當時是紅色就說明有問題贤重,然后刪除
$ sudo ln -sf libcudnn.so.5.1.10 libcudnn.so.5 #這里生成軟鏈接 根據(jù)自己下載cudnn版本不同 其數(shù)字會有所不同
$ sudo ln -sf libcudnn.so.5 libcudnn.so
$ sudo ldconfig -v #生成鏈接
# 注意這里依然在cuda-8.0和cuda都進行一次茬祷。
最后
有問題可以留言 & 歡迎交流。