手把手教你安裝深度學習軟體環境(附代碼)

2021-02-24 數據派THU

本文長度為2800,建議閱讀5分鐘。

本文向你解釋如何在一臺新裝的 Ubuntu 機器上安裝 Python 和 Nvidia 硬體驅動、各類庫和軟體包。

為了進行強化學習研究,我最近購置了一臺基於 Ubuntu 和英偉達 GPU 的深度學習機器。儘管目前在網絡中能找到一些環境部署指南,但目前仍然沒有全面的安裝說明。另外,我也不得不閱讀了很多文檔來試圖理解安裝細節——其中的一些並不完整,甚至包含語法錯誤。因此,本文試圖解決這個問題,提供一個詳盡的軟體環境安裝指南。

本文將指導你安裝

這些軟體之間的互相依賴關係如下圖所示。其中,你只需要安裝一種深度學習庫,請自由選擇。

深度學習軟體安裝和依賴示意圖

以下是各個軟體的細節介紹:

Ubuntu(v16.04.3)——作業系統,各種任務處理。

Nvidia GPU 驅動(v375)——允許系統獲得 GPU 帶來的加速。

CUDA(v8.0)——GPU C 語言庫。「計算同一設備架構」。

cuDNN(v6.0.21)——基於 CUDA 的深度學習基元庫。「CUDA 深度學習庫」。

pip(v9.0.1)——Python 安裝包。「Pip 安裝包」。

TensorFlow(v1.3)——谷歌開發的深度學習框架。

Theano(v0.9.0)——此前由 MILA 負責維護的深度學習框架。

CNTK(v2.2)——微軟研究院開發的深度學習框架。

Keras(v2.0.8)——深度學習包裝可互換後端。可與 TensorFlow、Theano 和 CNTK 共同使用。

PyTorch(v0.2.0)——可被 GPU 加速的動態圖深度學習框架,主要由 Facebook 的研究人員負責開發。

1. 安裝 Ubuntu 16.04.3

v 16.04.3 可由 USB 啟動的方式安裝,它是最新的 LTS(長期支持)版本。首次在電腦上啟用時,請在 BIOS 中選擇由 USB 引導啟動。

我的電腦中有兩塊硬碟——一塊 1TB 的 SATA 和一塊 256GB 的 SSD。在我的設想中,Ubuntu 被安裝在常規硬碟中,固態硬碟(SSD)用於處理數據集和加速訓練。在安裝過程中,在屏幕中的 Installation Type 中選擇 Something else,隨後我們要進行三個分區操作:

引導分區(128GB):包含系統文件、程序設置和文檔。

交換分區(2 倍的內存大小):對於我來說這就是 128GB。這塊分區的容量用於擴展 Kernel RAM 作為虛擬內存使用。

用戶分區(剩下的部分):1TB 的硬碟剩下的空間大約還有 744GB。

在安裝後,最好先運行以下命令來升級內核版本。

sudo apt-get update

sudo apt-get upgrade

Reference:https://tutorials.ubuntu.com/tutorial/tutorial-install-ubuntu-desktop#0

2. 安裝英偉達 GPU 驅動

在安裝完 Ubuntu 後,你可能會發現屏幕的解析度不對,而且不能修改,這是因為現在還沒有安裝 GPU 驅動。

安裝驅動有兩種方法:從 Ubuntu 資源庫和數據源。第一個方法更加容易,但需要頻繁的重新安裝。使用 sudo apt-get update 和 sudo apt-get upgrade 指令後,系統的內核可以自動升級。但這樣並不會更新英偉達驅動,可能會導致 GUI 無法正確加載。從數據源安裝可以避免這個問題。

以下命令會將與你系統相兼容的驅動版本顯示出來,它會提供兩個版本號:最新的不穩定版和長期穩定版。版本號會從頭列起,所以你需要把頁面滾到最上面。

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

添加並安裝資源庫。通過第二個命令,改變你想要安裝的<driver_number>。我們在這裡推薦安裝最新的長期穩定版本——375 版。

sudo apt-get update

sudo apt-get install nvidia-<driver_number>

重啟計算機以重新配置視頻輸出。

sudo shutdown -r now

要測試驅動程序是否工作,Screen Display(SUPERKEY,屏幕顯示類型)現在應該可以識別你使用的顯示器了,你可以修改設置、解析度與方向。

Reference:https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa

從英偉達網站下載最新的驅動程序版本。基於硬體配置,我選擇的選項是:

