【问题标题】:Tensorflow not running on GPUTensorFlow 未在 GPU 上运行
【发布时间】:2017-12-03 09:19:01
【问题描述】:

我已经花费了相当多的时间来挖掘堆栈溢出并寻找答案,但找不到任何东西

大家好,

我正在运行带有 Keras 的 Tensorflow。 我 90% 确定我安装了 Tensorflow GPU,有没有办法检查我安装了哪个?

我试图从 Jupyter notebook 运行一些 CNN 模型,我注意到 Keras 正在 CPU 上运行模型(检查任务管理器,CPU 处于 100%)。

我尝试从 tensorflow 网站运行此代码:

# Creates a graph.
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)
# Creates a session with log_device_placement set to True.
sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))
# Runs the op.
print(sess.run(c))

这就是我得到的:

MatMul: (MatMul): /job:localhost/replica:0/task:0/cpu:0
2017-06-29 17:09:38.783183: I c:\tf_jenkins\home\workspace\release-win\m\windows\py\35\tensorflow\core\common_runtime\simple_placer.cc:847] MatMul: (MatMul)/job:localhost/replica:0/task:0/cpu:0
b: (Const): /job:localhost/replica:0/task:0/cpu:0
2017-06-29 17:09:38.784779: I c:\tf_jenkins\home\workspace\release-win\m\windows\py\35\tensorflow\core\common_runtime\simple_placer.cc:847] b: (Const)/job:localhost/replica:0/task:0/cpu:0
a: (Const): /job:localhost/replica:0/task:0/cpu:0
2017-06-29 17:09:38.786128: I c:\tf_jenkins\home\workspace\release-win\m\windows\py\35\tensorflow\core\common_runtime\simple_placer.cc:847] a: (Const)/job:localhost/replica:0/task:0/cpu:0
[[ 22.  28.]
 [ 49.  64.]]

这表明我正在 CPU 上运行,出于某种原因。

我有一台 GTX1050(驱动版本 382.53),我安装了 CUDA、Cudnn 和 tensorflow,没有任何问题。我也安装了 Visual Studio 2015,因为它被列为兼容版本。

我记得 CUDA 提到安装了不兼容的驱动程序,但如果我没记错的话,CUDA 应该安装了自己的驱动程序。

编辑: 我运行了这些命令来列出可用的设备

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

这就是我得到的

[name: "/cpu:0"
device_type: "CPU"
memory_limit: 268435456
locality {
}
incarnation: 14922788031522107450
]

还有很多这样的警告

2017-06-29 17:32:45.401429: W c:\tf_jenkins\home\workspace\release-win\m\windows\py\35\tensorflow\core\platform\cpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use SSE instructions, but these are available on your machine and could speed up CPU computations.

编辑 2

试运行

pip3 install --upgrade tensorflow-gpu

我明白了

Requirement already up-to-date: tensorflow-gpu in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages
Requirement already up-to-date: markdown==2.2.0 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: html5lib==0.9999999 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: werkzeug>=0.11.10 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: wheel>=0.26 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: bleach==1.5.0 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: six>=1.10.0 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: protobuf>=3.2.0 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: backports.weakref==1.0rc1 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: numpy>=1.11.0 in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from tensorflow-gpu)
Requirement already up-to-date: setuptools in c:\users\xxx\appdata\local\programs\python\python35\lib\site-packages (from protobuf>=3.2.0->tensorflow-gpu)

已解决: 检查 cmets 以获取解决方案。 感谢所有帮助过的人!

我是新手,非常感谢任何帮助! 谢谢。

【问题讨论】:

  • 您能否通过运行pip list 来检查您是否没有安装多个tensorflow 版本并检查所有带有tensorflow 的行
  • 你应该卸载 tensorflow 并保留 tensorflow-gpu:pip uninstall tensorflow
  • 好的,我想我修好了。我想当我卸载 tensorflow 时,它删除了 init.py 文件或其他东西。所以我运行了pip install --ignore-installed --upgrade ,现在这个from tensorflow.python.client import device_lib print(device_lib.list_local_devices()) 将gpu 显示为设备之一。
  • 我尝试了上述步骤,它没有将 gpu 显示为设备。 Tensorflow-gpu 和 tensorflow-tensorboard 显示在已安装列表中。有什么帮助吗?
  • 对于ver>1.15,tensorflow-gpu包含在tensorflowtensorflow.org/install/gpu

