Anaconda + cuda10.2 + pytorch1.6.0 环境配置加踩坑

背景:

Linux x86_64的系统,win或者mac应该大同小异
因为是在学校服务器上部署的环境,cuda已经安装好了,这里cuda安装的是10.2版本的
安装cuda教程网上有很多,要注意安装的cuda版本和自己服务器的GPU驱动版本匹配

可以用nvidia-smi来查看
查看驱动和cuda版本
安装好cuda之后,就可以安装python和pytorch了


python安装

首先python安装可以选择直接安装python环境或者安装anaconda,两者都行,anaconda在python环境管理上还是很方便的,这里建议硬盘资源不吃紧的话,都选择anaconda安装

Anaconda安装

网上有很多教程,我这里主要记录一些重点和坑
首先是anaconda怎么下载,我这里是在服务器配置的环境,我是在清华源下载anaconda源文件,然后传到服务器上安装
清华源下载anaconda
下载的时候注意选择要看自己的操作系统,是win、Linux还是macos,是32位还是64位

anaconda有个自带的python环境,我一开始很强迫症,想直接找一个自带的python环境就符合我要求的,后来我放弃了,太浪费时间了,所以如果大家用了anaconda,就选一个比较新的版本,然后装自己想要的python环境就好,很方便,就只是占硬盘空间而已。

conda create --name torch_learn python=3.7.6

后面python=自己想要的python版本就好

conda activate torch_learn

切换到自己新建的虚拟环境
这里我下载的是Anaconda3-5.3.1-Linux-x86_64.sh,安装好之后新建了python 3.7.6的环境

Anaconda换源

anaconda的默认源很慢,所以一般换成国内清华源

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 config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
conda config --set show_channel_urls yes

这里要注意一下,其实我这里只用到了添加的最下面两个源,pkgs/main源里有pytorch需要依赖的包,然后cloud/pytorch里有pytorch的包(python叫包还是库啊,我刚学还不太懂= =)。
有很多教程只说添加main源,甚至有的只提到了free源,如果要装pytorch,main和pytorch这两个源是必须的。
还有在换源之后,不要随便更新conda

conda update -n base -c defaults conda

上面这个命令,非必要不要执行,至少我执行就出问题了。因为这个更新使用的是conda默认的源,会和我们通过清华源安装的包冲突,这就会很麻烦
我是在conda安装包,报下面这个错的时候,根据网上的教程执行了上面更新的命令,然后包直接冲突了
Solving environment: failed CondaValueError: Malformed version string ‘~’: invalid character(s).
最终我解决这个报错的方式是换了一个python版本,从3.7.0换到了3.7.6,就像之前说的建了一个新的虚拟环境


pytorch安装

pytorch版本选择

我的pytorch版本是结合cuda版本还有python版本一块来的,首先服务器已经安装了cuda10.2,那么我就只能选择相对应的版本,首先来到上面换源提到的 cloud/pytorch 这个清华源
清华pytorch源
Anaconda + cuda10.2 + pytorch1.6.0 环境配置加踩坑_第1张图片

这里进入自己操作系统的分类,我的是linux,点进来之后可以全局搜索一下pytorchAnaconda + cuda10.2 + pytorch1.6.0 环境配置加踩坑_第2张图片
最后我锁定了这个版本,首先它是cuda10.2的,这里对应我已经安装的cuda10.2,然后它需要py3.7,这也是我选择python 3.7.6的原因(一开始的py 3.7.0莫名奇妙报错了,所以就换成这个了)
这一步的目的是找到我们换的清华源里,有哪个pytorch版本是可用的,如果有其他版本需求的同学,也可以根据这个思路去选择自己需要的pytorch版本,再去选择python版本或者cuda版本


pytorch安装

这里我们先来pytorch的官网
pytorch官网
查看以往所有版本,找到安装pytorch1.6的conda命令

conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.2 -c pytorch

但我们不要这样,需要把后面的-c pytorch去掉,也就是这样

conda install pytorch==1.6.0 torchvision==0.7.0 cudatoolkit=10.2

否则在安装pytorch的时候,会默认使用默认源,清华源的配置就失效了,会相当慢
在使用conda安装的时候,conda会提示有哪些包将要被安装Anaconda + cuda10.2 + pytorch1.6.0 环境配置加踩坑_第3张图片
可以着重看一下这个pytorch的版本是否是自己想要的,如果不是,应该就是前面某一步做错了

pytorch测试

这里的测试按照官网上的步骤来就可以了

import torch
torch.cuda.is_available()

一定要记得测试一下这个,如果返回的是false,那么pytorch和cuda版本不匹配,cuda和显卡驱动版本不匹配,甚至显卡驱动装错了都是有可能的,这里就需要大家自己去排查错误了
如果用的是docker,那么记得看下自己用的是不是nvidia-docker


总结

如果大家对各种版本没要求的话,那么我推荐的版本是
cuda 10.2(前提是和自己显卡驱动能够匹配)
python 3.7.6
pytorch 1.6.0
记得使用清华的pytorch 和main源
那么这样部署环境应该是没问题的,至少我这边部署好了:)

你可能感兴趣的:(python,pytorch)