閱讀460 返回首頁    go 阿裏雲 go 技術社區[雲棲]


深度學習軟件安裝指南

由於即將要開始撰寫強化學習論文,所以我最近搭建了一個基於Ubuntu和Nvidia的深度學習計算機。雖然在深度學習方麵有很多不錯的教程,但卻無法找到一篇完整的安裝說明。我不得不閱讀大量的文檔來了解細節和規範,其中一些不完整或者存在語法錯誤。因此,我決定把我所做的所有工作進行整理並記錄下來。

該指南將告訴你如何進行安裝:

  • 操作係統(Ubuntu)
  • 4個驅動程序和庫(GPU驅動程序、CUDA、cuDNN和pip)
  • 5個Python深度學習庫(TensorFlow、Theano、CNTK、Keras和PyTorch)

下圖展示了每個包之間的依賴關係。由於隻需要安裝一個Python深度學習庫,因此你可以隨意選擇所需的部分。

11.png

每個組件更詳細的用途說明:

  1. ** Ubuntu **(v16.04.3) - 操作係統,進程調度。
  2. ** Nvidia GPU驅動程序**(v375) - 使操作係統能夠操作GPU。
  3. ** CUDA **(v8.0) - GPU C庫。代表計算統一設備架構。
  4. ** cuDNN **(v6.0.21) - 基於CUDA的深度學習基元庫。代表CUDA深度神經網絡。
  5. ** pip **(v9.0.1) - Python包安裝程序。
  6. ** TensorFlow **(v1.3) - 由Google開發的深度學習庫。
  7. ** Theano **(v0.9.0) - 在GPU上運行的數學庫。
  8. ** CNTK **(v2.2) - 由Microsoft Research開發的深度學習框架。
  9. ** Keras **(v2.0.8)- 深度學習包裝。可與TensorFlow、Theano或CNTK一起使用。
  10. ** PyTorch **(v0.2.0) - 具有GPU加速的動態深度學習庫。

1. 安裝 Ubuntu 16.04.3

本章節所示的安裝步驟將覆蓋已有的分區或操作係統,安裝一個**幹淨的操作係統**。

由於v 16.04.3是最新的LTS(長期支持)版本,因此它可以安裝在可啟動的USB上。首次打開計算機電源時,通過訪問引導菜單並選擇USB從USB引導。

我的計算機有兩個硬盤,1TB的SATA和256GB的SSD。在我的搭建計劃中,Ubuntu安裝在1TB的硬盤中,這樣SSD就可以用於存放數據集,加快訓練速度。在安裝過程中,屏幕顯示Installation Type時,我選擇了Something else,這一步將創建以下三個分區。

引導分區(128GB):包含係統文件、程序設置和文檔。
交換分區(2xRAM大小):對我來說,這是128GB。用於擴展內核RAM作為虛擬內存使用。
用戶分區(剩餘的):我的1TB硬盤驅動器的可用空間為744GB。

安裝完成後,運行以下命令升級內核版本。

sudo apt-get update
sudo apt-get upgrade

2. 安裝Nvidia GPU驅動程序

安裝Ubuntu後,你可能會注意到屏幕分辨率不正確,而且無法更改。這是因為來自GPU的視頻輸出沒有驅動程序,也沒有配置。

有兩種方法來安裝驅動程序,從某個**Ubuntu的資源庫**安裝,或者從**源**安裝。第一種方法更容易,但需要頻繁重新安裝。當調用命令sudo apt-get updatesudo apt-get upgrade時,會更新內核。這不會更新Nvidia驅動程序,並將導致GUI無法正確加載。而從源安裝則可以避免這個問題。

從包裝安裝v375(更容易)

以下命令將列出與係統兼容的驅動程序版本。它將給出兩個數字:最新版本和長期版本號。這個命令將從最早的版本開始列出,所以一定要向上滾動屏幕。

sudo add-apt-repository ppa:graphics-drivers/ppa

添加並安裝資源庫。在第二個命令中,將<driver_number>更改為要安裝的版本。建議安裝最新的長期支持版本:375。

sudo apt-get updatesudo apt-get install nvidia-<driver_number>

重新啟動計算機並重新配置視頻輸出參數。

sudo shutdown -r now

