Ubuntu18.04+RTX 2080Ti+CUDA 10.0 +cuDNN+PyTorch搭建深度學習環境

基本硬件環境

硬件基本信息

硬件 型號
CPU I7-9700k
GPU RTX 2080ti
內存 DDR4 2666 16GB*2
主板 ASUS Z390-A
機箱 Tt(Thermaltake) 啓航者S5
電源 海盜船 850W 支持2080ti
SSD固態硬盤 三星 500GB M.2接口 860 EVO
HHD機械硬盤 西部數據 1TB SATA3接口
CPU散熱器 九州風神 玄冰400 12cm
機箱散熱器 先馬(SAMA) 黑洞 12cm * 3

SSH

SSH無密碼登陸

  • 安裝SSH Server

    Ubuntu 默認已安裝了 SSH client,此外還需要安裝 SSH server:

    sudo apt-get install openssh-server

  • 登陸本機

    ssh localhost

    此時會有如下提示(SSH首次登陸提示),輸入 yes 。然後按提示輸入密碼 ,但這樣登陸是需要每次輸入密碼的,我們需要配置成SSH無密碼登陸比較方便。

  • SSH 無密碼登陸

    首先退出剛纔的 ssh,回到了我們原先的終端窗口,然後利用 ssh-keygen 生成密鑰,並將密鑰加入到授權中:

    exit                           # 退出剛纔的 ssh localhost
    cd ~/.ssh/                     # 若沒有該目錄,請先執行一次ssh localhost
    ssh-keygen -t rsa              # 會有提示,都按回車就可以
    cat ./id_rsa.pub >> ./authorized_keys  # 加入授權
    

    此時再用 ssh localhost 命令,無需輸入密碼就可以直接登陸了

安裝驅動

linux安裝NVIDIA顯卡驅動

驅動下載地址 ,下載時切記選擇.run版本,我們下載的版本是NVIDIA Linux-x86_64-430.40.run

安裝驅動之前要安裝其他需要的依賴工具:

sudo apt-get install gcc g++ make

檢測驅動是否成功安裝

方法1:使用nvidia-smi命令測試

英偉達系統管理接口(NVIDIA System Management Interface, 簡稱 nvidia-smi)是基於NVIDIA Management Library (NVML) 的命令行管理組件,旨在(intened to )幫助管理和監控NVIDIA GPU設備。

在終端輸入命令nvidia-smi

方法2:使用nvidia-settings命令

在終端輸入命令nvidia-settings

會調出NVIDIA的驅動管理程序:

如果打開的頁面能夠看到驅動的版本號,如本案例所示爲430.40,則nvidia-setting安裝正常。

搭建深度學習環境

CUDA 10.0安裝

