Ubuntu18.04下安裝深度學習框架Pytorch(GPU加速)

前面我們已經在windows10環境下成功安裝了CPU版本的Pytorch,推薦的是利用Anaconda安裝。經過接近一天的奮戰,博主成功在linux系統安裝GPU加速的pytorch,博主使用的發行版是Ubuntu18.04。

感謝原博主的分享,安裝大同小異,原文地址:

https://blog.csdn.net/wuzhiwuweisun/article/details/82753403

說一下CUDA和CUDNN都是啥吧。

CUDA(Compute Unified Device Architecture),是英偉達公司推出的一種基於新的並行編程模型和指令集架構的通用計算架構,它能利用英偉達GPU的並行計算引擎,比CPU更高效的解決許多複雜計算任務。

CUDNN是用於深度神經網絡的GPU加速庫。

具體參考博客:

https://blog.csdn.net/qq_28660035/article/details/80959752

https://blog.csdn.net/fangjin_kl/article/details/53906874

一、安裝Anaconda

linux下安裝Anaconda很簡單,步驟和前一篇在windows下安裝的步驟相似。

1.下載Anaconda

這個過程就不重新說一遍了,還是老話,去鏡像源下載,去鏡像源下載,去鏡像源下載,因爲官網太慢了!然後選擇的版本是linux下的,根據自己的電腦操作位數選擇32還是64位。

鏡像下載地址和修改方法參考前一篇博客:https://blog.csdn.net/wuzhiwuweisun/article/details/82689151

這裏我下載的是Anaconda3-5.0.1-Linux-x86_64.sh,自帶的python的版本是3.6。百度雲鏈接還有一個Anaconda是3.4.3的,自帶的python版本是3.5的。

這裏貼一下百度雲的鏈接https://pan.baidu.com/s/1W9DEbcMInIzVMerOI-JRTA 密碼:x5jx

2.安裝Anaconda

這個比windows簡單,一條命令。

首先切換到anaconda安裝包的路徑,在該路徑下執行指令:

sh Anaconda3-5.0.1-Linux-x86_64.sh   #後邊的文件名稱是你的安裝包的名稱

後邊的話就很簡單了。

  1. Welcome to Anaconda3 5.0.1
  2. In order to continue the installation process, please review the license
  3. agreement.
  4. Please, press ENTER to continue
  5. >>> 按回車
  6. #然後一直按回車到協議完畢
  7. #出現:
  8. Do you accept the license terms? [yes|no]
  9. >>>輸入yes
  10. #下面就是問你安裝目錄,建議就是默認的安裝路徑,直接按回車
  11. Anaconda3 will now be installed into this location:
  12. /home/mayunteng/anaconda3
  13. - Press ENTER to confirm the location
  14. - Press CTRL-C to abort the installation
  15. - Or specify a different location below
  16. [/home/mayunteng/anaconda3] >>> 按回車
  17. #接下來就是等待安裝完成
  18. #注意安裝完成以後會詢問你是否把anaconda3的路徑加到環境變量裏去,一定要選yes,一定要選yes,一定要選yes。

安裝完成以後,重啓終端,依次輸入下面的指令,如果顯示的是anaconda版本的python,代表安裝成功。

  1. 先輸入:source ~/.bashrc
  2. 再輸入:python
  3. 顯示的python版本後面有Anaconda標識,代表安裝成功
  4. Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49)
  5. [GCC 7.2.0] on linux
  6. Type "help", "copyright", "credits" or "license" for more information.
  7. >>>
  8. #退出python的命令交互行輸入exit()回車就可以了。

