想运行深度学习的代码,第一步就是搭建深度学习环境,无论是使用什么框架(pytorch、tensorflow),还是使用什么操作系统(windows,linux)。
运行代码时要想加速训练的话,肯定要使用GPU,一般用户大多数都是用nvidia显卡,而这时就需要配置cuda、cudnn啥的,而手动配置比较麻烦,需要先去官网下载,还得配置环境变量啥的。所以本文介绍使用anaconda配置深度学习环境的方法。
1 anaconda
1.1 什么是anaconda,它有什么用
简单的说,anaconda是一个环境管理和包管理的工具,是一个跨平台的软件,可以用它方便的创建、切换python虚拟环境,为python虚拟环境安装第三方包。主要命令是conda,可使用这个命令来实现环境的创建、切换和包的安装。
除了anaconda,其实还有一个miniconda,miniconda可以看作是anaconda的精简版,它只允许使用conda命令进行操作,而不提供图形界面和其它anaconda具有的功能(比如jupyter notebook啥的)。如果没有图形界面操作需要的话,可以安装miniconda,miniconda安装包比较小,安装之后占用的空间也小。
当然,如果不喜欢anaconda的话,只用python解释器也行,使用python也可以创建虚拟环境,再激活相应的虚拟环境,再安装相应的深度学习框架和第三方包,使用GPU的话,还需要手动配置cuda啥的,这样比较麻烦。使用conda只是比较方便而已。
1.2 安装anaconda
进入anaconda官网,根据自己的操作系统选择相应的安装文件或安装脚本下载即可。
具体安装过程不再详述,按照提示操作即可。
2 搭建深度学习环境
2.1 使用pytorch
torch | torchvision | python |
---|---|---|
main / nightly | main / nightly | >=3.7 , <=3.10 |
1.12.0 | 0.13.0 | >=3.7 , <=3.10 |
1.11.0 | 0.12.0 | >=3.7 , <=3.10 |
1.10.2 | 0.11.3 | >=3.6 , <=3.9 |
1.10.1 | 0.11.2 | >=3.6 , <=3.9 |
1.10.0 | 0.11.1 | >=3.6 , <=3.9 |
1.9.1 | 0.10.1 | >=3.6 , <=3.9 |
1.9.0 | 0.10.0 | >=3.6 , <=3.9 |
1.8.2 | 0.9.2 | >=3.6 , <=3.9 |
1.8.1 | 0.9.1 | >=3.6 , <=3.9 |
1.8.0 | 0.9.0 | >=3.6 , <=3.9 |
1.7.1 | 0.8.2 | >=3.6 , <=3.9 |
1.7.0 | 0.8.1 | >=3.6 , <=3.8 |
1.7.0 | 0.8.0 | >=3.6 , <=3.8 |
1.6.0 | 0.7.0 | >=3.6 , <=3.8 |
1.5.1 | 0.6.1 | >=3.5 , <=3.8 |
1.5.0 | 0.6.0 | >=3.5 , <=3.8 |
1.4.0 | 0.5.0 | ==2.7 , >=3.5 , <=3.8 |
1.3.1 | 0.4.2 | ==2.7 , >=3.5 , <=3.7 |
1.3.0 | 0.4.1 | ==2.7 , >=3.5 , <=3.7 |
1.2.0 | 0.4.0 | ==2.7 , >=3.5 , <=3.7 |
1.1.0 | 0.3.0 | ==2.7 , >=3.5 , <=3.7 |
<=1.0.1 | 0.2.2 | ==2.7 , >=3.5 , <=3.7 |
这个表是目前为止所有版本的对应关系,需要注意的是随着时间的推移,此表内容会被更新,因此最新信息请移步官方链接查看。
2.1.1 不使用GPU
进入pytorch官网
比如使用1.12.0版本的torch,那么从上表可知,选择的python版本要>=3.7, <=3.10
,那么便可以使用如下命令操作
# 进入anaconda会自动激活base环境。我们要做的是创建自己的虚拟环境并激活,然后再使用
# 这里的python版本只要符合表中要求即可
(base) root@server:~# conda create --name torch-env python=3.9 -y
(base) root@server:~# conda activate torch-env
(torch-env) root@server:~#
在官网界面根据实际情况进行相应选择即可。下面最后一行是安装命令,原样执行即可
# 执行之前要先激活对应的虚拟环境
(torch-env) root@server:~# conda install pytorch torchvision torchaudio cpuonly -c pytorch
2.1.2 使用GPU
需要注意的是,如果使用GPU,则还需要搞清楚自己使用的显卡型号、显卡驱动版本。因为不同的显卡算力不同,不同版本cuda支持的显卡算力也不同,cuda版本和显卡驱动版本也有关系。
1、显卡型号及算力。以下是部分图示。
2、不同版本cuda支持的GPU算力
The nvcc compiler included with versions 10.x (10.0, 10.1 and 10.2) of the CUDA Toolkit
can generate cubins native to the Volta and Turing architectures (compute capability 7.x).
With versions 11.0 of the CUDA Toolkit, nvcc can generate cubin native to the NVIDIA
Ampere GPU architecture (compute capability 8.0).
简单的说
cuda版本 | 支持的GPU算力 |
---|---|
10.x | 7.x |
11.0 | 8.0 |
CUDA Toolkit | Linux x86_64 Driver Version | Windows x86_64 Driver Version |
---|---|---|
CUDA 11.7 GA | >=515.43.04 | >=516.01 |
CUDA 11.6 Update 2 | >=510.47.03 | >=511.65 |
CUDA 11.6 Update 1 | >=510.47.03 | >=511.65 |
CUDA 11.6 GA | >=510.39.01 | >=511.23 |
CUDA 11.5 Update 2 | >=495.29.05 | >=496.13 |
CUDA 11.5 Update 1 | >=495.29.05 | >=496.13 |
CUDA 11.5 GA | >=495.29.05 | >=496.04 |
CUDA 11.4 Update 4 | >=470.82.01 | >=472.50 |
CUDA 11.4 Update 3 | >=470.82.01 | >=472.50 |
CUDA 11.4 Update 2 | >=470.57.02 | >=471.41 |
CUDA 11.4 Update 1 | >=470.57.02 | >=471.41 |
CUDA 11.4.0 GA | >=470.42.01 | >=471.11 |
CUDA 11.3.1 Update 1 | >=465.19.01 | >=465.89 |
CUDA 11.3.0 GA | >=465.19.01 | >=465.89 |
CUDA 11.2.2 Update 2 | >=460.32.03 | >=461.33 |
CUDA 11.2.1 Update 1 | >=460.32.03 | >=461.09 |
CUDA 11.2.0 GA | >=460.27.03 | >=460.82 |
CUDA 11.1.1 Update 1 | >=455.32 | >=456.81 |
CUDA 11.1 GA | >=455.23 | >=456.38 |
CUDA 11.0.3 Update 1 | >= 450.51.06 | >= 451.82 |
CUDA 11.0.2 GA | >= 450.51.05 | >= 451.48 |
CUDA 11.0.1 RC | >= 450.36.06 | >= 451.22 |
CUDA 10.2.89 | >= 440.33 | >= 441.22 |
CUDA 10.1 (10.1.105 general release, and updates) | >= 418.39 | >= 418.96 |
CUDA 10.0.130 | >= 410.48 | >= 411.31 |
CUDA 9.2 (9.2.148 Update 1) | >= 396.37 | >= 398.26 |
CUDA 9.2 (9.2.88) | >= 396.26 | >= 397.44 |
CUDA 9.1 (9.1.85) | >= 390.46 | >= 391.29 |
CUDA 9.0 (9.0.76) | >= 384.81 | >= 385.54 |
CUDA 8.0 (8.0.61 GA2) | >= 375.26 | >= 376.51 |
CUDA 8.0 (8.0.44) | >= 367.48 | >= 369.30 |
CUDA 7.5 (7.5.16) | >= 352.31 | >= 353.66 |
CUDA 7.0 (7.0.28) | >= 346.46 | >= 347.62 |
一般来说,高版本是兼容低版本的,也就是说cuda10.x
支持的显卡,cuda11.x
肯定支持;cuda11.2.x
支持的,cuda11.7.x
肯定支持。所以,到底该怎么确定这些版本呢?
- 查看自己GPU型号,确定GPU算力。
- 把自己的显卡驱动升到最新版本(不说最新,至少版本别太旧)。
- 确定cuda版本。这里一个原则是,选择框架支持的较新的cuda版本,或许觉得自己显卡型号旧,算力低,没关系,直接往高版本搞,人家cuda版本都能支持8.x的算力了,支持你5.x、6.x、7.x那不绰绰有余?
- 确定pytorch框架版本。
- 确定python版本。python版本的选择取决于框架版本。
下面举个例子。
1、确定显卡型号
(torch-env) root@server:~# nvidia-smi -L
GPU 0: NVIDIA GeForce RTX 2080 Ti (UUID: GPU-***-***-***-***-***)
GPU 1: NVIDIA GeForce RTX 2080 Ti (UUID: GPU-***-***-***-***-***)
GPU 2: NVIDIA GeForce RTX 2080 Ti (UUID: GPU-***-***-***-***-***)
GPU 3: NVIDIA GeForce RTX 2080 Ti (UUID: GPU-***-***-***-***-***)
GPU 4: NVIDIA GeForce RTX 2080 Ti (UUID: GPU-***-***-***-***-***)
GPU 5: NVIDIA GeForce RTX 2080 Ti (UUID: GPU-***-***-***-***-***)
可以看到,这里的显卡型号为NVIDIA GeForce RTX 2080 Ti
,根据上面那个表可以看出,此显卡算力为7.5
。
2、选择合适的显卡驱动。
直接更新到最新吧。
3、确定cuda版本
由步骤1可知,目标版本的cuda支持的算力要高于7.5。只要深度学习框架支持,选择较新版本的cuda肯定不会错。这里暂定选择11.x
版本的cuda。
4、确定pytoch版本
用conda搜索一下软件源有的cuda
(torch-env) root@server:~# conda search cudatoolkit
Loading channels: done
# Name Version Build Channel
cudatoolkit 7.5 0 anaconda/pkgs/free
cudatoolkit 7.5 2 anaconda/pkgs/free
cudatoolkit 8.0 1 anaconda/pkgs/free
cudatoolkit 8.0 3 anaconda/pkgs/free
cudatoolkit 9.0 h13b8566_0 anaconda/pkgs/main
cudatoolkit 9.0 h13b8566_0 pkgs/main
cudatoolkit 9.2 0 anaconda/pkgs/main
cudatoolkit 9.2 0 pkgs/main
cudatoolkit 10.0.130 0 anaconda/pkgs/main
cudatoolkit 10.0.130 0 pkgs/main
cudatoolkit 10.1.168 0 anaconda/pkgs/main
cudatoolkit 10.1.168 0 pkgs/main
cudatoolkit 10.1.243 h6bb024c_0 anaconda/pkgs/main
cudatoolkit 10.1.243 h6bb024c_0 pkgs/main
cudatoolkit 10.2.89 hfd86e86_0 anaconda/pkgs/main
cudatoolkit 10.2.89 hfd86e86_0 pkgs/main
cudatoolkit 10.2.89 hfd86e86_1 anaconda/pkgs/main
cudatoolkit 10.2.89 hfd86e86_1 pkgs/main
cudatoolkit 11.0.221 h6bb024c_0 anaconda/pkgs/main
cudatoolkit 11.0.221 h6bb024c_0 pkgs/main
cudatoolkit 11.3.1 h2bc3f7f_2 anaconda/pkgs/main
cudatoolkit 11.3.1 h2bc3f7f_2 pkgs/main
pytorch支持的最新的cuda 11.6
支持的显卡算力肯定够了,但是conda软件源最高只有cuda 11.3
因此这里选择cuda 11.3
5、确定python版本
比如使用1.12.0版本的torch,那么从对应关系表可知,选择的python版本要>=3.7, <=3.10
。
整个安装过程如下所示:
# 进入anaconda会自动激活base环境。我们要做的是创建自己的虚拟环境并激活,然后再使用
# 这里的python版本只要符合表中要求即可
(base) root@server:~# conda create --name torch-env python=3.9 -y
(base) root@server:~# conda activate torch-env
(torch-env) root@server:~# conda install pytorch torchvision torchaudio cudatoolkit=11.3 -c pytorch
查看框架版本和GPU是否可用
# 进入python环境
(torch-env) root@server:~# python
>>> import torch
>>>
>>> torch.__version__
***
>>>
>>> torch.cuda.is_available()
True
2.2 使用tensorflow
tensorflow官网
这里只说明TensorFlow 2的搭建步骤。
TensorFlow 2 packages require a pip version >19.0 (or >20.3 for macOS).
2.2.1 不使用GPU
Version | Python version |
---|---|
tensorflow-2.9.0 | 3.7-3.10 |
tensorflow-2.8.0 | 3.7-3.10 |
tensorflow-2.7.0 | 3.7-3.9 |
tensorflow-2.6.0 | 3.6-3.9 |
tensorflow-2.5.0 | 3.6-3.9 |
tensorflow-2.4.0 | 3.6-3.8 |
tensorflow-2.3.0 | 3.5-3.8 |
tensorflow-2.2.0 | 3.5-3.8 |
tensorflow-2.1.0 | 3.5-3.7 |
tensorflow-2.0.0 | 3.5-3.7 |
tensorflow-1.15.0 | 3.5-3.7 |
tensorflow-1.14.0 | 3.5-3.7 |
tensorflow-1.13.0 | 3.5-3.7 |
tensorflow-1.12.0 | 3.5-3.6 |
tensorflow-1.11.0 | 3.5-3.6 |
tensorflow-1.10.0 | 3.5-3.6 |
tensorflow-1.9.0 | 3.5-3.6 |
tensorflow-1.8.0 | 3.5-3.6 |
tensorflow-1.7.0 | 3.5-3.6 |
tensorflow-1.6.0 | 3.5-3.6 |
tensorflow-1.5.0 | 3.5-3.6 |
tensorflow-1.4.0 | 3.5-3.6 |
tensorflow-1.3.0 | 3.5-3.6 |
tensorflow-1.2.0 | 3.5-3.6 |
tensorflow-1.1.0 | 3.5 |
tensorflow-1.0.0 | 3.5 |
1、安装最新稳定版tensorflow
(base) root@server:~# conda create --name tf29-py39 python=3.9 -y
(base) root@server:~# conda activate tf29-py39
# Requires the latest pip
(tf29-py39) root@server:~# pip install --upgrade pip
# Current stable release for CPU and GPU
(tf29-py39) root@server:~# pip install tensorflow
2、安装指定版tensorflow
(base) root@server:~# conda create --name tf24-py38 python=3.8 -y
(base) root@server:~# conda activate tf24-py38
(tf24-py38) root@server:~# pip install --upgrade pip
(tf24-py38) root@server:~# pip install tensorflow==2.4
2.2.2 使用GPU
tensorflow版本、python版本、cudnn版本、cuda版本对应关系
Version | Python version | cuDNN | CUDA |
---|---|---|---|
tensorflow_gpu-2.9.0 | 3.7-3.10 | 8.1 | 11.2 |
tensorflow_gpu-2.8.0 | 3.7-3.10 | 8.1 | 11.2 |
tensorflow_gpu-2.7.0 | 3.7-3.9 | 8.1 | 11.2 |
tensorflow_gpu-2.6.0 | 3.6-3.9 | 8.1 | 11.2 |
tensorflow_gpu-2.5.0 | 3.6-3.9 | 8.1 | 11.2 |
tensorflow_gpu-2.4.0 | 3.6-3.8 | 8.0 | 11.0 |
tensorflow_gpu-2.3.0 | 3.5-3.8 | 7.6 | 10.1 |
tensorflow_gpu-2.2.0 | 3.5-3.8 | 7.6 | 10.1 |
tensorflow_gpu-2.1.0 | 3.5-3.7 | 7.6 | 10.1 |
tensorflow_gpu-2.0.0 | 3.5-3.7 | 7.4 | 10 |
tensorflow_gpu-1.15.0 | 3.5-3.7 | 7.4 | 10 |
tensorflow_gpu-1.14.0 | 3.5-3.7 | 7.4 | 10 |
tensorflow_gpu-1.13.0 | 3.5-3.7 | 7.4 | 10 |
tensorflow_gpu-1.12.0 | 3.5-3.6 | 7.2 | 9.0 |
tensorflow_gpu-1.11.0 | 3.5-3.6 | 7 | 9 |
tensorflow_gpu-1.10.0 | 3.5-3.6 | 7 | 9 |
tensorflow_gpu-1.9.0 | 3.5-3.6 | 7 | 9 |
tensorflow_gpu-1.8.0 | 3.5-3.6 | 7 | 9 |
tensorflow_gpu-1.7.0 | 3.5-3.6 | 7 | 9 |
tensorflow_gpu-1.6.0 | 3.5-3.6 | 7 | 9 |
tensorflow_gpu-1.5.0 | 3.5-3.6 | 7 | 9 |
tensorflow_gpu-1.4.0 | 3.5-3.6 | 6 | 8 |
tensorflow_gpu-1.3.0 | 3.5-3.6 | 6 | 8 |
tensorflow_gpu-1.2.0 | 3.5-3.6 | 5.1 | 8 |
tensorflow_gpu-1.1.0 | 3.5 | 5.1 | 8 |
tensorflow_gpu-1.0.0 | 3.5 | 5.1 | 8 |
使用gpu的话只需要再额外安装cudnn、cuda就行了。
1、首先按不使用GPU的安装方法安装tensorflow框架
2、安装cudnn、cudatoolkit。因为此二者只和框架版本有关,因此选择的cudnn、cudatoolkit版本按照上表中要求的版本安装即可。一般来说,只要大版本一样,即可使用。
(tf29-py39) root@server:~# conda search cudnn
Loading channels: done
# Name Version Build Channel
cudnn 6.0 0 anaconda/pkgs/free
cudnn 7.1.4 cuda8.0_0 anaconda/pkgs/main
cudnn 7.1.4 cuda8.0_0 pkgs/main
......
cudnn 7.6.5 cuda10.2_0 anaconda/pkgs/main
cudnn 7.6.5 cuda10.2_0 pkgs/main
cudnn 7.6.5 cuda9.0_0 anaconda/pkgs/main
cudnn 7.6.5 cuda9.0_0 pkgs/main
cudnn 7.6.5 cuda9.2_0 anaconda/pkgs/main
cudnn 7.6.5 cuda9.2_0 pkgs/main
cudnn 8.2.1 cuda11.3_0 anaconda/pkgs/main
cudnn 8.2.1 cuda11.3_0 pkgs/main
(tf29-py39) root@server:~# conda search cudatoolkit
Loading channels: done
# Name Version Build Channel
cudatoolkit 7.5 0 anaconda/pkgs/free
cudatoolkit 7.5 2 anaconda/pkgs/free
cudatoolkit 8.0 1 anaconda/pkgs/free
cudatoolkit 8.0 3 anaconda/pkgs/free
cudatoolkit 9.0 h13b8566_0 anaconda/pkgs/main
cudatoolkit 9.0 h13b8566_0 pkgs/main
cudatoolkit 9.2 0 anaconda/pkgs/main
cudatoolkit 9.2 0 pkgs/main
cudatoolkit 10.0.130 0 anaconda/pkgs/main
cudatoolkit 10.0.130 0 pkgs/main
cudatoolkit 10.1.168 0 anaconda/pkgs/main
cudatoolkit 10.1.168 0 pkgs/main
cudatoolkit 10.1.243 h6bb024c_0 anaconda/pkgs/main
cudatoolkit 10.1.243 h6bb024c_0 pkgs/main
cudatoolkit 10.2.89 hfd86e86_0 anaconda/pkgs/main
cudatoolkit 10.2.89 hfd86e86_0 pkgs/main
cudatoolkit 10.2.89 hfd86e86_1 anaconda/pkgs/main
cudatoolkit 10.2.89 hfd86e86_1 pkgs/main
cudatoolkit 11.0.221 h6bb024c_0 anaconda/pkgs/main
cudatoolkit 11.0.221 h6bb024c_0 pkgs/main
cudatoolkit 11.3.1 h2bc3f7f_2 anaconda/pkgs/main
cudatoolkit 11.3.1 h2bc3f7f_2 pkgs/main
# 虽然tensorflow2.9要求cudnn8.1、cuda11.2,但是查询发现没有这两个版本的软件包,
# 只有cudnn8.2、cuda11.3,因此这里选择这两个版本。
# 不指定版本直接安装即可。会默认安装可用的最高版本。
(tf29-py39) root@server:~# conda install cudnn cudatoolkit -y
(tf29-py39) root@server:~# conda list |grep -i -E "cudnn|cudatoolkit"
cudatoolkit 11.3.1 h59b6b97_2 https://mirrors.ustc.edu.cn/anaconda/pkgs/main
cudnn 8.2.1 cuda11.3_0 https://mirrors.ustc.edu.cn/anaconda/pkgs/main
查看框架版本和GPU是否可用
# 进入python环境
(tf29-py39) root@server:~# python
>>> import tensorflow as tf
>>>
>>> tf.__version__
***
>>>
>>> tf.config.list_physical_devices("GPU")
***
3 版本对应关系总结
3.1 pytroch版本、python版本对应关系
3.2 显卡型号、显卡算力对应关系
3.3 cuda版本、显卡算力对应关系
3.4 cuda版本、显卡驱动版本对应关系
3.5 tensorflow版本、python版本对应关系
3.6 tensorflow版本、python版本、cudnn版本、cuda版本对应关系
tensorflow版本、python版本、cudnn版本、cuda版本对应关系
4 conda换源
为conda换国内的软件源,可以提高包的下载速度,下面列举几个可用的国内源