conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]

2024-02-26 1698阅读

温馨提示:这篇文章已超过402天没有更新,请注意相关的内容是否还可用!

conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]

    • 一、问题描述
    • 二、网上解决方案罗列【此节为反面方案罗列!!!】
    • 三、发现的根本原因[独家]
      • 3.1 pytorch文件命名格式
      • 3.2 问题的根本原因:找不到对应GPU版本的pytorch文件,所以conda就用CPU替代了=v=
      • 3.3 解决方案

        一、问题描述

        按照pytorch官网安装pytorch GPU版本,结果却是CPU版本。

        conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]

        我的倔脾气,嘿!反反复复安装、卸载个五、六、七、八 遍。才意识到再操作一遍也是一样的结果。

        二、网上解决方案罗列【此节为反面方案罗列!!!】

        还是上网搜索:

        conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]

        结果发现,遇到和我同样问题的还不少。

        我发现大家的解决办法不相同,大致如下:

        解决方案一:卸载pytorch-mutex

        conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]

        解决方案二:卸载cpuonly

        conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]

        解决方案三:卸载numpy,哦呵…

        conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]

        如果继续往下看,你或许明白上面的方案的确能解决问题。但是,这种神秘性以及某种被约束的感觉真的不是太好。上面这些方案,其实就是瞎猫碰上死耗子!!! 他们能起作用本身就是一个BUG。

        程序员的诡异操作,写的代码莫名其妙运行起来了。。

        想知道这个问题产生的根本原因以及根本解决方案,那么请继续跟着我一起往下看吧…

        三、发现的根本原因[独家]

        3.1 pytorch文件命名格式

        首先介绍一个pytorch的文件名的普通命名格式。

        一个在python=3.7conda 环境下,cudatoolkit=10.1版本的pytorch=1.7.0的文件名为:pytorch-1.7.0-py3.7_cuda10.1.243_cudnn7.6.3_0.tar.bz2。

        一个在python=3.7conda 环境下,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安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]

        此处需要指出,若采用官方命令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版本吧。

        conda安装GPU版pytorch,结果却是cpu版本[找到问题根源,从容解决]


        以上

        by windSeS

        2022-7-21

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]