Ubuntu18.04 + CUDA9.0 + cuDNN7.3 + Tensorflow-gpu-1.12 + Jupyter Notebook深度學(xué)習(xí)環(huán)境配置

此篇博文針對零基礎(chǔ)的同學(xué)所撰寫,基本屬于step-by-step。需要注意的是:目前CUDA已經(jīng)到了CUDA10.0版本,但遺憾的是目即使最新的Tensorflow1.12也暫時只支持CUDA9.0,因此,我們選擇9.0版本進(jìn)行安裝。當(dāng)然,如果實(shí)在想嘗鮮,可以通過tensorflow的源碼安裝,需要自己編譯,我們將在另外文章中專門介紹,這里不詳述。

一、Ubuntu18.04 LTS系統(tǒng)的安裝

1. 安裝文件下載

登陸ubuntu官網(wǎng)(https://www.ubuntu.com/index_kylin),點(diǎn)擊“Download”選項(xiàng),會出現(xiàn)下載頁面,我們選擇ubuntu 18.04 LTS Desktop版本,跟16.04LTS版本一樣,這是一個長期維護(hù)版本(想嘗鮮的可以選擇18.10,但不建議這么做)。一般下載速度很快(我平時網(wǎng)速不太理想的情況下都達(dá)到了4M速度),下載文件的全名為:ubuntu-18.04.1-desktop-amd64.iso,大概1.81GB.

在這里插入圖片描述

2. 制作U盤安裝鏡像文件

  • (1) 首先下載U盤啟動文件制作工具,這里我們用rufus,官網(wǎng)(https://rufus.ie/, 貌似直接點(diǎn)擊這個網(wǎng)站會出現(xiàn)404錯誤,但是百度搜索rufus,第一條就是rufus官網(wǎng)), 默認(rèn)打開下載英文版(也可以選擇下載中文版),這是個綠色軟件,不需要安裝,我們選擇下載最新的rufus 3.3版本。
  • (2)打開rufus-3.3.exe,如果沒什么意外的話,在rufus軟件界面中的設(shè)備一欄應(yīng)該出現(xiàn)我們插入電腦的U盤的盤符(比如這里的YPZHAI),如果沒有找到的話說明U盤沒有正確插入或出現(xiàn)了其它問題。點(diǎn)擊“選擇”按鈕,選取我們剛下載好的“ubuntu-18.04.1-desktop-amd64.iso”,其它設(shè)置采用默認(rèn)值即可。點(diǎn)擊“開始”,會彈出一個通知對話框,直接點(diǎn)擊“是”,進(jìn)入下一步,選擇默認(rèn)的“以ISO鏡像模式寫入”,點(diǎn)擊進(jìn)入下一步,會警告你U盤上的數(shù)據(jù)會被全部清空,選擇“是”,大概等待1分鐘左右,安裝U盤應(yīng)該已經(jīng)制作好。
在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

3. 開始安裝

  • (1)插入U(xiǎn)盤,啟動電腦,按下“F2”(不同的電腦按鍵不同,請仔細(xì)查看啟動界面上的提示)進(jìn)入BIOS設(shè)置界面,在啟動項(xiàng)(Boot Priority)選擇從U盤啟動(不同的主板顯示可能不一樣),保存退出。
  • (2)開始安裝,一般會讓選擇語言、鍵盤布局等(選擇默認(rèn)即可),在選擇“Updates and other software”時,選擇"Normal installation",這樣一些常用的軟件就默認(rèn)安裝上了。在“Installation type”中,如果不打算安裝雙系統(tǒng),直接選擇第一個“Erase ****”,這樣電腦上原先的系統(tǒng)以及相關(guān)文件數(shù)據(jù)等都將全部刪除,因此在此之前一定要備份好重要數(shù)據(jù)!接下來進(jìn)入“Where are you”時區(qū)選擇,選擇“shanghai”即可,下一步讓你輸入你的名字、電腦名、用戶名、以及密碼等。輸入完畢,正式進(jìn)入安裝流程,整個過程大概需要20分鐘左右。

二、設(shè)置軟件源的國內(nèi)鏡像

1. 設(shè)置方法

Ubuntu在安裝軟件的過程中,默認(rèn)從其官方源下載,但由于國內(nèi)網(wǎng)絡(luò)的原因,往往很慢。因此為了加快安裝速度,建議設(shè)置國內(nèi)鏡像。在ubuntu系統(tǒng)中,軟件源記錄在/etc/apt/source.list文件中,因此,我們只需要將要加入的國內(nèi)鏡像的地址寫入這個文件即可,在寫入之前記得備份一下原始的內(nèi)容。

sudo cp /etc/apt/source.list /etc/apt/source.list.bak  # 備份
sudo gedit /etc/apt/source.list                        # 用gedit打開source.list文件

將下述內(nèi)容全部拷貝到source.list文件的頭部,保存退出。

deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse

然后,在命令行執(zhí)行如下命令更新軟件源

sudo apt-get update

等待片刻,軟件源更新完成,這樣采用apt-get install方式安裝軟件時將優(yōu)先從上述國內(nèi)鏡像地址尋找軟件源,速度將快不少。到此,如果你不想了解關(guān)于國內(nèi)鏡像的知識,可以直接進(jìn)入下一節(jié)開始顯卡驅(qū)動的安裝,如果想了解ubuntu的鏡像知識,可以繼續(xù)往下看。

2.關(guān)于ubuntu鏡像的小知識

首先,簡單介紹下關(guān)于Ubuntu的source.list文件的內(nèi)容,該文件在/etc/apt/目錄下,它記錄了ubuntu軟件更新的源的地址及目錄,默認(rèn)是ubuntu的官方源,source.list文件內(nèi)容的具體含義如下:

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文件進(jìn)行安裝和通過source code源文件進(jìn)行安裝兩種方式;第2列為URL地址,比如ubuntu官方源的地址為http://archive.ubuntu.com/ubuntu/,第3列為版本代號,具體見下表(這里只給出.04版本的,其它版本可以自己取查看),一般只取代號的第一個單詞(比如16.04版本只取Xenial這個單詞),需要注意的是版本一般有5個不同的類別(這里以xenial為例說明,一般有xenial, xenial-updates, xenial-security,xenial-proposed xenial-backports,一個類別一條記錄,實(shí)際上是一個文件夾),從第4列到第7列為版本代號文件夾下不同的文件夾的名稱(一般也有4個不同的文件夾,分別為:main,restricted,universe,multiverse,其具體意義見下表),當(dāng)然第4到第7列是并列關(guān)系,完全可以每個文件夾一條記錄,也可以并列在一起。

版本號 版本代號
14.04 Trusty Tahr (可靠的塔爾羊)
15.04 Vivid Vervet (活潑的小猴)
16.04 Xenial Xerus (好客的非洲地松鼠)
17.04 Zesty Zapus(開心的跳鼠)
18.04 Bionic Beaver(仿生海貍)
文件夾名 意義
main 完全的自由軟件
restricted 不完全的自由軟件
universe 官方不提供支持與補(bǔ)丁,全靠社區(qū)支持
multiverse 非自由軟件,完全不提供支持和補(bǔ)丁

下面分別給出18.04版本的官方源、阿里云源、以及清華的源

  1. 官方源
deb http://archive.ubuntu.com/ubuntu/ bionic main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted universe multiverse
  1. 阿里云源
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
  1. 清華的源
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main multiverse restricted universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-proposed main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main multiverse restricted universe
deb-src http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main multiverse restricted universe

三、Nvidia顯卡驅(qū)動的安裝

1. 首先查看顯卡型號和推薦的顯卡驅(qū)動

ubuntu-drivers devices
在這里插入圖片描述

從輸出的信息看到推薦的是nvidia-driver-390的驅(qū)動,因此我們安裝nvidia-390驅(qū)動。需要注意的是有個奇怪的現(xiàn)象就是在中斷輸入上述命令,有可能得到不同的推薦,比如有可能推薦384或396或410驅(qū)動,在16.04系統(tǒng)上,我們安裝384驅(qū)動比較保險(xiǎn),在18.04系統(tǒng)上,理論上也沒問題,這里我們還是按照系統(tǒng)推薦,安裝390驅(qū)動。

2. 安裝nvidia-390版本驅(qū)動

# 將系統(tǒng)中存在的nvidia驅(qū)動全部卸載掉(如果有的話)
sudo apt-get purge nvidia*

# 添加ppa源并更新
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update

# 安裝nvidia-390版本
sudo apt-get install nvidia-390

安裝速度取決于下載速度,還是有點(diǎn)慢,但勉強(qiáng)接受,如果安裝失敗,可以再試1次。安裝完畢記得一定要重啟系統(tǒng)。

3. 重啟系統(tǒng),可以查看安裝是否成功

nvidia-smi

如果出現(xiàn)如下信息,說明驅(qū)動安裝成功。


在這里插入圖片描述

四、CUDA9.0的安裝

1. CUDA版本選擇

目前CUDA已經(jīng)到了CUDA10.0版本,但遺憾的是目即使最新的Tensorflow1.12也暫時只支持CUDA9.0,因此,我們選擇9.0版本進(jìn)行安裝。當(dāng)然,如果實(shí)在想嘗鮮,可以通過tensorflow的源碼安裝,需要自己編譯,我們將在另外文章中專門介紹,這里不詳述。

這里需要注意的是:在nvidia的官網(wǎng)上,我們發(fā)現(xiàn)CUDA9.0的ubuntu版本只有16.04和17.04的,而沒有18.04的(CUDA10.0有18.04版本),不過沒關(guān)系,經(jīng)過測試發(fā)現(xiàn)17.04版本在18.04版本上能正常安裝并運(yùn)行,因此這里我們選擇下載17.04版本的(16.04的沒有測試,理論上應(yīng)該也是沒有問題的)。

[圖片上傳失敗...(image-18e989-1542892955617)]

2. 安裝CUDA9.0

首先從Nvidia官網(wǎng)下載cuda-repo-ubuntu1704-9-0-176-local-patch-4_1.0-1_amd64.deb和 4個補(bǔ)丁 文件。安裝步驟如下:

Step1:切換到下載好的文件目錄,并安裝meta-data

sudo dpkg -i cuda-repo-ubuntu1704-9-0-176-local-patch-4_1.0-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:安裝補(bǔ)丁

sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update-2_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1704-9-0-local-cublas-performance-update-3_1.0-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1704-9-0-176-local-patch-4_1.0-1_amd64.deb
sudo apt-get update
sudo apt-get upgrade cuda

當(dāng)然,不安裝上述補(bǔ)丁對后續(xù)的安裝也應(yīng)該沒多大影響,但是建議還是把上述4個補(bǔ)丁全部安裝,這對系統(tǒng)運(yùn)行的性能可能有所提升。

3. 設(shè)置環(huán)境變量

在 ~/.bashrc中設(shè)置環(huán)境變量:

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

運(yùn)行如下命令使得環(huán)境變量生效

source ~/.bashrc

測試環(huán)境變量是否生效,可以運(yùn)行一下nvidia的查看CUDA版本的命令

nvcc --version
在這里插入圖片描述

如果出現(xiàn)上述信息,說明環(huán)境變量設(shè)置生效。

五、cuDNN7.3的安裝

這里我們選擇下載cuDNN v7.3 for CUDA9.0版本(子項(xiàng)為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

在當(dāng)前目錄下會生成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:賦予執(zhí)行權(quán)限

sudo chmod a+x /usr/local/cuda/include/cudnn.h
sudo chmod a+x /usr/local/cuda/lib64/libcudnn*

經(jīng)過上述步驟,就基本配置好了系統(tǒng)以及CUDA環(huán)境,下面我們就可以安裝配置Tensorflow框架了

六、Tensorflow-1.12的安裝

1. Python開發(fā)環(huán)境配置.

首先,我們要確保系統(tǒng)中安裝了如下Python環(huán)境:
python3, pip3,以及 virtualenv,在命令行查詢相應(yīng)的版本

python3 --version
pip3 --version
virtualenv --version

如果提示沒有安裝,則用如下命令安裝:

sudo apt update
sudo apt install python3-dev python3-pip
sudo pip3 install -U virtualenv

2. 創(chuàng)建Python虛擬環(huán)境

python的虛擬環(huán)境用來隔離系統(tǒng)和相應(yīng)的安裝包,這非常有利于不同版本之間的隔離,總之好處多多,尤其是不同的項(xiàng)目使用不同的軟件版本時,能避免令人頭痛的版本混亂問題,強(qiáng)烈建議安裝虛擬環(huán)境。安裝命令如下:

virtualenv --system-site-packages -p python3 ./venv

上述命令的意思是創(chuàng)建一個虛擬環(huán)境(該虛擬環(huán)境文件被放置到venv目錄下),該環(huán)境使用python3,并且將python3下已經(jīng)安裝的包都復(fù)制過來(--system-site-packages),如果選擇不復(fù)制python3下已經(jīng)安裝的包,則使用--no-site-packages,這樣,已經(jīng)安裝到系統(tǒng)python環(huán)境中的所有第三方包都不會復(fù)制過來,這樣就會得到一個不帶任何第三方包的“干凈”的python運(yùn)行環(huán)境。這里我們選擇復(fù)制python3下已經(jīng)安裝的軟件包。

如果要使用,則用下述命令激活該虛擬環(huán)境

source ./venv/bin/activate

如果環(huán)境激活,則shell命令行前面會出現(xiàn)(venv)。
在該虛擬環(huán)境下安裝任何軟件包都不會影響系統(tǒng)python環(huán)境。如果要退出該虛擬環(huán)境,則在命令行執(zhí)行即下述命令可退出該虛擬環(huán)境。

deactivate

3. 建立軟鏈接

為了使用方便,我們可以建立一個軟鏈接,假設(shè)我們的虛擬環(huán)境安裝的絕對路徑是/home/scek/Project/venv/,則激活的shell命令的絕對路徑是/home/scek/Project/venv/bin/activate。一般我們啟動終端的時候,會默認(rèn)在/home/scek/目錄下,在這個目錄下建立軟鏈接,鏈接名稱假設(shè)為venv,則用下面命令:

ln -s ./Project/venv/bin/activate  venv

建立軟鏈接之后,一啟動終端,就可以直接輸入:

source venv

即可激活虛擬環(huán)境,對比原始命令

source ./Project/venv/bin/activate

方便了不少。

4. 安裝Tensorflow

安裝很簡單,執(zhí)行如下命令即可:

pip install tensorflow-gpu

上述命令會安裝最新的release版本(目是1.12版本),如果要指定安裝版本,則采用如下命令

pip install tensorflow-gup = 1.10

但是由于國內(nèi)網(wǎng)絡(luò)環(huán)境問題,安裝速度慢的無法忍受,這里我們推薦采用清華的pypi鏡像進(jìn)行安裝:

pip install -i https://pypi.tuna.tsinghua.edu.cn/simple tensorflow-gpu

測試安裝是否成功

python -c "import tensorflow as tf; print(tf.__version__)"

如果安裝成功,則會輸出當(dāng)前的版本。
為了方便其他pip包安裝的方便,我們可以將pypi源永久修改,免得每次都要輸入鏡像地址:

首先在當(dāng)前用戶目錄下新建~/.pip/pip.conf

mkdir .pip
sudo vim .pip/pip.conf

將下述內(nèi)容寫入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/    # 中國科技大學(xué) 
http://pypi.hustunique.com/                 # 華中理工大學(xué)
http://pypi.sdutlinux.org/                  # 山東理工大學(xué)
http://pypi.douban.com/simple/              # 豆瓣

七、Jupyter notebook的安裝配置

寫python代碼,可以采用的工具有很多:

  1. 直接在命令行輸入python,即可進(jìn)入python開發(fā)環(huán)境
  2. 用第三方代碼編輯器,推薦使用sublime text3。 或者用第三方IDE工具, 比如Pycharm, 但是這個軟件很耗內(nèi)存,IDE工具的優(yōu)點(diǎn)和缺點(diǎn)基本都有,個人不太喜歡使用這個IDE。
  3. 使用Jupyter Notebook. Jupyter Notebook(此前被稱為 IPython notebook)是一個交互式筆記本,支持運(yùn)行 40 多種編程語言。是非常友好的一款開發(fā)工具,尤其適用于代碼測試,編寫交互式文檔,等等。需要注意的是,因?yàn)槲覀儗ensorflow等工具安裝在venv虛擬環(huán)境下,因此,為了在jupyter中正常使用tensorflow,就必須做一些額外的工作,下面給出具體步驟:

(1)step1:安裝jupyter notebook

sudo pip install jupyter

(2)step2:進(jìn)入venv虛擬環(huán)境(注意必須進(jìn)入虛擬環(huán)境),設(shè)置kernel

pip install ipykernel
python -m ipykernel install --user --name=tensorflow

上述--name=tensorflow是設(shè)置顯示的環(huán)境名稱,當(dāng)然可以起一個任意的名字。
(3)Step3:啟動jupyter

jupyter notebook

啟動之后,在new新文件時可以選擇tensorflow作為內(nèi)核即可。

通過上述步驟,我們已經(jīng)完全配置了深度學(xué)習(xí)所需的基本環(huán)境,可以在深度學(xué)習(xí)的海洋中遨游了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容