本文長度為2385字,建議閱讀4分鐘
本文為你介紹10個深度學習軟體安裝指南。
由於近期論文的需要,我搭建了一個基於 Ubuntu 和英偉達的深度學習環境。儘管已經有很多非常棒的關於英偉達驅動和 CUDA 的安裝指南, 但依然沒有詳盡的深度學習環境搭建指南。另外,我需要查閱很多文檔來熟悉細節,其中一些細節還有待完善,甚至還有一些包含語法錯誤。因此我決定把我這段時間查閱的文檔(見參考連結)做個總結。
該指南會安裝如下內容
下面顯示了每個包的依賴項。Python 深度學習庫只需安裝一個,你可以選擇一個喜歡的進行安裝。
下面是更為詳細的組件清單:
Ubuntu(v16.04.3)- 作業系統,進程管理。
英偉達顯卡驅動(v375)- 允許作業系統操作顯卡。
CUDA(v8.0)- 顯卡 c 語言庫。提供了統一不同架構的標準。
cuDNN(v6.0.21)- 基於 CUDA 的深度神經網絡庫。
pip(v9.0.1)- Python 包管理工具。
TensorFlow(v1.3)- 谷歌開發的深度學習庫。
Theano(v0.9.0)- 運行於 GPU 的數學基礎庫。
CNTK(v2.2)- 微軟搜索開發的深度學習框架。
Keras(v2.0.8)- 深度學習庫包裝層(對外提供統一調用,內部可使用不同的深度學習框架),支持 TensorFlow,Theano 和 CNTK。
PyTorch(v0.2.0)- GPU 加速運算的動態深度學習庫。
1. 安裝 Ubuntu 16.04.3
v 16.04.3 是最新的 LTS(長期支持)版本,因此我們選擇從 USB 啟動盤安裝。當按下電源鍵後進入啟動菜單選擇從 USB 啟動。
我的設備包含兩塊硬碟,1TB 的機械硬碟和 256GB 的固態硬碟。我把系統安裝在了機械硬碟上,固態硬碟用於數據存儲,這樣能提高模型訓練速度。安裝過程中我選擇了創建 3 個分區。
啟動分區(128GB):包含系統文件,程序設置和文檔。
交換分區(2 倍內存大小):對於我該分區大小 128GB。交換分區是用於擴展內存的虛擬內存。
用戶分區(剩餘):剩餘的 744GB 為用戶分區。
安裝完成後,運行以下命令升級內核。
2. 英偉達顯卡驅動
Ubuntu 安裝完成後會發現無法修改屏幕解析度。這是因為視頻屏幕數據源 GPU 沒有驅動和沒有被正確的配置。
有從 Ubuntu 倉庫和 source 兩種方式安裝驅動。第一種方式更簡單,但經常需要重新安裝。調用 sudo apt-get update 和 sudo apt-get upgrade 兩個命令會升級內核。這不會升級顯卡驅動並會造成 GUI 加載失敗。從 source 進行安裝避免了這個問題。
從包安裝 v375(更簡單)
下面命令列出了與你系統兼容的所有驅動版本。輸出會列印兩個版本數字:最新和長期支持的發行版本號。列印的版本號在輸出的最前面,向上滑動查看。
添加並安裝倉庫源。使用下面命令修改想要安裝的驅動版本號。建議修改為最新的長期支持版本 -375。
重啟電腦重新配置屏幕輸出源。
安裝完成後,顯示器應該可以識別你使用的監視器,可通過修改顯示器配置,解析度和方向來檢測驅動是否安裝成功。
從英偉達源安裝 v384.90(困難)
從英偉達官網下載最新驅動。我選擇的是:
GeForce -> GeForce 10 Series -> GeForce GTX 1080 -> Linux 64 bit -> English (UK)
以下命令為可選項,可允許編譯為 32 位架構和 GUI 開發者版本。
按下 CTRL+ALT+F1 並登陸會從 GUI 切換到終端。為了重新構建屏幕輸出源,必須暫停用戶界面。
要是上面命令不起作用,新版 Ubuntu 可使用 systemctl 替代 lightdm。然後修改 runfile 為可執行並執行。
運行時有可能會遇到 pre-install script failed 的錯誤信息。這是因為 pre-install 包含了 exit 1 命令因此該錯誤信息可以直接忽略。該命令的作用是為了確保你真的想要安裝驅動。
--dkms 選項(默認打開)用於防止內核通過安裝驅動到模塊進行更新時,該驅動會重新安裝。內核更新時,dkms 會觸發驅動重新編譯到新內核模塊棧。
如果 BIOS 沒有禁用安全啟動會導致安裝失敗。重啟電腦進入 BIOS,禁用安全啟動。
如果安裝成功,重啟 GUI。
卸載:shell sudo ./NVIDIA-Linux-x86_64-384.90.run --uninstall
認證
確保下面命令能夠識別正確的 GPU 版本
nvidia-smi確保驅動版本號正確
3. 安裝 CUDA8.0
從英偉達官網下載 CUDA 的運行文件。如下選擇:
Linux -> x86_64 -> Ubuntu -> 16.04 -> .deb(network)
切換目錄到.deb 文件,使用以下命令解包、更新包列表並安裝 CUDA。
添加該庫到 bash 路徑以便其他應用也能找到。
輸入 nvcc -V 命令確保英偉達 c 編譯器版本和 CUDA 版本匹配。
輸入 sudo shutdown -r now 重啟電腦完成安裝。
可選:檢測 CUDA 安裝
可通過運行例子來檢測安裝是否成功。下面命令創建一個 test_CUDA 文件夾用於存儲示例。
在子文件夾 NVIDIA_CUDA-8.0_Samples/3_Imaging/cudaDecodeGL 下包含一個 findgllib.mk 文件。文件的第 61 行,30 列是硬編碼的英偉達驅動版本號 367,該版本號需要修改為之前安裝的版本號。
編譯示例
cd ../.. && make
現在可以在 NVIDIA_CUDA-8.0_Samples 中運行你的核心內容。NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release 路徑下有兩個非常有用的腳本。./deviceQuery 可列印出 GPU 信息,./bandwidthTest 可列印出帶寬。
參考連結:英偉達 CUDA 安裝手冊
4. 安裝 cuDNN6.0.21
在英偉達官網,選中同意條款註冊成為開發者。為匹配 CUDA8.0,在 cuDNN v6.0.21 下拉菜單中下載:
針對 Ubuntu16.04 的 cuDNN v6.0 運行時庫(Deb)
針對 Ubuntu16.04 的 cuDNN v6.0 開發者庫(Deb)
針對 Ubuntu16.04 的 cuDNN v6.0 代碼示例和用戶指南(Deb)
.deb 可以純淨安裝,相較.tar 來說是更好的選擇。使用下面命令會安裝三個包:
測試 cuDNN
拷貝已安裝的示例代碼到可讀文件夾下,編譯並運行 mnistCNN。
運行正常腳本會返回 Test passed!
卸載 cudnn
下面命令可以卸載安裝好的三個包。另外,如果創建過示例,記得運行 rm -r ~/cudnn_samples_v6。
參考連結:cuDNN 安裝指南
5. 安裝 pip9.0.1
Pip 更新非常頻繁,基本每兩周就會更新一次。建議使用最新版本。
下面命令用來安裝 pip 和更新到最新版本。
為確保是最新版本,運行 pip -V 來檢查版本號。
6. 安裝 Tensorflow1.3.0
pip install tensorflow-gpu
為驗證是否安裝成功,使用 $python 開啟 python,運行以下腳本確保輸出列印 Hello, TensorFlow!
參考連結:Ubuntu 上如何安裝 tensorflow
7. 安裝 Theano 0.10
Theano 需要下面系統依賴
和 Python 依賴。
libgpuarray 允許 Theano 使用 GPU,libgpuarray 只能從源碼編譯。首先 下載源碼
編譯到指定文件夾 Build 下。
然後編譯到 python 包中
添加下面命令到~/.bashrc 中以便 python 能夠找到該庫。
最後安裝 Theano
驗證是否安裝成功,創建一個 test_theano.py 文件,將內容拷貝至該文件。確保 THEANO_FLAGS=device=cuda0 python test_theano.py 命令運行成功並輸出 Used the gpu。
參考連結:Theano 0.9.0 文檔
8. 安裝 CNTK2.2
驗證是否安裝成功,運行 python -c "import cntk; print(cntk.version)"查看是否列印 2.2。
參考連結:如何配置 CNTK
sudo pip install keras
從 $python 環境運行 import keras 驗證是否安裝成功。
參考連結:Keras 安裝
10. 安裝RyTorch0.2.0
PyTorch 依賴兩個庫 torchvision 和 torch。
安裝成功後下面腳本應該列印出一個隨機的浮點數。
參考連結:PyTorch 主頁
總結
整個安裝過程最困難的部分是找出英偉達驅動和深度學習庫之間的依賴項和找到最有效的長期支持安裝教程。最簡單的部分是安裝文檔更新活躍且詳細的 Python 包。
儘管閱讀文檔瀏覽源碼很費時間,但了解每個包的作用和如何構建對了解整個 Ubuntu 生態是很有幫助的。
最後,感謝您的閱讀!
原文連結:
https://medium.com/@dyth/deep-learning-software-installation-guide-d0a263714b2
編輯:王璇