环境配置系列:
(一)Ubuntu安装详细教程(从镜像制作到NVIDIA驱动安装全流程)——超详细的图文教程
(二)Ubuntu系统Pytorch环境配置
(三)Windows系统Pytorch环境配置(简易方法安装CUDA和cuDNN)
Ubuntu20.04+GTX 1050(notebook)安装paddlepaddle
假设你已经按照(一)Ubuntu安装详细教程(从镜像制作到NVIDIA驱动安装全流程)——超详细的图文教程安装好了Ubuntu系统,现在我们要为pytorch的使用配置环境:
当然本文是Ubuntu下安装Pytorch,Windows下安装Pytorch环境移步:(三)Windows系统Pytorch环境配置(简易方法安装CUDA和cuDNN)
你或许在其他教程中看到过要安装Anaconda,但实际上miniconda就够用了,两个的区别可以理解为Anaconda为全家桶,它会帮你预装很多东西,实际上却用不到(比如数据分析,如果你不是这个方向)。
miniconda可以从官网下载并安装,这里就不详细介绍了,这只是一个软件,而且网上有大量的安装教程和使用教程。
我们先使用miniconda创建一个python环境,在终端使用conda 命令
# 创建一个name为EnvsName的环境,该环境的python=3.7
conda create -n EnvsName python=3.7
# 激活进入使用该环境,此时提示符最前面应该有个(),里面是环境名字,表示你现在在这个环境里
conda activate EnvsName
现在来安装Pytorch,先去官网选择自己的配置,在下方给出了pip的安装命令
Ubuntu系统所以选择Linux,对于CUDA版本根据自己的需求选择,如果使用的是安培架构的GPU,推荐使用CUDA11以上。如果你使用的是非安培架构的GPU,推荐使用CUDA10.2,性能更优。
我的不是安培架构,所以选择了CUDA10.2
复制该命令(如果不需要,可以去掉torchaudio)到终端中执行,等待便可成功安装。
本部分是借鉴了:Ubuntu下安装CUDA,对于CUDA部分的安装完全按该教程是没有问题的
以下重点讲cuDNN部分
首先,进入官网下载cuDNN,选择与CUDA合适的版本。比如我安装的CUDA11.3,则直接选择Download cuDNN v8.4.1 (May 27th, 2022), for CUDA 11.x
,该版本的cuDNN适合11.0系列的CUDA。
点击cuDNN v8.4.1展开后下载Local Installer for Windows (Zip)
,然后执行下面的命令:
# 为了方便,假设你的cudnn文件夹名为cuDNNFolder
1.解压下载的cuDNN的tar包.
$ tar -xvf cuDNNFolder.tar.xz
2. 复制cuDNN文件(*代表符合该规则的所有文件)
$ sudo cp cuDNNFolder/include/cudnn*.h /usr/local/cuda/include
$ sudo cp -P cuDNNFolder/lib/libcudnn* /usr/local/cuda/lib64
$ sudo chmod a+r /usr/local/cuda/include/cudnn*.h /usr/local/cuda/lib64/libcudnn*
在~/.bashrc文件中添加环境变量(cuda-11.3是我安装的cuda版本):
export LD_LIBRARY_PATH=/usr/local/cuda-11.3/targets/x86_64-linux/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
然后重启终端或者重启电脑更新
至此,Pytorch、CUDA和cuDNN都按照好了,来验证下是否成功
网上大多数是通过torch.cuda.is_availabel()来验证,但是实践中发现有时该命令输出True后,在后续pytorch使用中也会报错。
所以更稳靠的方式是创建一个tensor,并放置到cuda上去,如果没有报错并成功放上去了,就证明验证成功,并可以正常使用CUDA:
torch.tensor([1]).cuda()
该命令是创建一个内容为[1]的tensor,并将其放置到cuda上去,如下图结果是成功创建了tensor,并且该tensor位于’cuda:0’上
查询版本信息的代码:
print("Python Version:", sys.version) # python版本
print("pytorch version:", torch.__version__) # pytorch版本
print("CUDA Version:", torch.version.cuda) # cuda版本
print("cuDnn Version:", torch.backends.cudnn.version()) # cudnn版本
print("Devices:", device) # 使用的设备cuda or cpu