参照之前用Anaconda同时安装PyTorch和TensorFlow版本教程(Windows + CPU),本文也是个人在2024年8月安装PyTorch和TensorFlow版本(Windows + GPU/CUDA)过程中的笔记,如有错误,请多指正。
-
安装环境: Windows、Anaconda、GPU/CUDA
-
安装要求:明确个人对TensorFlow版本的需求,以及保证网络稳定、网速良好
本人也是小白,所以会尽可能细致地做笔记。
目录
一. Anaconda配置新虚拟环境
1. 配置镜像源(非必选)
由于安装不同库时每个人看的教程不同,可能给Anaconda配置了不同的镜像源(即channels),为了保证以下安装流程顺利进行,在网速良好的情况下,可以重置镜像源至默认镜像源。强调网速是因为默认镜像源属于国外的……
首先,在Windows的“开始”界面,找到并以管理员身份运行Anaconda Prompt。
重置镜像源至默认镜像源(非必选):
conda config --remove-key channels
查看镜像源:
conda config --show channels
如果窗口内容显示为-default
,则重置成功。
2. 配置新虚拟环境
Anaconda默认的虚拟环境名字为base
,但为了适应各版本代码需求,通常考虑配置新环境而不是在base
里直接安装各种库。
在配置环境之前,需要确认Python版本,因为Python版本将影响Pytorch和TensorFlow。
我选择Python3.9,这个不算很新,跟许多库都适配。如果是安装TensorFlow 2.x版本,Python版本为 3.7 - 3.10 都可以。
conda create -n pytorch python=3.9
该代码中的pytorch
是虚拟环境名称(可自行更改,命名要求通常是英文字母和数字的组合,记住即可)。
3. 激活新虚拟环境
activate pytorch
此处pytorch
为我设置的虚拟环境名称,需按个人设置进行替换
4. 查看CUDA版本
要安装PyTorch、TensorFlow,必须查看其对应于Python、CUDA的版本,否则会出现不兼容等问题导致安装失败。既然是在CUDA安装,那必须知道自己的CUDA版本!
查询方式有两种,任选其一。
(1)用Anaconda Prompt窗口(推荐)
nvcc --version
查询结果为:
nvcc: NVIDIA ® Cuda compiler driver
Copyright © 2005-2019 NVIDIA Corporation
Built on Fri_Feb__8_19:08:26_Pacific_Standard_Time_2019
Cuda compilation tools, release 10.1, V10.1.105
可以看到当前环境的CUDA为10.1.105
,每个人的设备配置不同,接下来的安装指令也可能不一致。
(2)用cmd窗口
此处查询比较特殊,不在Anaconda的Prompt窗口,需要键盘上的Windows键+R键进入cmd:
在cmd窗口中输入查询指令:
nvcc --version
nvidia-smi
查询结果:
表格右上角的CUDA Version:12.2
表示当前设备能安装的CUDA最高版本。
5. 安装CUDA和cuDNN
根据博文《Anaconda虚拟环境中安装cudatoolkit和cudnn包并配置tensorflow-gpu》(作者:LiaoKyle)介绍,Windows上的GPU仅适用于2.10或更早的TensorFlow版本。
TensorFlow版本 | Python版本 | cuDNN | CUDA |
---|---|---|---|
2.12 - 2.14 | 3.9 - 3.11 | 8.6 - 8.7 | 11.8 |
2.8 - 2.11 | 3.7 - 3.10 | 8.1 | 11.2 |
2.5 - 2.7 | 3.6 - 3.9 | 8.1 | 11.2 |
省流:能够在GPU上运行的版本列表是:
TensorFlow 2.10
CUDA 11.2
cuDNN 8.1
CUDA版本不是11.2
的,可能需要在虚拟环境里重新安装CUDA。
理论上,如果不用GPU来加速算法,即使CUDA版本不对,也能安装TensorFlow,只是在运行时缺少必要的CUDA和cuDNN库而已。
(1)自动安装
查看CUDA包:
conda search cudatoolkit
指定安装CUDA:
conda install cudatoolkit==11.2
查看cudnn包:
conda search cudnn
指定安装cudnn版本:
conda install cudnn==8.1.0
(2)手动安装
一般来说安装CUDA11.2
和cuDNN8.1
不会那么顺利,血与泪的经验教训啊……老实说上述自动安装步骤我压根没法按流程走,因为查询结果显示当前环境支持的CUDA版本里并不包含11.2
,我都要疯了,最后只能手动安装。
安装教程参考博文《CUDA与cuDNN详细安装教程(最新)》(作者:盼盼面包)。由于该博文作者想要的CUDA版本和我的不一致,这里细心贴出链接和版本名称,其他流程一致,不赘诉。
①下载CUDA
CUDA11.2版本:https://developer.nvidia.com/cuda-toolkit-archive
我选了CUDA Toolkit 11.2.2
,其实选哪个都行,毕竟都属于11.2
的。点击后会出现更细致的选项,如下图。
这里的选择分别是: Windows
– x86_64
–10
,点击后下载。
②下载cuDNN
cuDNN8.1版本:https://developer.nvidia.com/rdp/cudnn-archive
这里的选择是截图里的第一个,即cuDNN v8.11 (Feburary, 26th, 2021) for CUDA 11.0, 11.1 and 11.2
。总之一定要选到对应CUDA的版本。点击后会出现更细致的选项,如下图。
系统是Windows,选cuDNN Library for Windows(x86)
这一版本进行下载。
剩下的流程请务必参照博文《CUDA与cuDNN详细安装教程(最新)》(作者:盼盼面包),而且需要保持耐心和细心,因为需要修改系统环境变量。
6. 查看新配置的CUDA和cuDNN(非必选)
nvcc --version
输出结果:
结果显示Cuda compilation tools, release 11.2, V11.2.152
,说明CUDA版本已经切换成功。
二. 安装PyTorch
1. 查看适配的PyTorch版本
个人建议直接通过PyTorch官网查看:https://pytorch.org/
一直往下滑,直到出现这个界面:
可以看到PyTorch官网给出的CUDA版本只有CUDA11.8
、CUDA12.1
和CUDA12.4
……如果你的版本不是这个,可以点击当前Pytorch界面左下角的Previous Versions of PyTorch
查看相应的版本代码。
系统: Windows
语言: Python
其他选项如是Cuda还是pip则取决于个人。
记得复制Run thisCommand
一栏给出的安装指令。
2. 安装PyTorch
Pytorch官网给的安装指令能够一次性安装torch、torchvision等,方便快捷。由于我们的CUDA版本是11.2
, 官网上给的安装指令只有11.1
和11.3
的,因此我用chatGPT查找了相关指令。
安装PyTorch:
conda install pytorch==1.10.0 torchvision==0.11.1 torchaudio==0.10.0 cudatoolkit=11.2 -c pytorch
安装界面:(仅供参考,找不到实装的截图了)
输入y
表示确认安装,下载速度依赖于网络。PyTorch的安装包大小合计有2G。
查看Python和PyTorch版本:
python --version
python -c "import torch; print(torch.__version__)"
也可以通过Conda来查看Python和PyTorch版本:
conda list
该命令是查看当前环境中所有已安装包的版本,其中可以找到pytorch(如下图):
三. 安装TensorFlow
在Windows + CPU 里安装TensorFlow的教程里,我写了需要添加清华镜像源。同样地,在Windows + GPU/CUDA 里安装TensorFlow的时候,我也尝试了使用镜像源,配置速度很慢,因此这里我使用的是默认源。如果需要配置镜像源,可以按以下命令来操作:
路径添加清华镜像源(非必选):
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
不论是否指定版本安装,都需要查询当前配置支持的版本。
查询当前配置支持的TensorFlow版本:
conda search tensorflow
查询结果(部分截图):
可以看到我当前环境支持安装的 TensorFlow 版本最高到2.10.0
,怎么说呢,不算很新,能用,但不能让我使用“懒人安装”。
1. 指定TensorFlow版本
介于我当前环境支持的最高版本是2.10.0
(本来GPU支持的最高版本也是TensorFlow 2.10
),我只能选择指定版本安装。只要系统中正确安装并配置了 CUDA 和 cuDNN,就能使用pip
安装TensorFlow。
用pip
指定安装TensorFlow2.10
:
pip install tensorflow-gpu==2.10
题外话:这里推荐使用 pip
安装 TensorFlow GPU 版本,没有别的原因,单纯是因为我使用conda
安装失败了。以及……千万要记住是tensorflow-gpu
而不是tensorflow
,不然就要像我需要卸载了重新安装。
安装界面(错误示范,哭了):
可以看到截图里我下载的是
tensorflow
而非tensorflow-gpu
,所以后来我卸载了重装,但是本教程里的安装指令是正确的!!!
pip install tensorflow-gpu==2.10
下图展示了tensorflow包的大小,约455.9MB,tensorflow-gpu包也一样大……网速慢的要遭罪了……
安装结束后,可以查询:
python -c "import tensorflow as tf; print('Num GPUs Available: ', len(tf.config.list_physical_devices('GPU')))"
如果输出为Num GPUs Available: 1
,那就说明安装的TensorFlow能够在GPU上运行,否则最好检查一下CUDA和cuDNN的版本,因为虽然三者看上去都安装成功了,但版本并不适配。
记住,能够在GPU上运行的版本列表是:
TensorFlow 2.10
CUDA 11.2
cuDNN 8.1
在PyCharm的控制台或.py文件查询能否在GPU上使用TensorFlow:
import tensorflow as tf
print(tf.sysconfig.get_build_info()['cuda_version']) # 查看CUDA,其输出应分别为 64_112
print(tf.sysconfig.get_build_info()['cudnn_version']) # 查看cuDNn,其输出应分别为 64_8
gpus = tf.config.experimental.list_physical_devices('GPU') # 列出所有物理设备
if gpus:
print(f"Available GPU devices: {gpus}")
else:
print("No GPU available.")
# 其输出应为 Available GPU devices: [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]
----------------------分割线(●’◡’●)
本教程也贴上conda
安装的命令。往好处想,万一有人成功了呢?
conda指定安装TensorFlow2.10.0
:(任选其一)
conda install tensorflow-gpu=2.10.0 -c pkgs/main
conda install tensorflow-gpu=2.10.0 -c conda-forge
2. 不指定TensorFlow版本(不推荐)
TensorFlow的官网:https://tensorflow.google.cn
在官网看到当前最新的TensorFlow版本为2.17
,如果当前配置支持并且没有指定版本需求的话,可以考虑自动安装,但不推荐,因为GPU适配的版本最高到2.10。既然都考虑使用GPU加速算法了,就别自动安装了吧(超小声)。
安装TensorFlow(任选其一):
conda install tensorflow-gpu -c conda-forge
conda install tensorflow-gpu -c defaults
conda install tensorflow-gpu -c anaconda
这条命令会自动安装适用于 GPU 的 TensorFlow 版本以及其所有依赖项,包括 CUDA 和 cuDNN。该指令下载的TensorFlow 2.x版本比较新。如前所述,我当前环境支持安装的最高版本是2.10.0
,因此我使用该指令安装必然是失败的,所以安装过程中会出现依赖关系冲突的问题,即出现以下报错信息:
但是!别着急关掉Prompt窗口!Anaconda会自动寻找不出现依赖关系冲突的包并进行测试,如下图所示。
如果还是失败了,建议直接指定版本安装。
真是一次酣畅淋漓的安装啊,虽然什么都没做,但还是先辛苦我自己了。
后续会不定时修改该帖子内容,更新安装细节。
有任何疑问欢迎评论区留言或者私信,祝大家都能安装顺利!!!