我已经花了相当多的时间挖掘周围的堆栈溢出和其他寻找答案,但无法找到任何东西
大家好,
我正在运行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)
**已解决:**查看评论解决方案。感谢所有帮助过我的人!
我是新来的,所以任何帮助都非常感谢!谢谢你。
8条答案
按热度按时间dfty9e191#
要检查哪些设备可用于TensorFlow,您可以使用此选项并查看GPU卡是否可用:
也有可用的C++日志,由
TF_CPP_MIN_VLOG_LEVEL
env变量控制,例如:应该允许在运行
import tensorflow as tf
时打印它们。如果您使用支持GPU的
tensorflow
并正确访问GPU机器,则应该会看到以下日志:另一方面,如果系统/容器中没有CUDA库,您将看到:
如果安装了CUDA *,但没有物理可用的GPU,TF将在稍后运行
device_lib.list_local_devices()
时干净地导入并出错:mhd8tkvw2#
这可能听起来很愚蠢,但尝试重新启动。它帮助了我和GitHub上的其他一些人。
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兼容的版本
t8e9dugd4#
如果您碰巧使用Anaconda来管理您的环境=>卸载所有现有版本的tensorflow
使用conda安装tensorflow-gpu
如果你不介意从一个新的环境开始,那么最简单的方法就是不使用
创建一个新的conda环境,名称为tf_gpu,安装了tensorflow gpu
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。如果你仍然不能使它运行,检查一些缺少的步骤。
odopli946#
对我来说,下面的工作。
我使用conda环境,因为python环境意味着设置
LD_LIBRARY_PATH
和手动安装Cuda,这是另一个混乱。在提到的blog中,他在conda内部安装了
cudatoolkit
和cudann
,然后安装了tensorflow-gpu
,解决了这个问题。另外,据我所知,
cudatoolkit and cudann
在让你的代码在tensorflow-gpu上运行方面起着巨大的作用。wlsrxk517#
我遇到了一个类似的问题,我有以下版本的tensorflow 库。
相同版本的库被安装在另一台能够利用GPU的机器上。Cuda工具包版本和驱动程序版本在两台机器上都是相同的(工作的机器和不工作的机器)。
原来原因是tensorflow-gpu=2.4.1与python版本3.8.10兼容。把我的python版本改为3.8.10并保持所有其他东西不变对我来说很有效!
zengzsys8#
您还可能会遇到CUDA版本不匹配的问题,而不是需要以某种方式解决(将
tensorflow
降级/固定到系统CUDA支持的最新版本可以说更快,但只有相反的做法才是面向未来的)。要进行验证,请检查已安装的Tensorflow包中使用的CUDA版本:
...并将其与安装在主机上/容器/ VM中的CUDA版本进行比较:
当
tensorflow
干净地导入(没有任何警告),但它只在安装了CUDA库的配备GPU的机器上检测到CPU时,那么您也可能在预编译的tensorflow
包轮和系统/容器安装的版本之间存在CUDA版本不匹配。上述CUDA版本不匹配(在Tensorflow编译期间使用v11.8,而在v11.2 CUDA编译器安装在容器中)导致TF没有GPU访问,尽管
nvidia-smi
加载正确)。另请参阅:Tensorflow CUDA兼容性表(测试的构建配置):