(1)打开英伟达控制面板 如下图
(2)查看对应显卡型号 如下图 我的版本是517
(3)在网站 CUDA 12.1 Update 1 Release Notes (nvidia.com) 查看该显卡驱动型号对应的cuda型号(支持的cuda最高型号) 如下图 可以看到 我的最高能支持到cuda11.8
ps:以上步骤参考:win11配置深度学习环境GPU - 知乎 (zhihu.com)
在网站 Tensorflow中文官网 上找到满足自己需要的 tensorflow-gpu 的版本,并查看其对应需要的cuda 和 cuDNN 型号。如下图,我的代码需要 tensorflow2.6,其需要的cuda版本是11.2,cuDNN版本是8.1,是可以被我电脑的显卡驱动所支持的。
(1)下载
cuda在英伟达官网上下载即可:英伟达官网
当根据自己的电脑进行选择后,请一定要注意,如下图红框所示,要选择找到所需的历史版本,并进行下载。
(2)安装
安装时,要注意
- 选择默认文件夹 并记得安装路径 便于之后修改添加环境变量 并安装cuDNN
- 选择自定义安装 而非精简安装 如下图所示
之后出现了一个争议性问题:
如下图所示,红框所示的三个是否要勾选
不同的参考源给出了不同的选择,但总的来说,原则如下:
如果是第一次安装,尽量全选;如果是第n次安装,尽量只选择第一个,否则可能会出现错误
(3)配置环境变量
如下图所示 查看变量名为 CUDA_PATH 和 CUDA_PATH_V11_2 的系统变量,是否如下图所示被添加了正确的路径(值)。如果没有,则需要手动添加,且添加的内容应该是刚刚安装 cuda 的路径。(比如我的就是 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2 )
(4)校验
参考 “5.检查cuda是否安装成功 ”
ps:参考源
cuda下载安装1
cuda下载安装2
(1)说明
cuDNN是一个下载安装包,获取方式有以下三种
- 找公司或者学校的数据库 看有没有(我采用的)
- 从英伟达官方网站上下载 但需要注册 参考中间部分
- 从镜像网站上下载 参考中间部分
(2)安装
cuDNN解压后应该是一个文件夹 包含了 bin, include, lib 三个子文件夹以及一个txt说明文件
如下图所示,找到自己cuda的安装路径,并将相应的内容拷贝到对应的位置(不会有冲突文件),如下图所示。
(3)配置环境变量
类似于cuda配置环境变量,但不同的是,cuDNN需要对变量名为 Path 的变量进行编辑操作,再如下图所示,查看并添加以下四个路径。
(4)校验
参考 “7.检验tensorflow-GPU能否正常加载”
(1)cmd进入命令行窗口 键入 nvcc -V 显示如下图红框所示 即为该版本安装成功
(2)cd 进入到cuda的安装路径(比如我的就是 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2),并继续向下进入到 ...\extras\demo_suite 文件夹,找到如下两个.exe文件,并在cmd窗口内执行,看是否得出如下图所示的结果:
(3)参考源:检验cuda是否安装成功
(0)使用 Anaconda Powershell Prompt 命令行通过conda创建虚拟环境
(1)conda 创建虚拟环境。依据步骤2,可知需要tensorflow版本为2.6时,python版本应为3.8
因此:conda create --name 英文环境名 python==3.8
(我的英文环境名为 tensorflow26)
(2)激活该虚拟环境
conda activate 英文环境名
(3)在该激活虚拟环境下通过pip安装tensorflow
pip install tensorflow-gpu==版本号
(我想安装的版本号是2.6)
在任意位置创建一个py文件(路径没有中文),python代码如下:
import tensorflow as tf
print(tf.config.list_physical_devices('GPU'))
a = tf.constant(2.)
b = tf.constant(4.)
print(a * b)
在步骤6所述的虚拟环境(已激活)下,运行该代码。如下图所示:
事实上,我的步骤7一开始并没有成功,遇到了报错:
内容类似于下面:
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
1. Downgrade the protobuf package to 3.20.x or lower.
2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
解决办法是,按照提示,对 protobuf进行降级。
具体来说,
(0)Anaconda Powershell Prompt中激活该虚拟环境(如果已经在该虚拟环境中,可不做)
(1)pip uninstall protobuf 卸载当前protobuf
(2)pip install protobuf==3.19.0 安装符合要求的protobuf
参考