Screen Display(屏幕顯示)現在應該能夠正確識別使用的顯示器了,要測試驅動程序是否能正常工作,你可以更改顯示配置、分辨率和方向。

從Nvidia源安裝v384.90(更難)

Nvidia網站下載最新的驅動程序。對我而言,我選擇的選項是:

GeForce -> GeForce 10 係列 -> GeForce GTX 1080 -> Linux 64位 -> 英語(英國)

可以選擇編譯為32位架構,以及開發版本的GUI。

sudo apt-get install gcc-multilib xorg-dev

CTRL + ALT + F1並登錄。這將從GUI切換到終端。為了重建視頻輸出,必須首先停止GUI。

sudo service lightdm stop

如果該命令不起作用,那麼說明Ubuntu的新版本使用的是systemctl而不是lightdm。然後給這個程序賦予可執行權限並運行它。

cd <download location>
chmod +x NVIDIA-Linux-x86_64-384.90.run
sudo ./NVIDIA-Linux-x86_64-384.90.run --dkms

運行時,你可能會收到pre-install script failed(預安裝腳本失敗)的消息。這並不重要,因為預安裝腳本包含一個命令:exit 1。其目的隻是為了確保你真的要安裝驅動程序。

選項--dkms(默認情況下應該是這個選項)在內核通過將驅動程序安裝到一個模塊中來更新自身時,會阻止重新安裝驅動程序。在內核更新期間,dkms觸發驅動程序重新編譯到新的內核模塊堆棧。

如果安裝失敗,那是因為Secure Boot沒有在計算機的BIOS中禁用。重新啟動計算機並在BIOS選項中禁用Secure Boot

如果安裝成功,則可以重新啟動GUI了。

sudo service lightdm start

卸載:sudo ./NVIDIA-Linux-x86_64-384.90.run --uninstall

驗證

確保以下命令能夠識別正確的GPU版本

nvidia-smi

確保驅動程序版本號就是你所安裝的版本號

cat /proc/driver/nvidia/version

3. 安裝CUDA 8.0

Nvidia網站下載CUDA的運行文件,使用以下係統屬性:

Linux -> x86_64 -> Ubuntu -> 16.04 -> .deb(網絡)

瀏覽.deb文件的存放位置,卸載.deb,更新軟件包列表並使用以下命令安裝CUDA。

sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install cuda

將庫添加到bash路徑中,以便可以讓其他應用程序找到。

echo 'export PATH=/usr/local/cuda-8.0/bin${PATH:+:${PATH}}' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/local/cuda-8.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}' >> ~/.bashrc
source ~/.bashrc

要進行**驗證**,執行nvcc -V以檢查 Nvidia C 編譯器版本(nvcc)與CUDA所使用的編譯器版本一致。

重新啟動計算機sudo shutdown -r now來完成安裝。

可選:測試CUDA安裝

測試安裝的方法是**運行一些例程**。以下命令將創建一個名為test_CUDA的目錄,其中會存儲示例程序。

mkdir test_CUDA
cd test_CUDA
./cuda-install-samples-8.0.sh

子目錄NVIDIA_CUDA-8.0_Samples/3_Imaging/cudaDecodeGL中存放了文件findgllib.mk。該文件在第61行第30列包含了Nvidia驅動程序的硬編碼值,該值應從367更改為先前安裝的驅動程序版本號。

編譯例程

cd ../.. && make

你現在可以在NVIDIA_CUDA-8.0_Samples中運行例程了。 NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release中有兩個特別有用的腳本。 ./deviceQuery能打印出正在使用的GPU,./bandwidthTest能打印出GPU的帶寬。

4. 安裝 cuDNN 6.0.21

Nvidia網站上注冊開發人員計劃並同意條款。從下拉菜單**cuDNN v6.0.21 (April 27, 2017), for CUDA 8.0** 下載:

  1. cuDNN v6.0 Runtime Library for Ubuntu16.04 (Deb)
  2. cuDNN v6.0 Developer Library for Ubuntu16.04 (Deb)
  3. cuDNN v6.0 Code Samples and User Guide for Ubuntu16.04 (Deb)

.deb優於.tar,因為這個格式專門為Ubuntu設計,安裝過程更加清晰。這三個軟件包可以使用以下命令進行安裝:

