前面我们已经在windows10环境下成功安装了CPU版本的Pytorch,推荐的是利用Anaconda安装。
经过接近一天的奋战,博主成功在linux系统安装GPU加速的pytorch,博主使用的发行版是Ubuntu18.04。
说一下CUDA和CUDNN都是啥吧。
CUDA(Compute Unified Device Architecture),是英伟达公司推出的一种基于新的并行编程模型和指令集架构的通用计算架构,它能利用英伟达GPU的并行计算引擎,比CPU更高效的解决许多复杂计算任务。
CUDNN是用于深度神经网络的GPU加速库。
具体参考博客:
/qq_28660035/article/details/80959752
/fangjin_kl/article/details/53906874
一、安装Anaconda
linux下安装Anaconda很简单,步骤和前一篇在windows下安装的步骤相似。
1.下载Anaconda
这个过程就不重新说一遍了,还是老话,去镜像源下载,去镜像源下载,去镜像源下载,因为官网太慢了!然后选择的版本是linux下的,根据自己的电脑操作位数选择32还是64位。
镜像下载地址和修改方法参考前一篇博客:/wuzhiwuweisun/article/details/82689151
这里我下载的是Anaconda3-5.0.1-Linux-x86_64.sh,自带的python的版本是3.6。百度云链接还有一个Anaconda是3.4.3的,自带的python版本是3.5的。
这里贴一下百度云的链接:链接:/s/15N7KdtxkChOH7WsMaC_IJQ 提取码:286y
2.安装Anaconda
这个比windows简单,一条命令。
首先切换到anaconda安装包的路径,在该路径下执行指令:
sh Anaconda3-5.0.1-Linux-x86_64.sh #后边的文件名称是你的安装包的名称
后边的话就很简单了。
Welcome to Anaconda3 5.0.1In order to continue the installation process, please review the licenseagreement.Please, press ENTER to continue>>> 按回车#然后一直按回车到协议完毕#出现:Do you accept the license terms? [yes|no]>>>输入yes#下面就是问你安装目录,建议就是默认的安装路径,直接按回车Anaconda3 will now be installed into this location:/home/mayunteng/anaconda3- Press ENTER to confirm the location- Press CTRL-C to abort the installation- Or specify a different location below[/home/mayunteng/anaconda3] >>> 按回车#接下来就是等待安装完成#注意安装完成以后会询问你是否把anaconda3的路径加到环境变量里去,一定要选yes,一定要选yes,一定要选yes。
安装完成以后,重启终端,依次输入下面的指令,如果显示的是anaconda版本的python,代表安装成功。
先输入:source ~/.bashrc再输入:python显示的python版本后面有Anaconda标识,代表安装成功Python 3.6.3 |Anaconda, Inc.| (default, Oct 13 , 12:02:49) [GCC 7.2.0] on linuxType "help", "copyright", "credits" or "license" for more information.>>> #退出python的命令交互行输入exit()回车就可以了。
我们也可以输入conda list 查看安装的库。
输入:conda list显示(已经安装好的库):# packages in environment at /home/mayunteng/anaconda3:## NameVersion Build Channel_ipyw_jlab_nb_ext_conf 0.1.0 py36he11e457_0 defaultsalabaster 0.7.10 py36h306e16b_0 defaultsanaconda 5.0.1 py36hd30a520_1 defaultsanaconda-client 1.6.5 py36h19c0dcd_0 defaultsanaconda-navigator 1.6.9 py36h11ddaaa_0 defaultsanaconda-project0.8.0 py36h29abdf5_0 defaultsasn1crypto0.22.0 py36h265ca7c_1 defaultsastroid 1.5.3 py36hbdb9df2_0 defaultsastropy 2.0.2 py36ha51211e_4 defaultsbabel 2.5.0 py36h7d14adf_0 defaultsbackports 1.0 py36hfa02d7e_1 defaultsbackports.shutil_get_terminal_size 1.0.0 py36hfea85ff_2 defaultsbeautifulsoup4 4.6.0 py36h49b8c8c_1 defaultsbitarray 0.8.1 py36h5834eb8_0 defaultsbkcharts 0.2 py36h735825a_0 defaultsblas 1.0mkl https://mirrors.tuna./anaconda/pkgs/mainblaze 0.11.3 py36h4e06776_0 defaultsbleach2.0.0 py36h688b259_0 defaultsbokeh 0.12.10py36hbb0e44a_0 defaultsboto 2.48.0 py36h6e4cd66_1 defaultsbottleneck1.2.1 py36haac1ea0_0 defaultsbzip2 1.0.6h0376d23_1 defaults
输入下面的指令可以启动Spyder, IPython, Jupyter Notebook,Anaconda Navigator 。
spyder #打开Spyderipython #打开IPythonjupyter notebook #打开Jupyter notebookanaconda-navigator #打开Anaconda Navigator
PS:若在前边没有把Anaconda3的路径加到环境变量中,可以这么修改:
在命令行输入:sudo gedit ~/.bashrc打开bashrc文件后在末尾输入下面的语句:export PATH="/home/mayunteng/anaconda3/bin:$PATH" #/home/mayunteng/anaconda3/替换成你的安装路径关闭bashrc文件后,在命令行输入:source .bashrc #使更新的环境变量立即生效
二、安装CUDA和CUDNN
1. 检测NVIDIA图形卡是否支持GPU运算
在安装之前你要先查看你的电脑是否支持GPU运算,否则你也不用安装了。
先查看自己电脑的显卡型号。
可以去终端输入命令查看:
输入:ubuntu-drivers devices输出显示:== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==modalias : pci:v000010DEd00001380sv00001B4Csd0000105Fbc03sc00i00vendor : NVIDIA Corporationmodel : GM107 [GeForce GTX 750 Ti]#这个就是图形卡类型driver : nvidia-340 - distro non-freedriver : nvidia-driver-390 - distro non-free recommendeddriver : xserver-xorg-video-nouveau - distro free builtin
这里可以看到我的图形卡是GTX 750 Ti。
拿着这个图形卡驱动到NAVIDIA官网去查是不是支持GPU运算。
网址是:/cuda-gpus
打开后的界面大致如下,只要里边有你的型号就可以用GPU运算:
2. 安装推荐的显卡驱动程序
第一种方法(推荐):
首先打开linux系统(Ubuntu18.04)设置中的"软件和更新"部分,然后打开,找到“附加驱动”,打开后安装系统推荐的驱动。
找到“附加驱动”,安装推荐的驱动,最后点击应用。
然后就是静静等待安装完成就可以了。安装完成后记得重启电脑!重启电脑!重启电脑!
这种方法的好处就是不易出错,配置的话电脑都给你做好了。
最后验证是否安装成功,输入 sudo nvidia-smi
输入:sudo nvidia-smi显示下面的信息代表图形显卡驱动安装成功:Tue Sep 18 16:40:36 +-----------------------------------------------------------------------------+| NVIDIA-SMI 390.48 Driver Version: 390.48||-------------------------------+----------------------+----------------------+| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC || Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. ||===============================+======================+======================|| 0 GeForce GTX 750 Ti Off | 00000000:01:00.0 On | N/A || 38% 32C P81W / 38W | 254MiB / 1999MiB |0%Default |+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+| Processes:GPU Memory || GPU PID Type Process name Usage||=============================================================================|| 01126G /usr/lib/xorg/Xorg 11MiB || 01217G /usr/bin/gnome-shell49MiB || 01399G /usr/lib/xorg/Xorg 69MiB || 01529G /usr/bin/gnome-shell116MiB || 02946G /usr/lib/firefox/firefox 1MiB |+-----------------------------------------------------------------------------+
最好找到系统设置的“详细信息”部分,查看一下自己的图形卡是否已经是GTX 750 Ti。
第二种方法(我没尝试过):
参考博客:
/u012328159/article/details/80959454
/flowrush/article/details/80744787
3.给GCC手动降级
这里参考博客:
/u010801439/article/details/80483036
由于CUDA 9.0仅支持GCC 6.0及以下版本,而Ubuntu 18.04预装GCC版本为7.3,手动降级:
sudo apt-get install gcc-4.8sudo apt-get install g++-4.8
注意如果装caffe,gcc一定要5.0以上
装完后进入到/usr/bin目录下,执行 ls -l gcc*
输入:ls -l gcc* 显示(我这里由于已经改过了,所以第一行是链接到4.8了,原来的是链接到7.3):lrwxrwxrwx 1 root root7 9月 12 20:43 gcc -> gcc-4.8-rwxr-xr-x 1 root root 772280 3月 19 gcc-4.8lrwxrwxrwx 1 root root22 4月 15 12:52 gcc-7 -> x86_64-linux-gnu-gcc-7lrwxrwxrwx 1 root root8 4月 7 02:04 gcc-ar -> gcc-ar-7-rwxr-xr-x 1 root root 27088 3月 19 gcc-ar-4.8lrwxrwxrwx 1 root root25 4月 15 12:52 gcc-ar-7 -> x86_64-linux-gnu-gcc-ar-7lrwxrwxrwx 1 root root5 4月 7 02:04 gcc.bak -> gcc-7lrwxrwxrwx 1 root root8 4月 7 02:04 gcc-nm -> gcc-nm-7-rwxr-xr-x 1 root root 27088 3月 19 gcc-nm-4.8lrwxrwxrwx 1 root root25 4月 15 12:52 gcc-nm-7 -> x86_64-linux-gnu-gcc-nm-7lrwxrwxrwx 1 root root12 4月 7 02:04 gcc-ranlib -> gcc-ranlib-7-rwxr-xr-x 1 root root 27088 3月 19 gcc-ranlib-4.8lrwxrwxrwx 1 root root29 4月 15 12:52 gcc-ranlib-7 -> x86_64-linux-gnu-gcc-ranlib-7
发现gcc链接到gcc-7.3, 需要将它改为链接到gcc-4.8,方法如下:
sudo mv gcc gcc.bak #备份sudo ln -s gcc-4.8 gcc #重新链接
对g++做同样的修改:
ls -l g++*
sudo mv g++ g++.baksudo ln -s g++-4.8 g++
最后看gcc和g++版本号,如果是4.8代表修改成功:
mayunteng@mayunteng-OptiPlex-7040:/usr/bin$ gcc --versiongcc (Ubuntu 4.8.5-4ubuntu8) 4.8.5Copyright (C) Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.mayunteng@mayunteng-OptiPlex-7040:/usr/bin$ g++ --versiong++ (Ubuntu 4.8.5-4ubuntu8) 4.8.5Copyright (C) Free Software Foundation, Inc.This is free software; see the source for copying conditions. There is NOwarranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
4. 安装CUDA
这里重点参考这两篇博客进行:
/p/ea169536850f(推荐)
/flowrush/article/details/80744787
我是选择的CUDA 9.0和CUDNN 7.05
只要记住CUDA的选择要根据CUDNN的型号来选,即CUDA的版本一定要和CUDNN的版本对应,必须是CUDNN支持的版本!
首先去官网下载CUDA安装包,注意根据你的系统选,最后一项选择runfile(local)。
CUDA最新版下载地址:/cuda-downloads
以前版本的CUDA:/cuda-toolkit-archive
找到我要下载的CUDA 9.0版本下载,时间有点长,下完安装就好了,几个小的更新包可以不安装。
这里提供我搭建的环境需要的安装包,即Ubuntu18.04,64位系统的CUDA安装包,以及对应的CUDNN,Pytorch安装包。
百度云链接: /s/1wLqMuAAxu7vnCCgA2fr3PA 密码:6uau
进入刚刚下载的CUDA包的路径,执行命令:
sudo sh cuda_9.0.176_384.81_linux.run
然后按照下面的执行:
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 Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 352.39? ((y)es/(n)o/(q)uit): n Install the CUDA 8.0 Toolkit? ((y)es/(n)o/(q)uit): y Enter Toolkit Location [ default is /usr/local/cuda-8.0 ]: 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或者默认。
安装完成在倒数几行出现警告,不用管:
***WARNING: Incomplete installation!
5 配置CUDA的环境变量
打开.bashrc文件,在终端输入:
sudo gedit ~/.bashrc
在文件的末尾添加下面两行,注意修改成你的安装路径:
export PATH="/usr/local/cuda-9.0/bin:$PATH" #这里添加路径出错的话最好加上双引号把路径括起来,这里已经加上了双引号export LD_LIBRARY_PATH="/usr/local/cuda-9.0/lib64:$LD_LIBRARY_PATH"
测试一下CUDA是否安装成功:
输入:nvcc -V显示:、nvcc: NVIDIA (R) Cuda compiler driverCopyright (c) - NVIDIA CorporationBuilt on Fri_Sep__1_21:08:03_CDT_Cuda compilation tools, release 9.0, V9.0.176
6 编译 CUDA Samples
进入samples的安装目录,选择一个看看是否可以成功编译。
mayunteng@mayunteng-OptiPlex-7040:~$ cd NVIDIA_CUDA-9.0_Samples/0_Simple/vectorAddmayunteng@mayunteng-OptiPlex-7040:~/NVIDIA_CUDA-9.0_Samples/0_Simple/vectorAdd$ makemayunteng@mayunteng-OptiPlex-7040:~/NVIDIA_CUDA-9.0_Samples/0_Simple/vectorAdd$ ./vectorAdd [Vector addition of 50000 elements]Copy input data from the host memory to the CUDA deviceCUDA kernel launch with 196 blocks of 256 threadsCopy output data from the CUDA device to the host memoryTest PASSEDDone
出现上面的Test PASSED代表CUDA安装成功。
7 安装CUDNN
首先是下载CUDNN,前面在下载CUDA的时候就已经说过,CUDA要对应CUDNN的版本,我选择的是CUDA9.0+CUDNN7.05的版本。
下载的话要先注册一个账号,然后才能下载。不过重点提醒的是注册和登陆的时候要科学上网(fanqiang)才可以!否则进不去!
官网:/cudnn
这里我的cudnn文件百度云链接: /s/1wLqMuAAxu7vnCCgA2fr3PA 密码:6uau
CUDNN下载可参考博客/u010801439/article/details/80483036里边的步骤。
首先解压压缩包,然后执行:
先进入压缩包解压后的路径,再执行下面的指令cd cudasudo cp lib64/* /usr/local/cuda/lib64/sudo cp include/* /usr/local/cuda/include/sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
到此,CUDNN安装完成!
8 安装Pytorch
可以参考博客:/red_stone1/article/details/78727096
这里推荐使用离线安装,不易出错,一劳永逸。
安装包下载地址:/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版本。
我的安装包百度云链接: /s/1wLqMuAAxu7vnCCgA2fr3PA 密码:6uau
进入安装包的路径,执行:
pip install torch-0.3.0.post4-cp36-cp36m-linux_x86_64.whl
接着执行:
pip install torchvision
然后验证pytorch和torchvision是否安装成功,在python命令行输入import torch,无警告代表成功。
mayunteng@mayunteng-OptiPlex-7040:~/Newpack$ pythonPython 3.6.3 |Anaconda, Inc.| (default, Oct 13 , 12:02:49) [GCC 7.2.0] on linuxType "help", "copyright", "credits" or "license" for more information.>>> import torch>>>
至此,Pytorch安装成功!
最后,我们测试一下安装完这些能不能使用GPU加速:
打开Jupyter Notebook或者IPython,输入以下命令:
import torch as tx = t.rand(5,3)y = t.rand(5,3)if t.cuda.is_available():x = x.cuda()y = y.cuda()print(x+y)
最后输出下面的界面代表成功调用GPU加速,否则没有成功调用。
0.0624 1.3100 1.04621.3511 1.1635 1.19070.8890 1.0524 1.04771.5921 1.0428 0.60460.3175 0.9421 1.4520[torch.cuda.FloatTensor of size 5x3 (GPU 0)]
真心好累,后续有问题会补充......