GeForce -> GeForce 10 Series -> GeForce GTX 1080 -> Linux 64 bit -> English (UK)

可選條件:編譯到 32 位架構和 GUI 的開發版本。

sudo apt-get install gcc-multilib xorg-dev

按 CTRL + ALT + F1 鍵登錄,從 GUI 轉至終端。為了重建視頻輸出,必須先將其暫停。

sudo service lightdm stop

如果命令行沒有效果,Ubuntu 新版本使用 systemctl 替換 lightdm。然後使 runfile 可執行,並運行它。

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(默認開啟)在 kernel 自行更新時將驅動程序安裝至模塊中,從而阻止驅動程序重新安裝。在 kernel 更新期間,dkms 觸發驅動程序重編譯至新的 kernel 模塊堆棧。

如果安裝失敗,則原因在於計算機的 BIOS 未關閉 Secure Boot。重啟電腦,在 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

從英偉達網站,使用下列系統屬性下載 CUDA 的 runfile(地址:https://developer.nvidia.com/cuda-downloads)。

Linux -> x86_64 -> Ubuntu -> 16.04 -> .deb(network)

導航至.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 path,這樣就可以使用其他應用找到庫了。

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 Compiler(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 列包含了英偉達驅動程序的硬編碼值,該值應從 367 更改成你安裝的驅動程序版本號。

編譯示例

cd ../.. && make

你現在可以在 NVIDIA_CUDA-8.0_Samples 內隨意運行示例。你可以在 NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release 中找到兩個非常有用的腳本:./deviceQuery 可以在使用過程中列印 GPU,./bandwidthTest 可以列印它的帶寬。

Reference:http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html

4. 安裝 cuDNN 6.0.21

在英偉達網站上註冊開發者項目,同意條款。從下拉菜單中選擇 cuDNN v6.0.21 (April 27, 2017), for CUDA 8.0,並下載:

cuDNN v6.0 Runtime Library for Ubuntu16.04 (Deb)

cuDNN v6.0 Developer Library for Ubuntu16.04 (Deb)

cuDNN v6.0 Code Samples and User Guide for Ubuntu16.04 (Deb)

.deb 優先於.tar,因為.deb 格式更適用於 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

Reference:cuDNN Installation Guide cuDNN Installation Guide(http://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html)

5. 安裝 pip 9.0.1

Pip 的升級非常頻繁,幾乎每兩周一次,建議使用最新版本的 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,確認是否以下腳本能夠列印出 Hello, Tensorflow!

import tensorflow as tf

hello = tf.constant('Hello, TensorFlow!')

sess = tf.Session()

print(sess.run(hello))

Reference:https://www.tensorflow.org/install/install_linux

7. 安裝 Theano 0.10

Theano 需要的系統環境:

sudo apt-get install libopenblas-dev cmake git

此外還要遵循 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,其中的內容複製自:http://deeplearning.net/software/theano/tutorial/using_gpu.html#testing-theano-with-GPU

隨後看看 THEANO_FLAGS=device=cuda0 python test_theano.py 在使用了 GPU 之後是否成功。

Reference: Theano 0.9.0 documentation(http://deeplearning.net/software/theano/install_ubuntu.html)

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。

Reference: Setup CNTK on your machine(https://docs.microsoft.com/en-us/cognitive-toolkit/setup-cntk-on-your-machine)

9. 安裝 Keras 2.0.8

sudo pip install keras

驗證:檢查$ python 中的 import keras 是否成功。

Reference: Keras Installation(https://keras.io/#installation)

10. 安裝 PyTorch 0.2.0

PyTorch 運行在兩個庫上: torchvision 和 torch,我們需要這樣安裝:

sudo pip install http://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)

Reference: http://pytorch.org/

結論

目前為止,整個過程中最難的部分是找出 Nvidia 驅動和深度學習包之間的依賴關係,以及最有效的長期安裝過程。而最簡單的部分是安裝 Python,安裝包和文檔都得到了良好的維護。

雖然閱讀文檔和原始碼都非常耗費時間,但了解每個軟體包的構建和功能是非常具有啟發性的,它也可以幫助我們理解整個 Ubuntu 生態系統。

希望本文對你有所幫助。 

編輯:文婧

相關焦點

  • 手把手教你搭建谷歌TensorFlow深度學習開發環境!
    15年11月,谷歌開源了其用來製作AlphaGo的深度學習系統TensorFlow,但是當時的TensorFlow只能在Linux平臺上使用。16年11月,Google Brain 工程師團隊宣布TensorFlow 0.12 版本支持Windows 原生作業系統。2017年,TensorFlow終於推出了1.0版本,這標誌著應用最廣泛、使用人數最多的深度學習算法TensorFlow推出了正式版。
  • 手把手教 | 深度學習庫PyTorch(附代碼)
    本文通過案例帶你一步步上手PyTorch。  介紹每隔一段時間,就會有一個有潛力改變深度學習格局的python庫誕生,PyTorch就是其中一員。 注意:本文假定你對深度學習有基本的認知。這一點正好符合Python的編程方法學,因為我們沒必要等到代碼全部寫完才知道它是否能運行。我們可以輕鬆地運行一部分代碼並實時檢查它。對於我這樣的神經網絡調試人員而言,這真是一件幸事。 PyTorch是一個基於python的庫,它旨在提供一個靈活的深度學習開發平臺。PyTorch的工作流程儘可能接近Python的科學計算庫--- numpy。
  • 手把手教你安裝OpenCV與配置環境
    OpenCV是一款優秀的計算機視覺庫,它包含了豐富的接口,同時也實現了圖像處理和計算機視覺的很多通用算法,如果你想學習或者運用計算機視覺類的項目,那麼OpenCV給我們免去了諸多造輪子的麻煩。鑑於目前網上大多數搭建OpenCV的教程都不詳細,而且沒考慮中途出現的諸多問題,這對於初學者來說極為浪費時間。
  • 手把手教你搭建自己的深度學習機器
    目前,我們已經可以很快的處理超大計算量的問題——這多虧了GPU,GPU最初就是用於快速生成高解析度計算機圖像,由於它的計算效率使得其非常適合用於深度學習算法。原先需要用好幾周才能分析出來的結果,現在幾天時間就能完成。雖然現在的計算機都有GPU,但是並不是所有的GPU都適合用來進行深度學習。
  • 手把手教你如何安裝TensorFlow+Anaconda+Pycharm,史上最詳細教程
    上期視頻,講了如何安裝pytorch,今天手把手教大家安裝TensorFlow環境,從頭到尾都是乾貨,希望能幫助你走出深度學習入門的第一步,廢話不多說,直接開講。2、創建一個名為tf1的環境,為安裝TensorFlow1.13.1創一個環境 輸入命令create 表示創建一個環境--name 後面為環境的名稱Python
  • 想入門深度學習不會搭建環境?手把手教你在Amazon EC2上安裝Keras
    我們的個人電腦一般很難勝任這樣大的網絡,但是你可以相對輕鬆地在Amazon EC2服務中租到一臺強勁的電腦,並按小時支付租金。我用的是Keras,一個神經網絡的開源python庫。由於用法十分簡單,它很適合入門深度學習。它基於Tensorflow,一個數值計算的開源庫,但是也可以使用Theano。
  • 手把手教你安裝破解office2010
    昨天一個朋友問小編怎樣安裝office2010,office2010作為平時辦公、計算器二級必不可少的軟體,相信大多數人都像小編朋友那樣
  • 谷歌免費GPU,在線Jupyter notebook深度學習環境
    你可以用它來直接跑代碼,也可以使用一些系統命令(我們後面要安裝第三方軟體都需要藉助一系列的系統命令)。看到這有沒有感覺自己瞬間多了一臺電腦~前期配置1. 修改筆記本環境我們每新建一個Colab項目,先對筆記本環境進行配置,選擇是Python2還是Python3,是否使用GPU。
  • 手把手教你搭建C語言開發環境,不信你學不會~
    開發環境是指在基本硬體和數字軟體的基礎上,為支持系統軟體和應用軟體的工程化開發和維護而使用的一組軟體,簡稱SDE。簡單的來說,就是你要在特定的環境下去敲代碼,做項目,然後用於最後的開發。在學習C語言的過程中,我們同樣收集到很多同學的反饋,確實遇到很多開發環境搭建問題。
  • 手把手教你如何查看本機ip地址(附自錄視頻教程)
    其他關於ip地址的知識,可以查看本文:關於ip、域名那些你不知道的事(內容很豐富的哦~)一、內網ip地址的查看方法1、直接在網絡連接處查看步驟:打開網絡和共享中心  >>  本地連接  >>  詳細 ,然後就可以查看到ip地址了。如圖:
  • 手把手教你破解一個會員,附成品
    盤大廠的產品怕被舉報刪文,今天就挑個小軟體,手把手教大家怎麼整它,再把成果直接分享給大家~紙塘壁紙首先需要蘋果手機,然後要下載完網球app,下載和安裝教程見這篇文章:蘋果http catcher網球配置完整教程
  • Pytorch深度學習教程在此,手把手教你從DQN到Rainbow
    這裡有一份乾貨教程,手把手帶你入門深度強化學習(Deep Reiforcement Learning),背景理論、代碼實現全都有,在線領取無需安裝喲!廢話不多說,趕緊領取教程看看裡頭具體都有哪些寶藏知識吧~步步深入RL這份Pytorch強化學習教程一共有八章,從DQN(Deep Q-Learning)開始,步步深入,最後向你展示Rainbow到底是什麼。
  • Tensorflow實戰系列:手把手教你使用LSTM進行文本分類(附完整代碼)
    【導讀】專知小組計劃近期推出Tensorflow實戰系列,計劃教大家手把手實戰各項子任務。
  • 【下載】深度強化學習實戰書籍和代碼《Deep Reinforcement Learning in Action》
    Learning in Action》介紹使用流行的PyTorch深度學習框架來構建網絡,以探索從深度Q網絡到策略梯度方法,再到進化算法的一系列強化學習算法。手把手教你構建深度強化學習項目,比如控制模擬機器人,自動化股票市場交易,甚至建造一個可以玩圍棋的機器人。隨書同時提供代碼,可以讓你動手測試改進。
  • Python 深度學習,你的 Keras 準備好了嗎?
    該書是由 Keras 作者寫的,所以全書基本圍繞著 Keras 講深度學習的各種實現,從 CNN,RNN 到 GAN 等,偏入門,但理論和實戰部分都講的還不錯,承載著很多作者對深度學習整體性的思考。目前該書的中英文版包括源碼見下面的連結:連結:https://pan.baidu.com/s/1kTTGpzQo-p5ZfeSI6HlbEA 提取碼:mnz9 我花了幾天時間快速過了這本書,當然少不了跑跑書上的代碼。代碼的完整性很高,難易程度作者都分層次介紹得比較清楚。總之,Keras 非常適合大家快速上手深度學習項目。
  • 手把手教你實現機器學習SVM算法
    向AI轉型的程式設計師都關注了這個號👇👇👇大數據挖掘DT機器學習  公眾號: datayxSVM支持向量機是建立於統計學習理論上的一種分類算法還有一個比較通俗的簡單版本的:手把手教你實現SVM算法:http://blog.csdn.net/alvine008/article/details/9097105SVN原理比較複雜,但是思想很簡單,一句話概括,就是通過某種核函數,將數據在高維空間裡尋找一個最優超平面,能夠將兩類數據分開。針對不同數據集,不同的核函數的分類效果可能完全不一樣。
  • 手把手教你搭建自己的git+gerrit代碼評審伺服器
    自己開發的代碼,過了幾天,忘記修改了什麼,忘了上次改到哪了,代碼突然找不到了等等,甚至容易消磨自己的耐心,成就感不高。今天就教你用git+gerrit管理自己的代碼,這也是大公司的開發模式。先來看效果吧~
  • 手把手教你搭建$1000以下的超級深度學習機器
    而且,你可以在 帶有 GPU 引擎的 EC2 節點上每小時只花 1 美元跑 TensorFlow。這些可選方案可能比構建你自己的計算機更具實用感。但如果你像我一樣,你會渴望構建你自己的高速深度學習機器。好吧,一千美元花在一個 DIY 項目上是太多了,但一旦你把機器搞起來,你可以建立數百個深度學習應用程式,從增強的機器人大腦到藝術項目(至少,我是如此為自己辯解的)。
  • 手把手教你在谷歌雲平臺搭建基於GPU的深度學習
    大數據文摘授權轉載自 數據派THU作者:Saurabh Bodhe編譯:陳振東、車前子我知道,基於GPU的高端的深度學習系統構建起來非常昂貴此外,我還假設你有一個NVIDIA的顯卡,我們在本教程中只討論如何配置TensorFlow,也就是目前最受歡迎的深度學習框架(向谷歌致敬!)CUDA是NVIDIA開發的一個並行計算平臺,是搭建TensorFlow的基本前提。但是我們後面會提到,實際上最好使用逆向工作的方法,所以我們稍後再回到這部分。啟動終端(如果是遠程訪問的話,就使用SSH)。
  • 深度學習GPU環境CUDA安裝教程
    本文講訴一下Windows10環境下CUDA和cuDNN下載和安裝方法    1.1 什麼是CUDA