@[TOC]html
上篇博文主要寫了在Ubuntu18.04下安裝配置深度學習環境的有關操做過程,考慮到不少同窗仍是使用ubuntu16.04,所以這裏專門補一篇關於16.04的博文,其實在18.04下配置環境跟16.04下差距不大,關鍵是掌握好ubuntu版本、Nvidia顯卡驅動版本、CUDA版本、cuDNN版本、Tensorflow版本之間的兼容關係便可。python
目前咱們採用以下環境配置:linux
- 系統:Ubuntu16.04.5 LTS
- 顯卡驅動(1080Ti):Nvidia-384
- CUDA版本:CUDA ToolKit9.0 + 四個update patch
- cuDNN版本:cuDNN v7.3 for CUDA 9.0
- Tensorflow版本:Tensorflow-gpu1.12
1、Ubuntu16.04 LTS系統的安裝
安裝過程跟上一篇博文關於18.04系統的安裝徹底一致,請參考上篇博文,這裏不贅述。shell
2、設置軟件源的國內鏡像
1. 設置方法
Ubuntu在安裝軟件的過程當中,默認從其官方源下載,但因爲國內網絡的緣由,每每很慢。所以爲了加快安裝速度,建議設置國內鏡像。在ubuntu系統中,軟件源記錄在/etc/apt/source.list文件中,所以,咱們只須要將要加入的國內鏡像的地址寫入這個文件便可,在寫入以前記得備份一下原始的內容。編程
sudo cp /etc/apt/source.list /etc/apt/source.list.bak # 備份 sudo gedit /etc/apt/source.list # 用gedit打開source.list文件
將下述內容所有拷貝到source.list文件的頭部,保存退出。ubuntu
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
而後,在命令行執行以下命令更新軟件源vim
sudo apt-get update
等待片刻,軟件源更新完成,這樣採用apt-get install方式安裝軟件時將優先從上述國內鏡像地址尋找軟件源,速度將快很多。到此,若是你不想了解關於國內鏡像的知識,能夠直接進入下一節開始顯卡驅動的安裝,若是想了解ubuntu的鏡像知識,能夠繼續往下看。bash
2.關於ubuntu鏡像的小知識
首先,簡單介紹下關於Ubuntu的source.list文件的內容,該文件在/etc/apt/目錄下,它記錄了ubuntu軟件更新的源的地址及目錄,默認是ubuntu的官方源,source.list文件內容的具體含義以下:網絡
1 | 2 | 3 | 4 | 5 | 6 | 7 |
---|---|---|---|---|---|---|
deb | url | 版本代號(好比xenial) | main | restricted | universe | multiverse |
deb-src | url | 版本代號(好比xenial) | main | restricted | universe | multiverse |
上述格式中,第1列爲deb或deb-src,分別表明直接經過.deb文件進行安裝和經過source code源文件進行安裝兩種方式;第2列爲URL地址,好比ubuntu官方源的地址爲http://archive.ubuntu.com/ubuntu/,第3列爲版本代號,具體見下表(這裏只給出.04版本的,其它版本能夠本身取查看),通常只取代號的第一個單詞(好比16.04版本只取Xenial這個單詞),須要注意的是版本通常有5個不一樣的類別(這裏以xenial爲例說明,通常有xenial, xenial-updates, xenial-security,xenial-proposed xenial-backports,一個類別一條記錄,其實是一個文件夾),從第4列到第7列爲版本代號文件夾下不一樣的文件夾的名稱(通常也有4個不一樣的文件夾,分別爲:main,restricted,universe,multiverse,其具體意義見下表),固然第4到第7列是並列關係,徹底能夠每一個文件夾一條記錄,也能夠並列在一塊兒。框架
版本號 | 版本代號 |
---|---|
14.04 | Trusty Tahr (可靠的塔爾羊) |
15.04 | Vivid Vervet (活潑的小猴) |
16.04 | Xenial Xerus (好客的非洲地松鼠) |
17.04 | Zesty Zapus(開心的跳鼠) |
18.04 | Bionic Beaver(仿生海狸) |
文件夾名 | 意義 |
---|---|
main | 徹底的自由軟件 |
restricted | 不徹底的自由軟件 |
universe | 官方不提供支持與補丁,全靠社區支持 |
multiverse | 非自由軟件,徹底不提供支持和補丁 |
下面分別給出16.04版本的官方源、阿里雲源、以及清華的源 |
- 官方源
deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ xenial-proposed main restricted universe multiverse deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ xenial-proposed main restricted universe multiverse deb-src http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
- 阿里雲源
deb http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-security main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-updates main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-proposed main restricted universe multiverse deb-src http://mirrors.aliyun.com/ubuntu/ xenial-backports main restricted universe multiverse
- 清華的源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main multiverse restricted universe deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-proposed main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main multiverse restricted universe deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main multiverse restricted universe
3、Nvidia顯卡驅動的安裝
1. 首先查看顯卡型號和推薦的顯卡驅動
ubuntu-drivers devices
從輸出的信息看到推薦的是nvidia-driver-390的驅動,所以咱們安裝nvidia-390驅動。須要注意的是有個奇怪的現象就是在中斷輸入上述命令,有可能獲得不一樣的推薦,好比有可能推薦384或396或410驅動,在16.04系統上,咱們安裝384驅動比較保險(Tensorflow1.12最低要求384以上版本的驅動)。
2. 安裝nvidia-384版本驅動
# 將系統中存在的nvidia驅動所有卸載掉(若是有的話) sudo apt-get purge nvidia* # 添加ppa源並更新 sudo add-apt-repository ppa:graphics-drivers/ppa sudo apt-get update # 安裝nvidia-384版本 sudo apt-get install nvidia-384
安裝速度取決於下載速度,仍是有點慢,但勉強接受,若是安裝失敗,能夠再試1次。安裝完畢記得必定要重啓系統。
3. 重啓系統,能夠查看安裝是否成功
nvidia-smi
4、CUDA9.0的安裝
1. CUDA版本選擇
目前CUDA已經到了CUDA10.0版本,但遺憾的是目即便最新的Tensorflow1.12也暫時只支持CUDA9.0,所以,咱們選擇9.0版本進行安裝。固然,若是實在想嚐鮮,能夠經過tensorflow的源碼安裝,須要本身編譯,咱們將在另外文章中專門介紹,這裏不詳述。
2. 安裝CUDA9.0
首先從Nvidia官網下載cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb和 4個補丁 文件。安裝步驟以下:
Step1:切換到下載好的文件目錄,並安裝meta-data
sudo dpkg -i cuda-repo-ubuntu1604-9-0-local_9.0.176-1_amd64.deb
Step2: 安裝CUDA的GPG Public Key
sudo apt-key add /var/cuda-repo-9-0-local/7fa2af80.pub
Step3:更新APT源
sudo apt-get update
Step4:安裝CUDA
sudo apt-get install cuda
Step5:安裝補丁
sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-cublas-performance-update_1.0-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-cublas-performance-update-2_1.0-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1604-9-0-local-cublas-performance-update-3_1.0-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu1604-9-0-176-local-patch-4_1.0-1_amd64.deb sudo apt-get update sudo apt-get upgrade cuda
固然,不安裝上述補丁對後續的安裝也應該沒多大影響,可是建議仍是把上述4個補丁所有安裝,這對系統運行的性能可能有所提高。
3. 設置環境變量
在 ~/.bashrc中設置環境變量:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} export CUDA_HOME=/usr/local/cuda
運行以下命令使得環境變量生效
source ~/.bashrc
測試環境變量是否生效,能夠運行一下nvidia的查看CUDA版本的命令
nvcc --version
若是出現上述信息,說明環境變量設置生效。
5、cuDNN7.3的安裝
這裏咱們選擇下載cuDNN v7.3 for CUDA9.0版本(子項爲cuDNN v7.3 Library for Linux),安裝包爲cudnn-9.0-linux-x64-v7.3.1.20.tgz。
Step1: 解壓
tar -zxvf cudnn-9.0-linux-x64-v7.3.1.20.tgz
在當前目錄下會生成cuda目錄
Step2:將cudnn.h文件和lib文件拷貝到CUDA的安裝目錄下
sudo cp cuda/include/cudnn.h /usr/local/cuda/include/ sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/ -d
注意上面第二行命令中的-d不能少,不然會提示.so不是symbol link。
Step3:賦予執行權限
sudo chmod a+x /usr/local/cuda/include/cudnn.h sudo chmod a+x /usr/local/cuda/lib64/libcudnn*
通過上述步驟,就基本配置好了系統以及CUDA環境,下面咱們就能夠安裝配置Tensorflow框架了
6、Tensorflow-1.12的安裝
1. Python開發環境配置.
首先,咱們要確保系統中安裝了以下Python環境: python3, pip3,以及 virtualenv,在命令行查詢相應的版本
python3 --version pip3 --version virtualenv --version
若是提示沒有安裝,則用以下命令安裝:
sudo apt update sudo apt install python3-dev python3-pip sudo pip3 install -U virtualenv
2. 建立Python虛擬環境
python的虛擬環境用來隔離系統和相應的安裝包,這很是有利於不一樣版本之間的隔離,總之好處多多,尤爲是不一樣的項目使用不一樣的軟件版本時,能避免使人頭痛的版本混亂問題,強烈建議安裝虛擬環境。安裝命令以下:
virtualenv --system-site-packages -p python3 ./venv
上述命令的意思是建立一個虛擬環境(該虛擬環境文件被放置到venv目錄下),該環境使用python3,而且將python3下已經安裝的包都複製過來(--system-site-packages),若是選擇不復制python3下已經安裝的包,則使用--no-site-packages,這樣,已經安裝到系統python環境中的全部第三方包都不會複製過來,這樣就會獲得一個不帶任何第三方包的「乾淨」的python運行環境。這裏咱們選擇複製python3下已經安裝的軟件包。
若是要使用,則用下述命令激活該虛擬環境
source ./venv/bin/activate
若是環境激活,則shell命令行前面會出現(venv)。 在該虛擬環境下安裝任何軟件包都不會影響系統python環境。若是要退出該虛擬環境,則在命令行執行即下述命令可退出該虛擬環境。
deactivate
3. 創建軟連接
爲了使用方便,咱們能夠創建一個軟連接,假設咱們的虛擬環境安裝的絕對路徑是/home/scek/Project/venv/,則激活的shell命令的絕對路徑是/home/scek/Project/venv/bin/activate。通常咱們啓動終端的時候,會默認在/home/scek/目錄下,在這個目錄下創建軟連接,連接名稱假設爲venv,則用下面命令:
ln -s ./Project/venv/bin/activate venv
創建軟連接以後,一啓動終端,就能夠直接輸入:
source venv
便可激活虛擬環境,對比原始命令
source ./Project/venv/bin/activate
方便了很多。
4. 安裝Tensorflow
安裝很簡單,執行以下命令便可:
pip install tensorflow-gpu
上述命令會安裝最新的release版本(目是1.12版本),若是要指定安裝版本,則採用以下命令
pip install tensorflow-gup = 1.10
可是因爲國內網絡環境問題,安裝速度慢的沒法忍受,這裏咱們推薦採用清華的pypi鏡像進行安裝:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu
測試安裝是否成功
python -c "import tensorflow as tf; print(tf.__version__)"
若是安裝成功,則會輸出當前的版本。 爲了方便其餘pip包安裝的方便,咱們能夠將pypi源永久修改,省得每次都要輸入鏡像地址:
首先在當前用戶目錄下新建~/.pip/pip.conf
mkdir .pip sudo vim .pip/pip.conf
將下述內容寫入pip.conf文件中並保存
[global] index-url = https://mirrors.aliyun.com/pypi/simple [install] trusted-host=mirrors.aliyun.com
這裏咱們採用了阿里雲的pypi源,也能夠採用其它的源:
https://pypi.tuna.tsinghua.edu.cn/simple # 清華 http://mirrors.aliyun.com/pypi/simple/ # 阿里雲 https://pypi.mirrors.ustc.edu.cn/simple/ # 中國科技大學 http://pypi.hustunique.com/ # 華中理工大學 http://pypi.sdutlinux.org/ # 山東理工大學 http://pypi.douban.com/simple/ # 豆瓣
7、Jupyter notebook的安裝配置
寫python代碼,能夠採用的工具備不少:
- 直接在命令行輸入python,便可進入python開發環境
- 用第三方代碼編輯器,推薦使用sublime text3。 或者用第三方IDE工具, 好比Pycharm, 可是這個軟件很耗內存,IDE工具的優勢和缺點基本都有,我的不太喜歡使用這個IDE。
- 使用Jupyter Notebook. Jupyter Notebook(此前被稱爲 IPython notebook)是一個交互式筆記本,支持運行 40 多種編程語言。是很是友好的一款開發工具,尤爲適用於代碼測試,編寫交互式文檔,等等。須要注意的是,由於咱們將tensorflow等工具安裝在venv虛擬環境下,所以,爲了在jupyter中正常使用tensorflow,就必須作一些額外的工做,下面給出具體步驟:
(1)step1:安裝jupyter notebook
sudo pip install jupyter
(2)step2:進入venv虛擬環境(注意必須進入虛擬環境),設置kernel
pip install ipykernel python -m ipykernel install --user --name=tensorflow
上述--name=tensorflow是設置顯示的環境名稱,固然能夠起一個任意的名字。 (3)Step3:啓動jupyter
jupyter notebook
啓動以後,在new新文件時能夠選擇tensorflow做爲內核便可。
經過上述步驟,咱們已經徹底配置了深度學習所需的基本環境,能夠在深度學習的海洋中遨遊了。