注意:此问题最初是asked on github,但有人要求在此处
我在gpu上运行tensorflow时遇到了麻烦,而且它似乎不是通常的cuda的配置问题,因为一切似乎表明cuda已正确设置。
主要症状:运行tensorflow时,未检测到我的gpu(the code being run和its output)。
与通常的问题不同的是,cuda似乎已正确安装,并且来自cuda样本的./deviceQuery
成功运行(output)。
我有两张图形卡:
我用:
我试过了:
/usr/local/cuda/bin/
添加到$PATH
with tf.device('/gpu:1'):
强制在tensorflow脚本中放置gpu,并在失败时强制with tf.device('/gpu:0'):
,以便进行更好的衡量。CUDA_VISIBLE_DEVICES
一起使用的gpu列入白名单,以防旧版不受支持的卡存在导致问题以下是nvidia-smi和nvidia-debugdump -l的输出,以防它有用。
在这一点上,我觉得我已经遵循了所有的面包屑,并且不知道我还能尝试什么。我甚至不确定我是否正在考虑错误或配置问题。任何关于如何调试这个的建议将不胜感激。谢谢!
更新:在github上Yaroslav的帮助下,我通过提高日志级别收集了更多的调试信息,但似乎没有说明设备选择:https://gist.github.com/oelmekki/760a37ca50bf58d4f03f46d104b798bb < / p>
更新2 :使用theano正确检测gpu,但有趣的是它抱怨cuDNN太近,然后回退到cpu(code ran,output)。也许这也可能是张量流的问题?
答案 0 :(得分:50)
从日志输出中,看起来您正在运行TensorFlow(PyPI:tensorflow
)的CPU版本,而不是GPU版本(PyPI:tensorflow-gpu
)。运行GPU版本将记录有关CUDA库的信息,如果无法加载或打开驱动程序,则会出现错误。
如果您运行以下命令,则应该能够在后续运行中使用GPU:
$ pip uninstall tensorflow
$ pip install tensorflow-gpu
答案 1 :(得分:14)
就我而言:
pip3 uninstall tensorflow
还不够。因为重新安装时使用:
pip3 install tensorflow-gpu
它仍然用cpu而不是gpu重新安装tensorflow。 所以,在安装tensorfow-pgu之前,我试图删除site-packages卸载protobuf中的所有相关张量文件夹,它可以工作!
结论:
pip3 uninstall tensorflow
删除〜\ Python35 \ Lib \ site-packages
中的所有张量文件夹pip3 uninstall protobuf
pip3 install tensorflow-gpu
答案 2 :(得分:9)
这里没有其他答案对我有用。经过一些修改后,我发现在处理从二进制构建的Tensorflow时,这解决了我的问题:
第0步:卸载protobuf
pip uninstall protobuf
第1步:卸载tensorflow
pip uninstall tensorflow
pip uninstall tensorflow-gpu
第2步:强制重新安装Tensorflow并支持GPU
pip install --upgrade --force-reinstall tensorflow-gpu
第3步:如果您还没有,请设置CUDA_VISIBLE_DEVICES
对于我来说,有2个GPU就是
export CUDA_VISIBLE_DEVICES=0,1
答案 3 :(得分:6)
可能看起来很愚蠢,但是sudo reboot
为我和其他几个人解决了完全相同的问题。
答案 4 :(得分:1)
救了我一天的答案来自马克·索恩(Mark Sonn)。只需将其添加到.bashrc
并
source ~/.bashrc
(如果您使用的是Linux:
export CUDA_VISIBLE_DEVICES=0,1
以前,我必须使用此替代方法来使tensorflow识别我的GPU:
import tensorflow as tf
gpus = tf.config.experimental.list_physical_devices(device_type="GPU")
tf.config.experimental.set_visible_devices(devices=gpus[0], device_type="GPU")
tf.config.experimental.set_memory_growth(device=gpus[0], enable=True)
即使代码仍然可以工作,但每次添加这些行显然也不是我想要的。
我的tensorflow
版本是根据the documentation从源代码构建的,以获得v2.3支持CUDA 10.2和cudnn 7.6.5。
如果对此有任何疑问,我建议快速浏览一下文档。花了1.5个小时来制作榛子。确保已安装gcc7和bazel。
答案 5 :(得分:0)
此错误可能是由您的GPU的计算能力引起的,CUDA正式支持3.5〜5.0范围内的GPU的计算能力,您可以在此处进行检查:https://en.wikipedia.org/wiki/CUDA
就我而言,错误是这样的:
忽略具有Cuda计算能力3.0的可见gpu设备(设备:0,名称:GeForce GT 640M,pci总线ID:0000:01:00.0,计算能力:3.0)。最低要求的Cuda功能是3.5。
目前,我们只能从Linux(或Mac OS)上的源代码进行编译,以突破“ 3.5〜5.0”的限制。
答案 6 :(得分:0)
存在各种系统不兼容问题。
对库的要求可能因 TensorFlow 版本而异。
在交互模式下使用 python 期间,许多有用的信息被打印到 stderr。我建议使用 2.0 或更高版本的 TensorFlow 调用:
<块引用>python3.8 -c "将 tensorflow 导入为 tf; print('tf version:', tf.version); tf.config.list_physical_devices()"
执行此命令后,除了满足要求外,您还会发现缺少的库(或它的一个版本)可与 GPU 配合使用:
附言CUDA_VISIBLE_DEVICES 不应该与 TensorFlow 有真正的联系,或者更通用 - 这是一种为所有启动的进程自定义可用 GPU 的方法。
答案 7 :(得分:0)
针对 anaconda 用户。我使用 Anaconda Navigator 通过 GUI 安装了 tensorflow-gpu
并像 tensorflow guide 一样配置了 NVIDIA GPU,但无论如何 tensorflow 都找不到 GPU。然后我总是通过 GUI 卸载 tensorflow(请参阅 here)并通过命令行在 anaconda 提示符下重新安装它:
conda install -c anaconda tensorflow-gpu
然后 tensorflow 可以正确找到 GPU。