我們也可以輸入conda list 查看安裝的庫。

  1. 輸入:conda list
  2. 顯示(已經安裝好的庫):
  3. # packages in environment at /home/mayunteng/anaconda3:
  4. #
  5. # Name Version Build Channel
  6. _ipyw_jlab_nb_ext_conf 0.1.0 py36he11e457_0 defaults
  7. alabaster 0.7.10 py36h306e16b_0 defaults
  8. anaconda 5.0.1 py36hd30a520_1 defaults
  9. anaconda-client 1.6.5 py36h19c0dcd_0 defaults
  10. anaconda-navigator 1.6.9 py36h11ddaaa_0 defaults
  11. anaconda-project 0.8.0 py36h29abdf5_0 defaults
  12. asn1crypto 0.22.0 py36h265ca7c_1 defaults
  13. astroid 1.5.3 py36hbdb9df2_0 defaults
  14. astropy 2.0.2 py36ha51211e_4 defaults
  15. babel 2.5.0 py36h7d14adf_0 defaults
  16. backports 1.0 py36hfa02d7e_1 defaults
  17. backports.shutil_get_terminal_size 1.0.0 py36hfea85ff_2 defaults
  18. beautifulsoup4 4.6.0 py36h49b8c8c_1 defaults
  19. bitarray 0.8.1 py36h5834eb8_0 defaults
  20. bkcharts 0.2 py36h735825a_0 defaults
  21. blas 1.0 mkl https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  22. blaze 0.11.3 py36h4e06776_0 defaults
  23. bleach 2.0.0 py36h688b259_0 defaults
  24. bokeh 0.12.10 py36hbb0e44a_0 defaults
  25. boto 2.48.0 py36h6e4cd66_1 defaults
  26. bottleneck 1.2.1 py36haac1ea0_0 defaults
  27. bzip2 1.0.6 h0376d23_1 defaults

輸入下面的指令可以啓動Spyder, IPython, Jupyter Notebook,Anaconda Navigator

  1. spyder #打開Spyder
  2. ipython #打開IPython
  3. jupyter notebook #打開Jupyter notebook
  4. anaconda-navigator #打開Anaconda Navigator

PS:若在前邊沒有把Anaconda3的路徑加到環境變量中,可以這麼修改:

  1. 在命令行輸入:
  2. sudo gedit ~/.bashrc
  3. 打開bashrc文件後在末尾輸入下面的語句:
  4. export PATH="/home/mayunteng/anaconda3/bin:$PATH" #/home/mayunteng/anaconda3/替換成你的安裝路徑
  5. 關閉bashrc文件後,在命令行輸入:
  6. source .bashrc #使更新的環境變量立即生效

 

二、安裝CUDA和CUDNN

1. 檢測NVIDIA圖形卡是否支持GPU運算

在安裝之前你要先查看你的電腦是否支持GPU運算,否則你也不用安裝了。

先查看自己電腦的顯卡型號。

可以去終端輸入命令查看:

  1. 輸入:
  2. ubuntu-drivers devices
  3. 輸出顯示:
  4. == /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
  5. modalias : pci:v000010DEd00001380sv00001B4Csd0000105Fbc03sc00i00
  6. vendor : NVIDIA Corporation
  7. model : GM107 [GeForce GTX 750 Ti]#這個就是圖形卡類型
  8. driver : nvidia-340 - distro non-free
  9. driver : nvidia-driver-390 - distro non-free recommended
  10. driver : xserver-xorg-video-nouveau - distro free builtin

這裏可以看到我的圖形卡是GTX 750 Ti。

拿着這個圖形卡驅動到NAVIDIA官網去查是不是支持GPU運算。

網址是:https://developer.nvidia.com/cuda-gpus

打開後的界面大致如下,只要裏邊有你的型號就可以用GPU運算:

2. 安裝推薦的顯卡驅動程序

第一種方法(推薦):

首先打開linux系統(Ubuntu18.04)設置中的"軟件和更新"部分,然後打開,找到“附加驅動”,打開後安裝系統推薦的驅動

找到“附加驅動”,安裝推薦的驅動,最後點擊應用。

然後就是靜靜等待安裝完成就可以了。安裝完成後記得重啓電腦!重啓電腦!重啓電腦!

這種方法的好處就是不易出錯,配置的話電腦都給你做好了。

