conda环境中cuda的安装

今天在conda下d2l环境中,正在使用pytorch学卷积神经网络,想用gpu加速训练,于是使用如下命令

torch.cuda.device_count()

竟然输出0。我是安装过cuda且有gpu的,怎么回事呢。可能是之前没注意版本的原因。
干脆重新安装吧!

环境上的问题

一定要让你用的pip与python对应,否则全都白做
在安装之前,先看好自己的python和pip版本。
我是在conda创造的虚拟环境d2l中进行所有步骤的,其python=3.8,其他环境中也类似。
执行

python -V
python3 -V
pip -V
pip3 -V

(我花了一上午的时间才发现这个问题,用pip安装的torch安装到了python3.9中了,而我用的是python3.8,导致python3.8一直无法使用GPU。最终卸载掉了多余的python,接下来的python和pip都对应的python3.8.13)

接下来是conda的修改镜像环节,目的是加速下载速度。
下面的操作是常用命令:

  1. 查看镜像
conda config --show channels
  1. 添加镜像(这里使用清华的)
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/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge 
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
  1. 恢复默认源
conda config --remove-key channels

接下来将conda激活到要安装的环境,我的是d2l

conda activate d2l

安装cuda

查找源上可用的cuda版本

conda search cudatoolkit --info

找到想要下载的cuda版本后,把cuda下载到本地:复制url字段里的下载链接到浏览器,会自动下载到本地Download文件夹下。
然后安装本地包:

conda install --use-local 本地cuda包所在的路径

安装cudnn

查看cuda对应的cudnn版本

conda search cudnn --info


我的cuda版本是11.3,所以选择这个。
同样,将url复制到浏览器下载,然后conda本地安装

conda install --use-local 本地cudnn包所在的路径

安装pytorch

去官网查询与cuda匹配的pytorch和torchvision包。官网:INSTALLING PREVIOUS VERSIONS OF PYTORCH
我的cuda是11.3,因此我执行这句话:

pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 torchaudio==0.12.1 --extra-index-url https://download.pytorch.org/whl/cu113

注意,这里不要用conda的命令,而是用pip的命令原因是conda会让你下载cpu版本的torch[1]
等一会儿就安装成功了。

验证

输入python代码

(d2l) PS E:\study\deapLearning\d2l-zh> python
Python 3.8.13 (default, Oct 19 2022, 22:38:03) [MSC v.1916 64 bit (AMD64)] :: Anaconda, Inc. on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.__version__
'1.12.1+cu113'
>>> torch.cuda.is_available()
True
>>> torch.cuda.device_count()
1
>>>

成功。


参考了以下博文,在此表示感谢:
conda虚拟环境中安装cuda和cudnn,再也不用头疼版本号的问题了
Anaconda创建虚拟环境报错—UnavailableInvalidChannel: The channel is not accessible or is invalid
torch.cuda.is_available()返回false——解决办法


  1. 来源是torch.cuda.is_available()返回false——解决办法 ↩︎

posted @ 2022-11-09 17:21  white514  阅读(5241)  评论(0编辑  收藏  举报