sudo dpkg -i libcudnn6_6.0.21-1+cuda8.0_amd64.deb
sudo dpkg -i libcudnn6-dev_6.0.21-1+cuda8.0_amd64.deb
sudo dpkg -i libcudnn6-doc_6.0.21-1+cuda8.0_amd64.deb

測試 cuDNN

將安裝的例程複製到可讀目錄中,編譯並運行mnistCNN

cp -r /usr/src/cudnn_samples_v6/ $HOME
cd $HOME/cudnn_samples_v6/mnistCUDNN
make clean && make
./mnistCUDNN

如果一切順利,腳本應該返回Test passed!

卸載 cudnn

以下命令將卸載這三個庫。另外,如果你已經創建了例程,那麼另外還有執行rm -r〜/ cudnn_samples_v6

sudo apt-get remove libcudnn6
sudo apt-get remove libcudnn6-dev
sudo apt-get remove libcudnn6-doc

5. 安裝 pip 9.0.1

pip本身的更新非常頻繁,每兩周一次。建議使用最新的pip。

以下命令將進行安裝並升級到最新版本。

sudo apt-get install python-pip python-dev
sudo pip install --upgrade pip

要進行**驗證**,確保pip -V能打印出版本號。

6. 安裝 Tensorflow 1.3.0

pip install tensorflow-gpu

要進行**驗證**,啟動python,執行$ python,並確保以下腳本能打印出Hello, TensorFlow!

import tensorflow as tf
hello = tf.constant('Hello, TensorFlow!')
sess = tf.Session()
print(sess.run(hello))

7. 安裝 Theano 0.10

Theano需要以下係統依賴關係

sudo apt-get install libopenblas-dev 

和以下Python依賴關係。

sudo pip install numpy scipy nose sphinx pydot-ng `pycuda scikit-cuda cython`

libgpuarray讓Theano能夠使用GPU,它必須從源代碼進行編譯。首先下載源代碼

git clone https://github.com/Theano/libgpuarray.git
cd libgpuarray

在一個名為Build的文件夾中進行編譯。

mkdir Build
cd Build
cmake .. -DCMAKE_BUILD_TYPE=Release
make
sudo make install

然後編譯成一個python包

cd ..
`python setup.py build
sudo python setup.py install`

將下麵這一行添加到~/.bashrc中,以便Python可以找到這個庫。

export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH

最後,安裝Theano

sudo pip install git+https://github.com/Theano/Theano.git#egg=Theano

要進行**驗證**,首先創建一個測試文件test_theano.py其內容可以從這裏複製過去。然後確保THEANO_FLAGS = device = cuda0 python test_theano.py能成功輸出Used the gpu

8. 安裝 CNTK 2.2

sudo pip install https://cntk.ai/PythonWheel/GPU/cntk-2.2-cp27-cp27mu-linux_x86_64.whl

要進行**驗證**,確保python -c "import cntk; print(cntk.__version__)"能打印出2.2

9. 安裝 Keras 2.0.8

sudo pip install keras

要進行**驗證**,檢查$ python中的import keras是否成功了。

10. 安裝 PyTorch 0.2.0

PyTorch的運行依賴torchvisiontorch這兩個庫,下麵將進行安裝。

sudo pip install https://download.pytorch.org/whl/cu80/torch-0.2.0.post3-cp27-cp27mu-manylinux1_x86_64.whl
sudo pip install torchvision

要進行**驗證**,以下腳本應該能打印出一個張量。

from __future__ import print_function
import torch
x = torch.Tensor(5, 3)
print(x)

結論

到目前為止,整個過程中最難的部分是找到Nvidia驅動程序和深度學習軟件包之間的依賴關係,以及最有效的長期支持版本的安裝過程。最簡單的部分是安裝Python包,這些包維護得非常好,而且文檔詳細。

雖然閱讀文檔和源代碼非常耗時,但是了解每個軟件包的構建和運行情況非常有啟發性,它能夠幫助我了解整個Ubuntu生態係統。

文章原標題《Deep Learning Software Installation Guide》,作者:dyth,譯者:夏天,審校:主題曲。

文章為簡譯,更為詳細的內容,請查看原文

最後更新:2017-10-05 10:33:18

  上一篇:go  十分鍾教程:用Keras實現seq2seq學習
  下一篇:go  用於自然語言處理的數據集集錦