尽管安装了 tensorflow-gpu,但 GPU 不用于计算

GPU is not used for calculations despite tensorflow-gpu installed

我的电脑安装了以下软件:Anaconda (3)、TensorFlow (GPU) 和 Keras。 有两种 Anaconda 虚拟环境——一种使用 TensorFlow for Python 2.7,另一种使用 3.5,都是 GPU 版本,installed according to the TF instructions。 (我之前在单独的环境中安装了 CPU 版本的 TensorFlow,但我已将其删除。)

当我运行以下内容时:

source activate tensorflow-gpu-3.5
python code.py

并检查 nvidia-smi 它仅显示 Python 的 3MiB GPU 内存使用,因此看起来 GPU 未用于计算。 (code.py 是一个用 Keras 实现的简单深度 Q 学习算法)

知道哪里出了问题吗?

调试这些问题的一个好方法是检查哪些操作已分配给哪些设备。

您可以通过将配置参数传递给会话来检查这一点:

session = tf.Session(config=tf.ConfigProto(log_device_placement=True))

当您 运行 您的应用程序时,您会看到一些输出表明正在使用哪些设备。

您可以在此处找到更多信息: https://www.tensorflow.org/tutorials/using_gpu

我的 GPU 不是 运行 的原因是 CuDNN 安装损坏,更准确地说库和源来自不同版本的 CuDNN。

已通过 the following piece of advice.

修复

TensorFlow 在 Windows

我花了几个小时才修复 windows 上的 TensorFlow 安装问题,所以这里是总结:

检查 TensorFlow-gpu 是否正常工作(使用此代码):

with tf.device('/gpu:0'):
    a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')
    b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')
    c = tf.matmul(a, b)
with tf.Session() as sess:
    print(sess.run(c))

检查可用 CPU 或 GPU 列表(使用此代码):

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())

if tf.test.gpu_device_name():
    print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
else:
    print("Please install GPU version of TF")

使用 CUDA 和 cuDNN

在 Windows 上安装 Tensorflow GPU

指南概述

  • 在您的计算机上安装 Nvidia 的卡和驱动程序
  • 下载并安装 CUDA
  • 下载 & "Install" cuDNN
  • 卸载 Tensorflow,安装 Tensorflow GPU
  • 更新系统上的 %PATH%
  • 验证安装

指南完整详细信息

确定

  • 您已经卸载了 tensorflow 并且只安装了 tensorflow-gpu 以完成任务。
  • 根据您的项目设置从 pip 和 conda 环境中卸载 tensorflow 并仅安装 tensorflow-gpu
  • 设置 PATH 变量后,确保注销或重新启动系统。

希望对您有所帮助 :))

这是一个棘手的问题,几乎就像计算机会使用任何可能的借口恢复到 CPU 一样。为确保当前正在使用 tensoflow、keras 和 pytorch,请参阅