此篇博文針對零基礎的同學所撰寫,基本屬於step-by-step。需要注意的是:目前CUDA已經到了CUDA10.0版本,但遺憾的是目即使最新的Tensorflow1.12也暫時只支持CUDA9.0,因此,我們選擇9.0版本進行安裝。當然,如果實在想嘗鮮,可以通過tensorflow的源碼安裝,需要自己編譯,我們將在另外文章中專門介紹,這里不詳述。
一、Ubuntu18.04 LTS系統的安裝
1. 安裝文件下載
登陸ubuntu官網(https://www.ubuntu.com/index_kylin),點擊“Download”選項,會出現下載頁面,我們選擇ubuntu 18.04 LTS Desktop版本,跟16.04LTS版本一樣,這是一個長期維護版本(想嘗鮮的可以選擇18.10,但不建議這么做)。一般下載速度很快(我平時網速不太理想的情況下都達到了4M速度),下載文件的全名為:ubuntu-18.04.1-desktop-amd64.iso,大概1.81GB.
2. 制作U盤安裝鏡像文件
- (1) 首先下載U盤啟動文件制作工具,這里我們用rufus,官網(https://rufus.ie/, 貌似直接點擊這個網站會出現404錯誤,但是百度搜索rufus,第一條就是rufus官網), 默認打開下載英文版(也可以選擇下載中文版),這是個綠色軟件,不需要安裝,我們選擇下載最新的rufus 3.3版本。
- (2)打開rufus-3.3.exe,如果沒什么意外的話,在rufus軟件界面中的設備一欄應該出現我們插入電腦的U盤的盤符(比如這里的YPZHAI),如果沒有找到的話說明U盤沒有正確插入或出現了其它問題。點擊“選擇”按鈕,選取我們剛下載好的“ubuntu-18.04.1-desktop-amd64.iso”,其它設置采用默認值即可。點擊“開始”,會彈出一個通知對話框,直接點擊“是”,進入下一步,選擇默認的“以ISO鏡像模式寫入”,點擊進入下一步,會警告你U盤上的數據會被全部清空,選擇“是”,大概等待1分鍾左右,安裝U盤應該已經制作好。
3. 開始安裝
- (1)插入U盤,啟動電腦,按下“F2”(不同的電腦按鍵不同,請仔細查看啟動界面上的提示)進入BIOS設置界面,在啟動項(Boot Priority)選擇從U盤啟動(不同的主板顯示可能不一樣),保存退出。
- (2)開始安裝,一般會讓選擇語言、鍵盤布局等(選擇默認即可),在選擇“Updates and other software”時,選擇"Normal installation",這樣一些常用的軟件就默認安裝上了。在“Installation type”中,如果不打算安裝雙系統,直接選擇第一個“Erase ****”,這樣電腦上原先的系統以及相關文件數據等都將全部刪除,因此在此之前一定要備份好重要數據!接下來進入“Where are you”時區選擇,選擇“shanghai”即可,下一步讓你輸入你的名字、電腦名、用戶名、以及密碼等。輸入完畢,正式進入安裝流程,整個過程大概需要20分鍾左右。
二、設置軟件源的國內鏡像
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文件的頭部,保存退出。
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
然后,在命令行執行如下命令更新軟件源
sudo apt-get update
等待片刻,軟件源更新完成,這樣采用apt-get install方式安裝軟件時將優先從上述國內鏡像地址尋找軟件源,速度將快不少。到此,如果你不想了解關於國內鏡像的知識,可以直接進入下一節開始顯卡驅動的安裝,如果想了解ubuntu的鏡像知識,可以繼續往下看。
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 | 非自由軟件,完全不提供支持和補丁 |
下面分別給出18.04版本的官方源、阿里雲源、以及清華的源
- 官方源
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
- 阿里雲源
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
- 清華的源
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顯卡驅動的安裝
1. 首先查看顯卡型號和推薦的顯卡驅動
ubuntu-drivers devices
從輸出的信息看到推薦的是nvidia-driver-390的驅動,因此我們安裝nvidia-390驅動。需要注意的是有個奇怪的現象就是在中斷輸入上述命令,有可能得到不同的推薦,比如有可能推薦384或396或410驅動,在16.04系統上,我們安裝384驅動比較保險,在18.04系統上,理論上也沒問題,這里我們還是按照系統推薦,安裝390驅動。
2. 安裝nvidia-390版本驅動
# 將系統中存在的nvidia驅動全部卸載掉(如果有的話)
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
安裝速度取決於下載速度,還是有點慢,但勉強接受,如果安裝失敗,可以再試1次。安裝完畢記得一定要重啟系統。
3. 重啟系統,可以查看安裝是否成功
nvidia-smi
如果出現如下信息,說明驅動安裝成功。
四、CUDA9.0的安裝
1. CUDA版本選擇
目前CUDA已經到了CUDA10.0版本,但遺憾的是目即使最新的Tensorflow1.12也暫時只支持CUDA9.0,因此,我們選擇9.0版本進行安裝。當然,如果實在想嘗鮮,可以通過tensorflow的源碼安裝,需要自己編譯,我們將在另外文章中專門介紹,這里不詳述。
這里需要注意的是:在nvidia的官網上,我們發現CUDA9.0的ubuntu版本只有16.04和17.04的,而沒有18.04的(CUDA10.0有18.04版本),不過沒關系,經過測試發現17.04版本在18.04版本上能正常安裝並運行,因此這里我們選擇下載17.04版本的(16.04的沒有測試,理論上應該也是沒有問題的)。
2. 安裝CUDA9.0
首先從Nvidia官網下載cuda-repo-ubuntu1704-9-0-176-local-patch-4_1.0-1_amd64.deb和 4個補丁 文件。安裝步驟如下:
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:安裝補丁
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
當然,不安裝上述補丁對后續的安裝也應該沒多大影響,但是建議還是把上述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
如果出現上述信息,說明環境變量設置生效。
五、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框架了
六、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/ # 豆瓣
七、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作為內核即可。
通過上述步驟,我們已經完全配置了深度學習所需的基本環境,可以在深度學習的海洋中遨游了。