conda自动安装cpu版本pytorch
问题描述
由于conda自带的源太慢,换成了清华源,结果无论怎么下载都无法使用cuda。检查conda列表发现装的是cpu版本
原因
网上众说纷纭,例如删掉cpu-only
包,但都是瞎猫碰上死耗子。
真正的原因是Anaconda的清华源有很多不同的链接:
- 有时候遇到同名的包会按照url的优先级默认安装第一个找到的版本。
- 你指定的pytorch版本+cudatoolkit无法在清华源上匹配到,于是清华源自动给你安装了它认为最匹配的包(这点特别坑)
解决方法
正确添加conda镜像源
-
输入
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
(包含pytorch和cudatoolkit)
输入conda config --set show_channel_urls yes
-
Linux上
vim ~/.condarc
查看本地conda换源文件,确保1中的链接在首位。如果你只用anaconda安装pytorch,可以删掉default
以外的链接。如果你想安装其他的包,酌情添加以下链接(但还要确保1中的链接在首位):
深度学习源(包含古早 pytorch 和 tensorflow1)
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/(包含cpu版本pytorch,古早CUDA版本pytorch,部分cudatoolkit)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/(复制原仓库)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/ (旧conda-forge)
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/peterjc123/(非linux的源) -
根据cuda版本指定对应的pytorch
版本对应表见这里
或者直接访问1的网站查看你指定的pytorch和cuda版本是否在镜像中有安装包
比如最新的pytorch 12.0版本不支持CUDA 11.1,如果你指定的版本号没有,那就会给你自动下载cpu版本的 -
查看pytorch安装版本
通过conda安装:conda list pytorch
出现cuda版本号说明安装正确,出现cpu说明安装失败,什么都没有说明你可能是通过pip安装的
通过pip 安装:进入python里面import torch
torch.cuda.is_available()
输出 True 可用,Flase 不可用
torch.__version__
输出 1.9.1+cpu 表示 cpu 版本,不带cpu表示是gpu版本
torch.version.cuda
输出 10.0等版本号 表示可用;输出 False或者空,表示找不到对应 torch 版本的 CUDA,要么是 pytorch 版本错了,要么是 CUDA版本错了,建议重装 pytorch