背景

由于近期更换了电脑,所以需要在新电脑上重新配置Tensorflow的运行环境。本着使用最新版本的原则,按照官方指导教程进行安装以及配置CUDA, cuDNN等。此时我安装的最新版本为2.11.0,经测试tensorflow无法使用GPU。

测试是否能够使用GPU的代码:

import tensorflow as tfgpus = tf.config.experimental.list_physical_devices(device_type='GPU')cpus = tf.config.experimental.list_physical_devices(device_type='CPU')print(gpus, cpus)

程序运行结果为:

[] [PhysicalDevice(name='/physical_device:CPU:0', device_type='CPU')]

显然tensorflow没有找到GPU,只有CPU。

以下是官网给出的安装教程:
官方链接: 使用 pip 安装 TensorFlow

  1. 在虚拟环境中使用pip安装tensorflow
pip install tensorflow
  1. 接着配置相关软件
  • NVIDIA® GPU 驱动程序-CUDA® 11.2 要求 450.80.02 或更高版本。
  • CUDA® 工具包:TensorFlow 支持 CUDA® 11.2(TensorFlow 2.5.0 及更高版本)
  • CUDA® 工具包附带的 CUPTI。
  • cuDNN SDK 8.1.0 cuDNN 版本。
  • (可选)TensorRT 6.0,可缩短用某些模型进行推断的延迟时间并提高吞吐量。
  1. 配置环境变量
    确保安装的 NVIDIA 软件包与上面列出的版本一致。特别是,如果没有 cuDNN64_8.dll 文件,TensorFlow 将无法加载。如需使用其他版本,请参阅在 Windows 下从源代码构建指南。将 CUDA®、CUPTI 和 cuDNN 安装目录添加到 %PATH% 环境变量中。例如,如果 CUDA® 工具包安装到 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0,并且 cuDNN 安装到 C:\tools\cuda,请更新 %PATH% 以匹配路径:
SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin;%PATH%SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\CUPTI\lib64;%PATH%SET PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include;%PATH%SET PATH=C:\tools\cuda\bin;%PATH%

问题解决

tensorflow版本从2.x开始不再区分CPU版和GPU版,因此在软件配置正确的情况下,应该是可以找到GPU设备的。我反复按照官网教程确认了各软件的版本以及环境变量等均没有错误,但问题仍没有解决。

我将官网的语言调到英文时,发现了这样一条提示(在中文版的网页中是没有的):

根据该条提示,Tensorflow 2.10是最后一个在本地windows上支持GPU的版本。从2.11版本开始,需要在windows WLS2(适用于 Linux 的 Windows 子系统)上安装才能使用GPU。所以要在native-windows上使用GPU,就只能安装2.10.0版本及以下的版本,或者安装老版的tensorflow-gpu。

所以我卸载了之前安装的2.11.0版本,安装了2.10.0版本:

pip install tensorflow==2.10.0

然后测试是否能够使用GPU:

可见,找不到GPU的问题已经解决。