最後驗證是否安裝成功,輸入 sudo nvidia-smi

  1. 輸入:sudo nvidia-smi
  2. 顯示下面的信息代表圖形顯卡驅動安裝成功:
  3. Tue Sep 18 16:40:36 2018
  4. +-----------------------------------------------------------------------------+
  5. | NVIDIA-SMI 390.48 Driver Version: 390.48 |
  6. |-------------------------------+----------------------+----------------------+
  7. | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
  8. | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
  9. |===============================+======================+======================|
  10. | 0 GeForce GTX 750 Ti Off | 00000000:01:00.0 On | N/A |
  11. | 38% 32C P8 1W / 38W | 254MiB / 1999MiB | 0% Default |
  12. +-------------------------------+----------------------+----------------------+
  13. +-----------------------------------------------------------------------------+
  14. | Processes: GPU Memory |
  15. | GPU PID Type Process name Usage |
  16. |=============================================================================|
  17. | 0 1126 G /usr/lib/xorg/Xorg 11MiB |
  18. | 0 1217 G /usr/bin/gnome-shell 49MiB |
  19. | 0 1399 G /usr/lib/xorg/Xorg 69MiB |
  20. | 0 1529 G /usr/bin/gnome-shell 116MiB |
  21. | 0 2946 G /usr/lib/firefox/firefox 1MiB |
  22. +-----------------------------------------------------------------------------+

最好找到系統設置的“詳細信息”部分,查看一下自己的圖形卡是否已經是GTX 750 Ti。

 

第二種方法(我沒嘗試過):

參考博客:

https://blog.csdn.net/u012328159/article/details/80959454

https://blog.csdn.net/flowrush/article/details/80744787

3.給GCC手動降級

這裏參考博客:

https://blog.csdn.net/u010801439/article/details/80483036

由於CUDA 9.0僅支持GCC 6.0及以下版本,而Ubuntu 18.04預裝GCC版本爲7.3,手動降級:

  1. sudo apt-get install gcc-4.8
  2. sudo apt-get install g++-4.8

注意如果裝caffe,gcc一定要5.0以上

裝完後進入到/usr/bin目錄下,執行 ls -l gcc*

  1. 輸入:
  2. ls -l gcc*
  3. 顯示(我這裏由於已經改過了,所以第一行是鏈接到4.8了,原來的是鏈接到7.3):
  4. lrwxrwxrwx 1 root root 7 9月 12 20:43 gcc -> gcc-4.8
  5. -rwxr-xr-x 1 root root 772280 3月 19 2018 gcc-4.8
  6. lrwxrwxrwx 1 root root 22 4月 15 12:52 gcc-7 -> x86_64-linux-gnu-gcc-7
  7. lrwxrwxrwx 1 root root 8 4月 7 02:04 gcc-ar -> gcc-ar-7
  8. -rwxr-xr-x 1 root root 27088 3月 19 2018 gcc-ar-4.8
  9. lrwxrwxrwx 1 root root 25 4月 15 12:52 gcc-ar-7 -> x86_64-linux-gnu-gcc-ar-7
  10. lrwxrwxrwx 1 root root 5 4月 7 02:04 gcc.bak -> gcc-7
  11. lrwxrwxrwx 1 root root 8 4月 7 02:04 gcc-nm -> gcc-nm-7
  12. -rwxr-xr-x 1 root root 27088 3月 19 2018 gcc-nm-4.8
  13. lrwxrwxrwx 1 root root 25 4月 15 12:52 gcc-nm-7 -> x86_64-linux-gnu-gcc-nm-7
  14. lrwxrwxrwx 1 root root 12 4月 7 02:04 gcc-ranlib -> gcc-ranlib-7
  15. -rwxr-xr-x 1 root root 27088 3月 19 2018 gcc-ranlib-4.8
  16. lrwxrwxrwx 1 root root 29 4月 15 12:52 gcc-ranlib-7 -> x86_64-linux-gnu-gcc-ranlib-7

發現gcc鏈接到gcc-7.3, 需要將它改爲鏈接到gcc-4.8,方法如下:

  1. sudo mv gcc gcc.bak #備份
  2. sudo ln -s gcc-4.8 gcc #重新鏈接

