由於最近Deep Learning十分熱門, 裝一下TensorFlow學習一下. 本文主要介紹安裝流程, 將本身遇到的問題說明出來, 並記錄本身如何處理, 原理方面並無能力解釋. 因爲本人以前歷來沒有用過Linux, 本文章恐有初級錯誤, 望見諒, 謝謝. (本文寫於2017年3月17日)html
爲了可以利用GPU(NVIDIA GTX1080)運行TensorFlow, 根據調查須要按順序安裝如下內容:python
Ubuntu, NVIDIA驅動, CUDA, cudnn, TensorFlowlinux
Ubuntu16.04 能夠經過官網下載, 並製做成U盤安裝. 爲了更方便的驅動顯卡,直接安裝Linux, 並不安裝雙系統或虛擬機. 安裝完畢後, 因爲Ubuntu源在國外, 爲了更效率得更新, 採用中科大的鏡像源. 具體操做爲按Ctrl+Alt+T打開命令行, 而後輸入:ubuntu
sudo gedit /etc/apt/sources.list
第一次以管理員運行, 須要輸入管理員密碼. 而後將內容替換爲:api
# 默認註釋了源碼鏡像以提升 apt update 速度,若有須要可自行取消註釋 deb https://mirrors.ustc.edu.cn/ubuntu/ xenial main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial main main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-security main restricted universe multiverse # 預發佈軟件源,不建議啓用 # deb https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse # deb-src https://mirrors.ustc.edu.cn/ubuntu/ xenial-proposed main restricted universe multiverse
而後更新源和安裝包:bash
sudo apt-get update sudo apt-get upgrade
*安裝界面選擇取消選擇從網絡下載. 即使如此, 在以後的Retriving File中, 也有可能遇到進度條卡死的狀況(我是校園網, 須要網絡登陸), 處理方法是拔掉網線, 待安裝完畢後再將網線插回. 網絡
安裝NVIDIA最新顯卡驅動, 從官網輸入本身的顯卡型號, 點擊search, 提示下載顯卡驅動爲375.39(Release 2017.2.14), 然而在輸入本身顯卡型號的頁面, 選擇下方的"Beta and Older Drivers"的鏈接, 能夠選擇到378.13. 因爲我在用375.39的時候, 以後經過Source方式安裝TensorFlow中遇到問題(這裏能夠先不用管), 搜索獲得推薦使用378的型號, 改用378.13的驅動. 將該文件移動到Home目錄中, 更名爲"NVIDIA.run"ide
具體安裝方法爲: Ctrl+Alt+F1, 進入命令行頁面, 輸入用戶名和密碼登陸, 首先關閉X Server(我理解是圖形界面):學習
sudo /etc/init.d/lightdm stop
而後運行NVIDIA.run, 進行安裝:ui
sudo sh NVIDIA.run # 注意此時文件已在Home目錄下
安裝中, 會遇到"The distribution-provided pre-instrall script failed", 能夠無視, 繼續安裝. 但會出現關於Neuveau的問題, 好在NVIDIA會幫你把Neuveau給加到blacklist中, 只須要贊成這麼作就好, 但這次安裝會失敗, 退出, 這時須要輸入:
sudo update-initramfs -u
而後鍵入reboot, 重啓計算機. 此時的桌面分辨率會下降, 按Ctrl+Alt+F1進入命令行, 管理員登入, 關閉X Server, 而後安裝NVIDIA驅動, 過程當中會說NVIDIA會把其餘X Server給遮蔽掉(大概這麼個意思?), 贊成便可, 而後便順利安裝. 以後reboot重啓便可.
* 若是安裝完畢後, 在登陸界面循環登陸, 即輸入密碼, 又退回的話, 關閉掉主板的Secret Boot便可.
官網選擇Linux-x86_64-Ubuntu-16.04-Runfile(local), 而後將文件重命名CUDA.run並移動到Home根目錄中, 按Ctrl+Alt+T打開命令行, 運行:
sudo sh CUDA.run
一路空格搞到底部, 鍵入accept贊成安裝, 之中有些地方須要選擇, 除了在詢問是否安裝:NVIDIA驅動375.xx選否(已經安裝了378.13), 其餘的都贊成並使用默認路徑, 便可以完成安裝. 最後加入環境變量:
export PATH="$PATH:/usr/local/cuda-8.0/bin" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/cuda-8.0/lib64"
再經過如下命令讓環境變量生效:
source ~/.bashrc
* 若是在安裝CUDA時遇到空間不足的問題, 能夠在運行CUDA.run時加入:
sudo sh CUDA.run --tmpdir=/opt/temp/
我我的沒有遇到這個問題, 同時若是加入後面的代碼, 反而會沒法運行.
下載好的壓縮包重命名爲cudnn.tgz並移動到Home根目錄中, 而後運行命令解壓:
tar -zxvf cudnn.tgz
會獲得五個文件, 將文件拷貝到對應的CUDA目錄下便可:
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 sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
根據官網, Ubuntu上能夠有5種方式, 分別是利用: Virtualenv, "native" pip, Docker, Anaconda, 以及從Source安裝. 因爲我在經過Source和Virtualenv中最後一步都遇到問題, 使用Anaconda成功安裝.
1. 安裝Anaconda, 具體可參見Anaconda官網
2. 建立conda環境, 用命令:
conda create -n tensorflow # 若沒有conda命令, 則須要export PATH="$PATH:~/anaconda2/bin"加入新的PATH
激活conda環境, 此時您的命令行前多了(tensorflow):
這裏是你關於您計算機的名字 $ source activate tensorflow
(tensorflow) 一些關於您計算機的名字 $
安裝TensorFlow在conda環境中, 最後的鏈接是TensorFlow Python Package, 根據須要來選擇, 因爲我使用GPU, Linux系統, Python2.7, 使用以下命令
(tensorflow)一些關於您計算機的名字$ pip install --ignore-installed --upgrade https://storage.googleapis.com/tensorflow/linux/gpu/tensorflow_gpu-1.0.1-cp27-none-linux_x86_64.whl
安裝完畢後, 嘗試運行
(tensorflow)一些關於您計算機的名字$ python >>> import tensorflow as tf
若是能夠運行, 恭喜安裝成功. 以後能夠經過以下命令來退出conda環境
(tensorflow)一些關於您計算機的名字$ source deactivate tensorflow
* 如遇到問題相似 ImportError: libcudart.so.Version: cannot open shared object file, 能夠經過下面命令查看一下本身的環境變量, PATH和LD_LIBRARY_PATH是否都包含全了
export
我最終的PATH包含以下路徑:
declare -x PATH="/home/你的用戶名/anaconda2/envs/tensorflow/bin:/home/你的用戶名/anaconda2/bin:/usr/local/cuda-8.0/bin:usr/local/cuda/bin:(一些其餘的路徑)"
若是有缺乏的能夠嘗試使用export PATH="$PATH:缺乏的路徑"補充, 記得最後source ~/.bashrc
(事實上我在用Source和Virtualenv遇到就是這個問題, 惋惜當時並不知道怎麼解決)
Ref:
https://www.tensorflow.org/install/ (TensorFlow官方教程, 很是詳細有用)
http://blog.csdn.net/silangquan/article/details/9473613 (關於X Server的)
http://askubuntu.com/questions/112302/how-do-i-disable-the-nouveau-kernel-driver?answertab=oldest#tab-top (關於 Neuveau的)
http://www.nvidia.com/download/driverResults.aspx/114708/en-us (關於安裝NVIDA驅動時出現Blinding kernel module的)
http://www.rodsbooks.com/efi-bootloaders/secureboot.html#disable (關於登陸界面循環卡死的)
http://stackoverflow.com/questions/42013316/after-building-tensorflow-from-source-seeing-libcudart-so-and-libcudnn-errors (關於ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory)
http://stackoverflow.com/questions/36159194/tensorflow-libcudart-so-7-5-cannot-open-shared-object-file-no-such-file-or-di (關於ImportError: libcudart.so.8.0: cannot open shared object file: No such file or directory)
最後, 特別感謝52nlp, 其中兩篇文章介紹從Ubuntu安裝到最後運行TensorFlow, 對個人幫助很大, 個人安裝方式也是基於這兩篇文章, 謝謝.