给本科生写的新手教程,遇到很多新手的共性问题,可供大家参考。在开始阅读之前,请注意两个要关键:1.为什么要使用Conda而不在本地直接安装Python,体会Conda带来的区别和优势。2.明确CUDA版本和torch-gpu版的兼容情况。
Conda是一个开源的软件包管理系统和环境管理系统,用于安装多个版本的软件包及其依赖关系,并在它们之间轻松切换。是最流行的Python环境管理工具。
考虑下图的场景,三个项目,使用了三种不同的Python和依赖包(特别是在做深度学习相关研究的场景下,需要复现其他论文的代码工作进行对比试验,不同版本的库很可能存在许多冲突),如果你在本地直接安装Python,会产生冲突。难道我们要先创建项目A的环境运行项目A,然后卸载该A环境再创建项目B的环境运行项目B…
但是如果使用Conda,就可以通过Conda,在本地同时创建多个Python环境,并在它们之间轻松切换,每个环境都是独立的,不会影响其他环境。
是Conda的两种发行版,Anaconda比较繁杂笨重,miniconda比较干净轻量。
Anaconda是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,就是把很多常用的不常用的库都给你装好了。
Miniconda,顾名思义,它只包含最基本的内容—python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择。就只包含最基本的东西,其他的库得自己装。
建议使用Miniconda,已装了Anaconda的同学可以无视。
本地直接安装的Python的同学,如果想换Miniconda,直接把本地的Python直接卸载,如卸载,记得将原本配置的Python环境变量删除,否则系统会默认原来的路径,执行某些命令产生错误。
即出现如下情况(pytorch环境装到了C盘,我们大多数人不希望把它装到系统盘);
选择你想要安装的目标路径(我这个演示电脑只有一个C盘),然后继续Next;
建议只勾选✔第一个和第三个(创建快捷方式;我们自己添加环境变量以避免带来一系列未知冲突;将base环境的python设置为本机的默认Python;
可以都不用勾选;
初始化,第一次在本机安装Conda的同学可能会遇到如下问题:
You may need to close and restart your shell after running ‘conda init’.
此时,输入如下命令执行,然后关闭终端命令行窗口重新打开即可。
conda init cmd.exe
创建环境:py39test是环境名,请自行定义,python=3.9表示在本环境中安装Python3.9,根据自己的需求自行更改。
conda create -n py39test python=3.9
激活环境(即进入某个环境),进入该环境后才能对该环境进行操作。
conda activate py39test
退出环境
conda deactivate
删除环境,指定环境名进行删除。
conda remove -n py39test --all
查看环境
conda env list
可见当前conda中存在base和py39test两个环境
进入某一环境后,在当前环境安装其他库与使用pip相似,如:
conda install pandas
当然,也可以在当前环境直接使用pip进行安装,二者一般被认为是几乎相同的。conda存储库中提供了1500 多个包,但与PyPI上提供的超过150000个软件包相比,它仍然很小,因此,很多时候所需要安装的包只能通过pip安装。
更换下载源
这一步做不做都行。因为conda默认使用官方源进行下载,速度会相对慢,特别是像Pytorch这样很大的包,可以更换成国内源加速下载,如清华镜像源。
.condarc
的文件,可先执行 conda config --set show_channel_urls yes
生成该文件之后再修改。该文件自动生成在C盘-用户-用户名下。打开.condarc文件后,将内容重置为(注意格式):
show_channel_urls: true
channels:
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
- http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
ssl_verify: true
然后运行 conda clean -i
清除索引缓存,保证用的是镜像站提供的索引。
后续如果要使用清华源进行下载,需要将命令最后的’-c pytorch’参数去掉。
更多conda命令请自行百度。
在Pycharm中如何使用Conda环境的Python解释器呢?
Conda自带的默认的base环境的解释器就在安装Conda的根目录下:
其余环境在envs文件夹下;
进入某个环境文件下,选择该解释器的路径,即可在Pycharm中使用该虚拟环境。
如图所示:
一个当前学术界最流行的简洁、快速、高效、易用、生态丰富的开源深度学习框架,基于Python,支持GPU加速计算。
打开Pytorch官网,根据需要PyTorch版本、你的操作系统、Conda/Pip(没有Conda的直接使用pip)、语言、计算平台选择指令,官网页面只提供最新的版本安装指令。
点击Install previous versions of PyTorch可以查看过去已发布的Pytorch版本安装指令(建议到这里面找,)。
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -nvidia
最后的’-nvidia前面少了个-c’,更改为
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c -nvidia
此外,Python和Pytorch版本存在对应关系,具体可以查看:torch/torchvision/python版本对应关系。根据下图,建议不使用过高或者过低的Python版本,就可以兼容大多数Pytorch版本。
本机没有NVIDIA独立显卡的同学只能安装CPU版,必须是NVIDIA,而且是独显,集成显卡也不行。
命令:
conda install pytorch torchvision torchaudio cpuonly -c pytorch
再如,我们指定pytorch版本为1.9.0,torchvision为0.10.0,不安装torchaudio:
conda install pytorch==1.9.0 torchvision==0.10.0 cpuonly -c pytorch
安装GPU版的Pytorch,首先需要有NVIDIA独立显卡和CUDA驱动,驱动一般都装好了(没有自行百度),然后需要安装CudaToolKit。NVIDIA CUDA Toolkit是一个专业的CUDA工具包,为用户提供了专业的开发环境,创建经GPU加速的高性能应用。(大概意思就是有CUDA Toolkit你才能使用GPU加速神经网络。)
打开终端cmd,命令:
nvidia-smi
原则:驱动是向下兼容的,其决定了可安装的CUDA Toolkit的最高版本。官方推荐的cuda版本为10.2和11.3,这两种 cuda 支持大多数的 pytorch 版本。但是,请注意,有些同学的显卡比较老了,如果是CUDA是10.2,最高只能支持到torch-gpu的1.10.0版本,也就是说CUDA10.2安装不了torch-1.10.0以上的GPU版本,但是CPU版本可以,只要你的python版本符合要求。
例如,我的NVIDIA驱动版本是516.59,根据下图,我可以装的CUDA Tookit的最高版本是11.7,并且向下兼容可以安装10.1~11.7的全部版本。
# CUDA 11.3
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.3 -c pytorch
也可以是:
# CUDA 11.6
conda install pytorch==1.12.1 torchvision==0.13.1 torchaudio==0.12.1 cudatoolkit=11.6 -c pytorch -c conda-forge
这一步是针对不安装Conda的同学的。
CPU版直接使用pip命令安装对应版本;
GPU版根据CUDA驱动版本,直接pip安装,和conda其实是异曲同工的,一般是在安装时加上’torch==xxx+cuxxx’这样的参数,具体请查看官网命令。
如:(显然,如果你进入conda环境后,也可以使用下列命令安装torch-gpu版,因为我们在前面说过,conda环境下使用conda install和pip install是基本一样的,只是拉取这些库的源不同,请仔细体会conda的作用。)
# CUDA 11.6
pip install torch==1.12.0+cu116 torchvision==0.13.0+cu116 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu116
# CUDA 11.3
pip install torch==1.12.0+cu113 torchvision==0.13.0+cu113 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu113
# CUDA 10.2
pip install torch==1.12.0+cu102 torchvision==0.13.0+cu102 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu102
# CPU only
pip install torch==1.12.0+cpu torchvision==0.13.0+cpu torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cpu
import torch
print(torch.cuda.is_available())
# 如果成功安装了CPU版本,会输出False
# 如果成功安装了GPU版本,会输出True,集成显卡也会输出True,但是用不了。
# 没有报错即安装成功。