标签: tensorflow keras nvidia cudnn


【解决方案1】:

要检查哪些设备可用于 TensorFlow,您可以使用它并查看 GPU 卡是否可用:

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

编辑 此外,如果您使用 TensorFlow Cuda 版本,您应该会看到此类日志:

I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcublas.so.*.* locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcudnn.so.*.*  locally
I tensorflow/stream_executor/dso_loader.cc:128] successfully opened CUDA library libcufft.so.*.*  locally

【讨论】:

  • 它们是 C++ 日志,由 TF_CPP_MIN_VLOG_LEVEL 环境变量控制,例如:export TF_CPP_MIN_VLOG_LEVEL=2 应该允许在运行 import tensorflow as tf 时打印它们。
【解决方案2】:

这听起来可能很愚蠢,但请尝试重新启动。它帮助了我和 GitHub 中的其他一些人。

【讨论】:

  • 这里也一样。哇。苦苦挣扎了两天,一次重启就有帮助:|
  • 我爱你。在我的情况下,这可能是由于将驱动程序从 X 更改为 NVidia 后没有重新启动。
  • 我使用 TensorFlow GPU 好几个月了,突然它停止使用 GPU。重启解决了。谢谢。
【解决方案3】:

即使通过 pip 正确安装了 tensorflow-gpu,我仍然无法获得 GPU 支持。我的问题是我安装了 tensorflow 1.5 和 CUDA 9.1(Nvidia 指导您使用的默认版本),而预编译的 tensorflow 1.5 适用于 CUDA 版本

https://developer.nvidia.com/cuda-90-download-archive

还要确保将您的 cuDNN 更新到与 CUDA 9.0 兼容的版本 https://developer.nvidia.com/cudnn https://developer.nvidia.com/rdp/cudnn-download

【讨论】:

    【解决方案4】:

    对我来说,以下工作。

    我使用了 conda 环境,因为 python 环境意味着设置 LD_LIBRARY_PATH 并手动安装 Cuda,这又是一团糟。

    在提到的blog中,他在conda中安装了cudatoolkitcudann,然后又安装了tensorflow-gpu,解决了这个问题。

    P.S,据我所知,cudatoolkit and cudann 在让您的代码在 tensorflow-gpu 上运行方面发挥着重要作用。

    【讨论】:

      【解决方案5】:

      如果你碰巧使用 Anaconda 来管理你的环境 => 卸载所有现有版本的 tensorflow

      pip uninstall tensorflow
      pip3 uninstall tensorflow
      

      使用 conda 安装 tensorflow-gpu

      conda install tensorflow-gpu
      

      如果您不介意从一个新环境开始,那么最简单的方法是没有

      conda create --name tf_gpu tensorflow-gpu 
      

      创建一个名为 tf_gpu 并安装了 tensorflow gpu 的新 conda 环境

      【讨论】:

        【解决方案6】:

        我遇到了类似的问题 我有以下版本的张量流库。

        tensorboard               2.4.1              pyhd8ed1ab_1    conda-forge
        tensorboard-plugin-wit    1.8.0              pyh44b312d_0    conda-forge
        tensorflow                2.4.1            py39hf3d152e_0    conda-forge
        tensorflow-base           2.4.1            py39h23a8cbf_0    conda-forge
        tensorflow-estimator      2.4.0              pyh9656e83_0    conda-forge
        tensorflow-gpu            2.4.1                h30adc30_0
        

        相同版本的库安装在另一台能够使用 GPU 的机器上。两台机器上的 Cuda 工具包版本和驱动程序版本相同(工作的机器和不工作的机器)。

        原来原因是 tensorflow-gpu=2.4.1 与 python 3.8.10 版本兼容。 将我的 python 版本更改为 3.8.10 并保持所有其他内容不变对我有用!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-11-08
          • 2017-11-05
          • 2019-01-27
          • 2018-04-12
          • 1970-01-01
          • 1970-01-01
          • 2020-08-11
          相关资源
          最近更新 更多