對g++做同樣的修改:

ls -l g++*
  1. sudo mv g++ g++.bak
  2. sudo ln -s g++-4.8 g++

最後看gcc和g++版本號,如果是4.8代表修改成功:

  1. mayunteng@mayunteng-OptiPlex-7040:/usr/bin$ gcc --version
  2. gcc (Ubuntu 4.8.5-4ubuntu8) 4.8.5
  3. Copyright (C) 2015 Free Software Foundation, Inc.
  4. This is free software; see the source for copying conditions. There is NO
  5. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  6. mayunteng@mayunteng-OptiPlex-7040:/usr/bin$ g++ --version
  7. g++ (Ubuntu 4.8.5-4ubuntu8) 4.8.5
  8. Copyright (C) 2015 Free Software Foundation, Inc.
  9. This is free software; see the source for copying conditions. There is NO
  10. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

4. 安裝CUDA

這裏重點參考這兩篇博客進行:

https://www.jianshu.com/p/ea169536850f(推薦)

https://blog.csdn.net/flowrush/article/details/80744787

我是選擇的CUDA 9.0和CUDNN 7.05

只要記住CUDA的選擇要根據CUDNN的型號來選,即CUDA的版本一定要和CUDNN的版本對應,必須是CUDNN支持的版本!

 

首先去官網下載CUDA安裝包,注意根據你的系統選,最後一項選擇runfile(local)

CUDA最新版下載地址:https://developer.nvidia.com/cuda-downloads

以前版本的CUDA:https://developer.nvidia.com/cuda-toolkit-archive

找到我要下載的CUDA 9.0版本下載,時間有點長,下完安裝就好了,幾個小的更新包可以不安裝。

這裏提供我搭建的環境需要的安裝包,即Ubuntu18.04,64位系統的CUDA安裝包,以及對應的CUDNN,Pytorch安裝包。

百度雲鏈接: https://pan.baidu.com/s/1wLqMuAAxu7vnCCgA2fr3PA 密碼:6uau

進入剛剛下載的CUDA包的路徑,執行命令:

sudo sh cuda_9.0.176_384.81_linux.run

然後按照下面的執行:

  1. Do you accept the previously read EULA? (accept/decline/quit): accept You are attemptingto install on an unsupported configuration. Do you wish to continue? ((y)es/(n)o) [ default is no ]: y
  2. Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 352.39? ((y)es/(n)o/(q)uit): n
  3. Install the CUDA 8.0 Toolkit? ((y)es/(n)o/(q)uit): y
  4. Enter Toolkit Location [ default is /usr/local/cuda-8.0 ]:
  5. Do you want to install a symbolic link at /usr/local/cuda? ((y)es/(n)o/(q)uit): y Install the CUDA 8.0 Samples? ((y)es/(n)o/(q)uit): y Enter CUDA Samples Location [ default is /home/kyle ]:

其實就是除了第二個安裝圖形驅動因爲之前安裝過選擇no,其他就是yes或者默認。

安裝完成在倒數幾行出現警告,不用管:

  1. ***WARNING: Incomplete installation!

5 配置CUDA的環境變量

打開.bashrc文件,在終端輸入:

sudo gedit ~/.bashrc

在文件的末尾添加下面兩行,注意修改成你的安裝路徑:

  1. export PATH="/usr/local/cuda-9.0/bin:$PATH" #這裏添加路徑出錯的話最好加上雙引號把路徑括起來,這裏已經加上了雙引號
  2. export LD_LIBRARY_PATH="/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH"

測試一下CUDA是否安裝成功:

  1. 輸入:
  2. nvcc -V
  3. 顯示:、
  4. nvcc: NVIDIA (R) Cuda compiler driver
  5. Copyright (c) 2005-2017 NVIDIA Corporation
  6. Built on Fri_Sep__1_21:08:03_CDT_2017
  7. Cuda compilation tools, release 9.0, V9.0.176

6 編譯 CUDA Samples

