安装GPU版本的pytorch(解决pytorch安装时默认安装CPU版本的问题)保姆级教程
Posted 3EoIPrime
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安装GPU版本的pytorch(解决pytorch安装时默认安装CPU版本的问题)保姆级教程相关的知识,希望对你有一定的参考价值。
1、安装anaconda
2、修改下载源为清华源
由于pytorch的服务器在国外,直连下载的话很慢,所以选用清华镜像源下载
# 添加清华镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
# 添加pytorch镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
# for legacy win-64
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/peterjc123/
conda config --set show_channel_urls yes
3、创建虚拟环境
打开anaconda prompt
在>后面输入conda create -n Pytorch-env python==3.7
conda create -n Pytorch-env python==3.7
tips冷知识:无论是在安装Tensorflow2还是Pytorch等深度学习框架时,请务必注意你需要安装的函数库版本号与python版本的对应关系!!!
(这边建议选择python3.7或3.8的版本,不要问我为什么)
4、激活并进入你创建好的虚拟环境
conda activate Pytorch-env
现在正式开始进入pytorch的安装
5、anaconda指令安装pytorch
复制图中红框的指令:conda install pytorch torchvision torchaudio cudatoolkit=10.2
!!!注意:不要全部复制:conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch-lts
需要删除-c
后面的语句
主要是因为-c pytorch表示指定使用pytorch channel,这个服务器位于国外,下载速度很慢,使用刚刚添加进的清华镜像源可以得到一个较快的下载速度。
tips:解释一下
Stable:稳定版本
LTS:(Long Term Support)长期支持版本
Preview:预览版本
推荐使用Stable或者LTS版本
在anaconda prompt中鼠标右键粘贴复制指令,回车运行。
6、耐心等待
7、安装完成(但是问题来了!)
此时,你满心欢喜地进入Pycharm,设置好你的conda解释器,开始跑Pytorch的代码了。好的,首先让我检查一下Pytorch是否使用GPU加速:
import torch
print(torch.cuda.is_available())
OMG!得到的答案是“False”!寄!
为什么呢?这是网上几乎所以人的安装方法,而他们跑出来却是“True”,作者一开始就是这样想的,明明安装都没有报错的。
于是又进入刚刚创建的虚拟环境中。。。
在你创建的“Pytorch-env”虚拟环境查看一下环境中所用的第三方库
conda list
突然发现:我明明安装的是基于CUDA的GPU版本,为什么安装的pytorch 和 torchvision 都是CPU版本的???
tips:作者在此时经历了无数次卸载重装pytorch,结果都是一样的。
直到我发现了它:
问题就在这,安装pytorch时会默认安装这个cpuonly库,就是这个函数库导致我们安装的pytorch是CPU版本的。
解决方法:直接conda uninstall cpuonly
他会提示你当你卸载cpuonly后一些函数库的版本改变(其中就包括pytorch 和 torchvision)
等待安装,loading…
安装完成后,就可以看到pytorch 和 torchvision 都是 GPU 版本了
这时候你再
import torch
torch.cuda.is_available()
返回:“True” !
8、如果函数库中没有cpuonly怎么办?
还有一种情况我也见到过,就是你在输入conda list
查看函数库,发现函数库中并没有cpuonly函数库,但我的pytorch还是cpu版本的那么该怎么办呢?
解决方法:conda install cpuonly
你先自行给它装上cpuonly函数库
然后,你再卸载它conda uninstall cpuonly
==
over ~
conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]
conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]
一、问题描述
按照pytorch官网安装pytorch GPU版本,结果却是CPU版本。
我的倔脾气,嘿!反反复复安装、卸载个五、六、七、八 遍。才意识到再操作一遍也是一样的结果。
二、网上解决方案罗列
还是上网搜索:
结果发现,遇到和我同样问题的还不少。
我发现大家的解决办法不相同,大致如下:
解决方案一:卸载pytorch-mutex
解决方案二:卸载cpuonly
解决方案三:卸载numpy
,哦呵…
如果继续往下看,你或许明白上面的方案的确能解决问题。但是,这种神秘性以及某种被约束的感觉真的不是太好。上面这些方案,其实就是瞎猫碰上死耗子!!! 他们能起作用本身就是一个BUG。
程序员的诡异操作,写的代码莫名其妙运行起来了。。
想知道这个问题产生的根本原因以及根本解决方案,那么请继续跟着我一起往下看吧…
三、发现的根本原因[独家]
3.1 pytorch文件命名格式
首先介绍一个pytorch
的文件名的普通命名格式。
一个在python=3.7
conda 环境下,cudatoolkit=10.1
版本的pytorch=1.7.0
的文件名为:pytorch-1.7.0-py3.7_cuda10.1.243_cudnn7.6.3_0.tar.bz2
。
一个在python=3.7
conda 环境下,CPU
版本的pytorch=1.7.0
的文件名为pytorch-1.7.0-py3.7_cpu_0.tar.bz2
。
从上可以看出,不同的python版本,GPU/CPU,若是GPU版本,则cudatoolkit的版本,再加上pytorch的版本,唯一指定一个pytorch安装文件。
明白这个,我们再继续往下。
3.2 问题的根本原因:找不到对应GPU版本的pytorch文件,所以conda就用CPU替代了=v=
先说一下问题产生的根本原因:指定某一版本cudatoolkit
下的指定版本的pytorch
不在源(国内conda镜像源或因外源)中,导致某一版本cudatoolkit
下的指定版本的pytorch
无法被conda install找到,然而不凑巧的是,源中却有指定版本的pytorch
,不过它是CPU版本。那么,conda install这个小机灵鬼自作主张的替你安装了这个版本。结果就是,你觉得明明安装的是GPU版pytorch,可是像是有种神秘力量让你最终得到的总是cpu版pytorch。
例子1:
conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
-c pytorch
是指在官方源里找库。此时,如果conda官方源里没有(或者由于网络问题无法访问官方源)cudatoolkit=11.3
对应的GPU版pytorch
,而此时conda install又找到一个CPU版的pytorch
,那么结果是,它给你安装了这个cpu版的pytorch
。
例子2:
conda create -n pytorch-GPU python=3.7 # 创建一个python3.7的conda环境
conda activate pytorch-GPU # 进入该conda环境
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ # 换conda源
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ # 换conda源
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ # 换conda源
conda install cudatoolkit=10.0 -c http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/ # 安装 cuda
conda install cudnn=7.6 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/ # 安装cudnn
conda install pytorch==1.7.0 torchvision==0.8 cudatoolkit=10.0 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/# 安装pytorch
我想通过国内的镜像源来安装cudatoolkit=10.0
版本的pytorch==1.7.0
,结果我发现安装的还是cpu版本。我在https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/上发现,原来镜像源里根本没这个文件。于是,conda install这个小机灵鬼又自作主张的给我装了cpu版本的文件pytorch-1.7.0-py3.7_cpu_0.tar.bz2
,它给我装的文件python版本相同,pytorch版本相同,唯一不同的就是CPU/GPU。
此处需要指出,若采用官方命令
conda install pytorch torchvision torchaudio cudatoolkit=10.2 -c pytorch
,安装的是pytorch==1.4.0
版本,此版本在from torch.cuda.amp import GradScaler, autocast
时会报错from torch.cuda.amp import GradScaler, autocast
。网上说是1.4版本太低,换1.7就好了。
3.3 解决方案
我们安装前先要确定源中是否真的有我们组合出来的版本,[python|cudatoolkit|pytorch]这三个版本不同的组合,真的不一定有。
例如,我发现根本没有满足python=3.7
,cudatoolkit=10.0
以及pytorch=1.7.0
的版本,但是在镜像源中,我发现有python=3.7
,cudatoolkit=10.1
以及pytorch=1.7.0
的版本,于是用以下命令安装:
conda create -n pytorch-GPU python=3.7 # 创建一个python3.7的conda环境
conda activate pytorch-GPU # 进入该conda环境
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ # 换conda源
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ # 换conda源
conda config --add channels http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/ # 换conda源
conda install cudatoolkit=10.1 -c http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/linux-64/ # 安装 cuda
conda install cudnn=7.6 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/linux-64/ # 安装cudnn
conda install pytorch==1.7.0 torchvision==0.8 cudatoolkit=10.1 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/linux-64/# 安装pytorch
仔细看下图的倒数第5行,我们发现,conda install找到对应的gpu版本,此时,它便不好去自作主张了,乖乖地给我安装gpu版本吧。
以上
by windSeS
2022-7-21
以上是关于安装GPU版本的pytorch(解决pytorch安装时默认安装CPU版本的问题)保姆级教程的主要内容,如果未能解决你的问题,请参考以下文章