進入CUDA toolkit download官網之後會顯示CUDA最新版本,這個時候先別急着選系統和下載文件類型,先看一下下什麼樣的CUDA版本能夠跟PyTorch適配。

  • 進入PyTorch官網

    [外鏈圖片轉存失敗(img-iwQF93nZ-1567431503797)(https://yalana.oss-cn-hangzhou.aliyuncs.com/2019-9-week1/pytorch%20select.png)]

    我們能看到可選擇的CUDA版本只有9.2和10.0,因此我們去CUDA官網下載10.0版本

  • CUDA toolkit起始界面

  • 選擇適配的CUDA版本

    打開顯示的是最新的10.1 版本,這裏我們選擇“Legacy Releases”查看之前發佈的版本,並如下圖所示選擇“CUDA Toolkit 10.0”版本

  • 定製化下載CUDA 10.0

  • 安裝CUDA

    sudo sh cuda_10.0.130_410.48_linux.run

    然後會出現很長的協議書,一直按到最後出現如下需要用戶選擇的界面:

    之後,按照提示安裝即可。我依次選擇了:

    1 accept #同意安裝
    2 n #不安裝Driver,因爲已安裝最新驅動
    3 y #安裝CUDA Toolkit
    4 <Enter> #安裝到默認目錄
    5 y #創建安裝目錄的軟鏈接
    6 y #複製Samples一份到家目錄
    

    安裝完成界面(由於我們沒有選擇安裝driver,因此會顯示不完全安裝,但是CUDA toolkit都已成功安裝就可以了):

    以及安裝過程中有CUDA location:

    在本例中cuda被安裝到的路徑爲/usr/local/cuda-10.0

  • 更改環境變量、創建動態鏈接庫並創建鏈接文件

    • 聲明環境變量

      $ sudo vim ~/.bashrc

      在文件(在用戶目錄下)的尾部,輸入內容如下:

      export PATH=/usr/local/cuda-10.0/bin${PATH:+:$PATH}} 
      export LD_LIBRARY_PATH=/usr/local/cuda-10.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
      

      保存退出,並輸入下面指令使環境變量立刻生效:

      $ source ~/.bashrc

    • 設置環境變量和動態鏈接庫

      $ sudo vim /etc/profile

      在打開的文件末尾加入:

      export PATH=/usr/local/cuda/bin:$PATH

    • 創建鏈接文件

      $ sudo vim /etc/ld.so.conf.d/cuda.conf

      在打開的文件中添加如下語句:

      /usr/local/cuda/lib64

      保存退出,然後執行

      $ sudo ldconfig使鏈接立即生效。

  • 檢查CUDA是否安裝成功

    nvcc --version

  • CUDA Sample測試

    切換到 CUDA 10.0 Samples 默認安裝路徑(即在/home/用戶/NVIDIA_CUDA-9.1_Samples 目錄下), 終端下輸入:

    $ cd NVIDIA_CUDA-10.0_Samples
    $ sudo make all -j4
    

  • 查看CUDA 驅動和CUDA toolkit版本

    $ cd bin/x86_64/linux/release
    $ ./deviceQuery
    

    Q:這個時候存在一個問題 如果CUDA驅動比CUDA版本要高 是否可以支持?

安裝cuDNN

先在NVIDIA官網註冊用戶名和密碼,然後進入cuDNN下載頁面,需要與BUDA10.0環境適配,因此我們選擇下載以下幾項來安裝:

  • 首先解壓tgz包

    tar -zxvf cudnn-10.0-linux-x64-v7.6.2.24.tgz

  • 複製文件到cuda環境

    sudo cp cuda/include/cudnn.h /usr/local/cuda/include
    sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
    sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
    
  • 安裝deb包

    sudo dpkg -i libcudnn7_7.6.2.24-1+cuda10.0_amd64.deb
    sudo dpkg -i libcudnn7-dev_7.6.2.24-1+cuda10.0_amd64.deb
    sudo dpkg -i libcudnn7-doc_7.6.2.24-1+cuda10.0_amd64.deb
    
  • 測試是否安裝成功

    cp -r /usr/src/cudnn_samples_v7/ ~
    cd ~/cudnn_samples_v7/mnistCUDNN
    make clean && make
    ./mnistCUDNN
    

    顯示“Test passed!”即測試通過!

安裝Python、Anaconda和Pip

Python

  • 下載python 3.7.2 源程序壓縮包

    $ sudo wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz

  • 解壓

    $ tar -xzvf Python-3.7.2.tgz

  • 配置

    $ cd Python-3.7.1
    $ ./configure --enable-optimizations
    

    執行上述語句將啓用代碼的發佈版本,可以優化二進制文件以更好的更快的運行,但是需要運行測試,編譯時需要花費一些時間(大約半小時),也可以不進行這一項配置。

  • 編譯和安裝Python 3.7.2

    $ sudo make
    $ sudo make install
    
    • Debugging

    在執行$ sudo make install時出錯

    1. 出現的問題

      “zipimport.ZipImportError: can’t decompress data; zlib not available Makefile:1130: recipe for target ‘install’ failed make: *** [install] Error 1“

      解決方案

      安裝zlib1g-dev

      $ sudo apt install zlib1g-dev

    2. 出現第二個問題

      “ModuleNotFoundError: No module named ‘_ctypes’
      Makefile:1130: recipe for target ‘install’ failed
      make: *** [install] Error 1”

      解決方案

      $ sudo apt-get install --reinstall zlibc zlib1g zlib1g-dev
      $ sudo apt-get install libffi-dev libssl-dev libreadline-dev -y
      

      然後重新執行$ sudo make install,顯示:

  • 查看Python版本

    $ python --version

Anaconda

Method 1 參考Anaconda快速安裝攻略

由於在官網下載非常慢,並且經常網絡斷掉,因此最好在清華大學開源軟件鏡像站中下載,具體下載鏈接 ,在該頁面滑倒最後可以下載最新版本。本案例選擇下載Anaconda3-5.2.0-Linux-x86_64.sh版本。

  • 進入下載文件的位置

    $ cd Downloads/

  • 運行.sh文件:

    $ bash Anaconda3-5.2.0-Linux-x86_64.sh

  • 進入註冊信息頁面,輸入’yes’

    安裝過程中會提示

    Anaconda3 will now be installed into this location:
    /home/silver/anaconda3

    • Press ENTER to confirm the location
    • Press CTRL-C to abort the installation
    • Or specify a different location below

    我們不更改安裝路徑的話繼續輸入

    出現如下界面則說明anaconda成功安裝,這裏詢問是否需要安裝VScode,一般不需要的話就輸入"no"

  • 將anaconda加入系統環境變量

    sudo vim ~/.bashrc

    加入:

    export PATH=/home/silver/anaconda3/bin:$PATH

  • 在終端中輸入

    conda info

    即可查看詳細信息

如何啓動Anaconda圖形化界面

$ source ~/anaconda3/bin/activate root
$ anaconda-navigator

Method n(官網下載非常慢 不推薦!) 進入Anaconda官網下載頁面

下載相應版本安裝即可:

sudo sh Anaconda3-2019.07-Linux-x86_64.sh

安裝PyTorch

進入PyTorch官網,根據自己的環境來定製化選擇PyTorch下載安裝版本,選好之後複製下方的命令行:

Alt

conda install pytorch torchvision cudatoolkit=10.0 -c pytorch

下載完成提示:

安裝Tensorflow

  • 首先安裝NVIDIA必要組件:

    $ sudo apt-get install libcupti-dev

  • 先確保linux上pip可用

    $ sudo apt-get install python3-pip python3-dev # for Python 3.x

  • 然後用pip3(針對python3.x版本)安裝gpu版本的TensorFlow

    $ pip3 install tensorflow-gpu

    安裝過程中遇到了兩個錯誤提示:

    • ERROR1:

      ERROR: 1.14.0 has requirement setuptools>=41.0.0, but you’ll have setuptools 39.1.0 which is incompatible.

      • 出錯原因:setuptools 版本太低

      • 解決方案:更新setuptools版本 輸入:

        pip install --upgrade setuptools

      • 命令執行結果:

    • ERROR1:

      ERROR: Cannot uninstall ‘wrapt’. It is a distutils installed project and thus we cannot accurately determine which files belong to it which would lead to only a partial uninstall.

      • 出錯原因:不能夠卸載’wrapt’,因爲我們不能準確判斷它歸屬於哪個文件,這將會導致部分卸載

      • 解決方案:輸入

        pip install -U --ignore-installed wrapt enum34 simplejson netaddr

      • 命令執行結果:

  • 此時再重新執行$ pip3 install tensorflow-gpu

    當我們解決完各組件的安裝問題後,即可成功安裝tensorflow,安裝成功界面如下:

  • 檢測tensorflow是否安裝成功並查看版本號

    import tensorflow as tf
    print(tf.__version__)  ##兩條下劃線
    

  • 在VS Code中運行一個Tensorflow程序

    • 案例來自斯坦福大學NLP課程 cs224n Lecture7 參考鏈接

    • 程序執行之前需要安裝numpy包

      import tensorflow as tf 
      import numpy as np
      
      # create data
      x_data = np.random.rand(100).astype(np.float32)     # 隨機生成100個隨機數列 
      y_data = x_data*0.1+0.3 
      
      ###Create tensorflow structure start###
      Weights = tf.Variable(tf.random_uniform([1],-1.0,1.0))  # W大寫代表可能是權重矩陣,裏面的參數分>別是[1] 代表1維矩陣 ,生成隨機數範圍指定從-1.0到1.0
      biases = tf.Variable(tf.zeros([1]))
      
      y = Weights * x_data + biases
      
      loss = tf.reduce_mean(tf.square(y-y_data))
      optimizer = tf.train.GradientDescentOptimizer(0.5)   # 0.5代表學習率
      train = optimizer.minimize(loss)  #訓練的過程就是不斷在最小化損失函數的過程
      
      # deprecated 
      # init = tf.initialize_all_variables()
      init = tf.global_variables_initializer()
      
      ###Create tensorflow structure end###
      
      sess = tf.Session()
      sess.run(init)
      
      for step in range(201):
        sess.run(train)
        if step % 20 == 0:
          print(step,sess.run(Weights),sess.run(biases))
      
    • 終端輸出結果

      我們在終端執行結果界面可以看到程序已經運行在RTX 2080 Ti上,GPU提供7.5的算力。

至此,深度學習環境搭建完成!![撒花]
今天也是一個愛(有)學(耐)習(心)的女孩紙呢嘻嘻~

Reference

linux安裝NVIDIA顯卡驅動

ubuntu18.04安裝2080ti教程

多顯卡驅動踩坑記

​ 我在安裝NVIDIA驅動時也遇到過突然系統重啓進入TUI(文本命令行界面),如果想要進入圖形界面需要Ctrl+Alt+F1,或者TUI界面下,Ctrl+Alt+F1+F2一起按一定能進入圖形界面。

安裝CUDA_配置環境變量

Ubuntu 18.04 安裝 python3.7

Python3.7安裝:ModuleNotFoundError: No module named ‘_ctypes’

Anaconda快速安裝攻略

cuDNN安裝測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章