進入samples的安裝目錄,選擇一個看看是否可以成功編譯。

  1. mayunteng@mayunteng-OptiPlex-7040:~$ cd NVIDIA_CUDA-9.0_Samples/0_Simple/vectorAdd
  2. mayunteng@mayunteng-OptiPlex-7040:~/NVIDIA_CUDA-9.0_Samples/0_Simple/vectorAdd$ make
  3. mayunteng@mayunteng-OptiPlex-7040:~/NVIDIA_CUDA-9.0_Samples/0_Simple/vectorAdd$ ./vectorAdd
  4. [Vector addition of 50000 elements]
  5. Copy input data from the host memory to the CUDA device
  6. CUDA kernel launch with 196 blocks of 256 threads
  7. Copy output data from the CUDA device to the host memory
  8. Test PASSED
  9. Done

出現上面的Test PASSED代表CUDA安裝成功。

7 安裝CUDNN

首先是下載CUDNN,前面在下載CUDA的時候就已經說過,CUDA要對應CUDNN的版本,我選擇的是CUDA9.0+CUDNN7.05的版本。

下載的話要先註冊一個賬號,然後才能下載。不過重點提醒的是註冊和登陸的時候要科學上網(fanqiang)纔可以!否則進不去!

官網:https://developer.nvidia.com/cudnn

這裏我的cudnn文件百度雲鏈接: https://pan.baidu.com/s/1wLqMuAAxu7vnCCgA2fr3PA 密碼:6uau

CUDNN下載可參考博客https://blog.csdn.net/u010801439/article/details/80483036裏邊的步驟。

首先解壓壓縮包,然後執行:

  1. 先進入壓縮包解壓後的路徑,再執行下面的指令
  2. cd cuda
  3. sudo cp lib64/* /usr/local/cuda/lib64/
  4. sudo cp include/* /usr/local/cuda/include/
  5. sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*

到此,CUDNN安裝完成!

8 安裝Pytorch

可以參考博客:https://blog.csdn.net/red_stone1/article/details/78727096

 

這裏推薦使用離線安裝,不易出錯,一勞永逸。

安裝包下載地址:https://pytorch.org/previous-versions/

 

這裏我下載的是cu90/torch-0.3.0.post4-cp36-cp36m-linux_x86_64.whl版本的,0.3.0代表torch的版本,cp36代表支持的python版本,我的是python是3.6所以選擇了cp36,linux_x86_64代表linux系統下的64位版本,cu90代表支持cuda9.0版本。

我的安裝包百度雲鏈接: https://pan.baidu.com/s/1wLqMuAAxu7vnCCgA2fr3PA 密碼:6uau

進入安裝包的路徑,執行:

 pip install torch-0.3.0.post4-cp36-cp36m-linux_x86_64.whl 

接着執行:

pip install torchvision

然後驗證pytorch和torchvision是否安裝成功,在python命令行輸入import torch,無警告代表成功。

  1. mayunteng@mayunteng-OptiPlex-7040:~/Newpack$ python
  2. Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 2017, 12:02:49)
  3. [GCC 7.2.0] on linux
  4. Type "help", "copyright", "credits" or "license" for more information.
  5. >>> import torch
  6. >>>

至此,Pytorch安裝成功!

最後,我們測試一下安裝完這些能不能使用GPU加速:

打開Jupyter Notebook或者IPython,輸入以下命令:

  1. import torch as t
  2. x = t.rand(5,3)
  3. y = t.rand(5,3)
  4. if t.cuda.is_available():
  5. x = x.cuda()
  6. y = y.cuda()
  7. print(x+y)

最後輸出下面的界面代表成功調用GPU加速,否則沒有成功調用。

  1. 0.0624 1.3100 1.0462
  2. 1.3511 1.1635 1.1907
  3. 0.8890 1.0524 1.0477
  4. 1.5921 1.0428 0.6046
  5. 0.3175 0.9421 1.4520
  6. [torch.cuda.FloatTensor of size 5x3 (GPU 0)]

 

真心好累,後續有問題會補充......

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