Ubuntu16.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook 深度學習環境配置

@[TOC]html

上篇博文主要寫了在Ubuntu18.04下安裝配置深度學習環境的有關操做過程,考慮到不少同窗仍是使用ubuntu16.04,所以這裏專門補一篇關於16.04的博文,其實在18.04下配置環境跟16.04下差距不大,關鍵是掌握好ubuntu版本、Nvidia顯卡驅動版本、CUDA版本、cuDNN版本、Tensorflow版本之間的兼容關係便可。python

目前咱們採用以下環境配置:linux

  1. 系統:Ubuntu16.04.5 LTS
  2. 顯卡驅動(1080Ti):Nvidia-384
  3. CUDA版本:CUDA ToolKit9.0 + 四個update patch
  4. cuDNN版本:cuDNN v7.3 for CUDA 9.0
  5. 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版本的官方源、阿里雲源、以及清華的源
  1. 官方源
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
  1. 阿里雲源
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
  1. 清華的源
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代碼,能夠採用的工具備不少:

  1. 直接在命令行輸入python,便可進入python開發環境
  2. 用第三方代碼編輯器,推薦使用sublime text3。 或者用第三方IDE工具, 好比Pycharm, 可是這個軟件很耗內存,IDE工具的優勢和缺點基本都有,我的不太喜歡使用這個IDE。
  3. 使用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做爲內核便可。

經過上述步驟,咱們已經徹底配置了深度學習所需的基本環境,能夠在深度學習的海洋中遨遊了。

相關文章
相關標籤/搜索