之前CPU版的PyTorch安装的很顺利,最近在安装GPU版的PyTorch,遇到了很多麻烦,不过最终还是搞好了,在这里记录一下,以便以后再次用到。这里推荐使用离线安装的方法。
写在最前面:
设置多环境,在每个环境下分别安装相应的Python和PyTorch版本,互不污染,方法如下:

#创建新环境
conda create --name pytorch-gpu python=3.7
#激活环境
activate pytorch-gpu

上面第一个命令用于创建一个新的环境,并安装一个指定版本的python,–name后面的pytorch-gpu就是新的环境名字,任意选取。python=3.7就是指定安装的python版本。输入这个命令后,会在线安装3.7.x版本的python。

安装后之后,输入第二个命令,激活当前环境,然后在这个新的环境下安装PyTorch,详细的步骤见下面即可。

第一步:

首先查看自己电脑上英伟达GPU的cuda版本,这里给出一个参考链接:查看cuda版本第二步:

进入PyTorch官网(因为我用的是比较旧的cuda版本,所以进入的是previous-versions):https://pytorch.org/get-started/previous-versions/

可以看到:

gpu环境utunbu 搭建pytorch gpu版本的pytorch_pytorch


用思维导图表示如下:

gpu环境utunbu 搭建pytorch gpu版本的pytorch_离线安装_02


这里解释一下在线安装离线安装(非常推荐)

  • 在线安装:使用相应的命令,然后利用网络下载并安装。但是由于网络传输问题,网速会非常慢,而且有时候会出现丢包。
  • 离线安装:先下载相应的文件,然后再手动安装。

所以看到上面的截图中,Conda方式下,都是给出相应的命令,而Wheel方式下,给出的是需要下载的文件的网址(如上图框出的网址)。

第三步:

我这里是在Windows下安装1.0.0版本,cuda 8.0,所以进入的网址是:

gpu环境utunbu 搭建pytorch gpu版本的pytorch_离线安装_03


gpu环境utunbu 搭建pytorch gpu版本的pytorch_Desktop_04


根据自己的操作系统,下载对应的.whl文件,注意一定要下载的是torch开头的.whl文件,在页面的末端找。

第四步:

下载好了之后,在.whl文件所在的文件夹中打开命令行(cmd),执行离线安装命令,以上面的文件为例:

pip install torch-1.0.0-cp37-cp37m-win_amd64.whl 然后等待安装好了即可。

第五步:测试

(1)命令行下检查

(base) PS C:\Users\chenxuqi> conda deactivate
PS C:\Users\chenxuqi> conda activate ssd
(ssd) PS C:\Users\chenxuqi> python
Python 3.6.12 |Anaconda, Inc.| (default, Sep  9 2020, 00:29:25) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> print(torch.__version__)
1.0.0
>>> print(torch.cuda.is_available())
True

分别返回对应的版本号和True表示安装成功。
如果返回False,再在PyCharm中运行一下下面的代码,会有相应的报错信息,再根据报错信息排查错误,我就是这么解决的!!!
(2)执行GPU代码

import time
import torch 

for i in range(1,10):
    start = time.time()
    a = torch.FloatTensor(i*100,1000,1000)
    a = a.cuda() #a = a
    a = torch.matmul(a,a)
    end = time.time() - start
    print(end)

运行结果:
我第一次运行结果提示我显卡驱动程序太旧,需要更新,然后我就去英伟达官网(报错信息给出了下载网址)下载了驱动程序,并安装,就可以了,第二次结果如下:

PS C:\Users\chenxuqi\Desktop\新建文件夹>  & 'D:\Anaconda3\envs\ssd\python.exe' 'c:\Users\chenxuqi\.vscode\extensions\ms-python.python-2020.10.332292344\pythonFiles\lib\python\debugpy\launcher' '50571' '--' 'c:\Users\chenxuqi\Desktop\新建文件夹\testGPU.py'
3.6260359287261963
0.6305170059204102
0.9055967330932617
1.3199987411499023
1.5979139804840088
2.0483360290527344
THCudaCheck FAIL file=c:\programdata\miniconda3\conda-bld\pytorch_1524549877902\work\aten\src\thc\generic/THCStorage.cu line=58 error=2 : out of memory
Traceback (most recent call last):
  File "c:\Users\chenxuqi\Desktop\新建文件夹\testGPU.py", line 10, in <module>
    a = torch.matmul(a,a)
RuntimeError: cuda runtime error (2) : out of memory at c:\programdata\miniconda3\conda-bld\pytorch_1524549877902\work\aten\src\thc\generic/THCStorage.cu:58
PS C:\Users\chenxuqi\Desktop\新建文件夹> conda activate ssd
PS C:\Users\chenxuqi\Desktop\新建文件夹>

注意,这里显存太小,溢出了…但是安装是成功的!!!

说明:安装gpu版本时候可以不安装cuda和cudnn,但是一定要安装显卡驱动,因为显卡驱动自带的cuda向下兼容,而且torch相比tensorflow有个好处是安装后会安装cudatookiti也就是cuda工具箱,不再需要我们去麻烦的安装这些东西。
至此,终于把GPU版本的PyTorch安装好了。另外,每个人遇到的问题不同,这里只记录了我自己遇到的问题。