keras Tensorflow未在GPU上运行

fgw7neuy  于 2023-06-06  发布在  其他
关注(0)|答案(8)|浏览(657)

我已经花了相当多的时间挖掘周围的堆栈溢出和其他寻找答案,但无法找到任何东西

大家好,
我正在运行Tensorflow,Keras在上面。我90%确定我安装了Tensorflow GPU,有没有办法检查我安装的是哪一个?
我试图从Jupyter笔记本上运行一些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)

**已解决:**查看评论解决方案。感谢所有帮助过我的人!

我是新来的,所以任何帮助都非常感谢!谢谢你。

dfty9e19

dfty9e191#

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

from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
  • 更多信息 *

也有可用的C++日志,由TF_CPP_MIN_VLOG_LEVEL env变量控制,例如:

import os
os.environ["TF_CPP_MIN_VLOG_LEVEL"] = "2"

应该允许在运行import tensorflow as tf时打印它们。
如果您使用支持GPU的tensorflow并正确访问GPU机器,则应该会看到以下日志:

successfully opened CUDA library libcublas.so.*.* locally
successfully opened CUDA library libcudnn.so.*.*  locally
successfully opened CUDA library libcufft.so.*.*  locally

另一方面,如果系统/容器中没有CUDA库,您将看到:

Could not find cuda drivers on your machine, GPU will not be used.

如果安装了CUDA *,但没有物理可用的GPU,TF将在稍后运行device_lib.list_local_devices()时干净地导入并出错:

failed call to cuInit: CUDA_ERROR_NO_DEVICE: no CUDA-capable device is detected
mhd8tkvw

mhd8tkvw2#

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

f8rj6qna

f8rj6qna3#

即使通过pip正确安装了tensorflow-gpu,我仍然无法获得GPU支持。我的问题是,我安装了tensorflow 1.5和CUDA 9.1(Nvidia指导您的默认版本),而预编译的tensorflow 1.5适用于CUDA版本<= 9.0。下面是nvidia网站上的下载页面,以获得正确的CUDA 9.0:
https://developer.nvidia.com/cuda-90-download-archive
另外,请确保将cuDNN更新为与CUDA 9.0 https://developer.nvidia.com/cudnnhttps://developer.nvidia.com/rdp/cudnn-download兼容的版本

t8e9dugd

t8e9dugd4#

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

pip uninstall tensorflow
pip3 uninstall tensorflow

使用conda安装tensorflow-gpu

conda install tensorflow-gpu

如果你不介意从一个新的环境开始,那么最简单的方法就是不使用

conda create --name tf_gpu tensorflow-gpu

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

rryofs0p

rryofs0p5#

如果你在gpu上运行tensorflow时遇到问题,你应该检查你是否安装了好版本的cuda和cuDNN。版本应该和这里的完全一样。例如,对于tensorflow v2.8.0,应该有cuda v11.2 (not newer)cuDNN v8.1
另外,您应该添加cuda /bin文件夹和/libnvvp到路径(对于windows)。
此答案基于本教程Tensorflow 2021 install tutorial。如果你仍然不能使它运行,检查一些缺少的步骤。

odopli94

odopli946#

对我来说,下面的工作。
我使用conda环境,因为python环境意味着设置LD_LIBRARY_PATH和手动安装Cuda,这是另一个混乱。
在提到的blog中,他在conda内部安装了cudatoolkitcudann,然后安装了tensorflow-gpu,解决了这个问题。
另外,据我所知,cudatoolkit and cudann在让你的代码在tensorflow-gpu上运行方面起着巨大的作用。

wlsrxk51

wlsrxk517#

我遇到了一个类似的问题,我有以下版本的tensorflow 库。

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并保持所有其他东西不变对我来说很有效!

zengzsys

zengzsys8#

您还可能会遇到CUDA版本不匹配的问题,而不是需要以某种方式解决(将tensorflow降级/固定到系统CUDA支持的最新版本可以说更快,但只有相反的做法才是面向未来的)。
要进行验证,请检查已安装的Tensorflow包中使用的CUDA版本:

>>> import tensorflow as tf
>>> tf.sysconfig.get_build_info()['cuda_version']
'11.8'

...并将其与安装在主机上/容器/ VM中的CUDA版本进行比较:

>>> import os
>>> os.system("nvcc --version")

nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Sun_Feb_14_21:12:58_PST_2021
Cuda compilation tools, release 11.2, V11.2.152
Build cuda_11.2.r11.2/compiler.29618528_0
0
  • 更多信息 *

tensorflow干净地导入(没有任何警告),但它只在安装了CUDA库的配备GPU的机器上检测到CPU时,那么您也可能在预编译的tensorflow包轮和系统/容器安装的版本之间存在CUDA版本不匹配。
上述CUDA版本不匹配(在Tensorflow编译期间使用v11.8,而在v11.2 CUDA编译器安装在容器中)导致TF没有GPU访问,尽管nvidia-smi加载正确)。
另请参阅:Tensorflow CUDA兼容性表(测试的构建配置):

  • https://www.tensorflow.org/install/source#gpu

相关问题