使用Tensorflow时GPU同步失败

Imr*_*ana 1 python python-3.x tensorflow

我正在尝试运行这个简单的代码来测试tensorflow

  from __future__ import print_function

    import tensorflow as tf

    a = tf.constant(2)
    b = tf.constant(3)


    with tf.Session() as sess:
        print("a=2, b=3")
        print("Addition with constants: %i" % sess.run(a+b))
Run Code Online (Sandbox Code Playgroud)

但是奇怪地使GPU同步失败错误。

追溯:

runfile('D:/tf_examples-master/untitled3.py', wdir='D:/tf_examples-master')
a=2, b=3
Traceback (most recent call last):

  File "<ipython-input-5-d4753a508b93>", line 1, in <module>
    runfile('D:/tf_examples-master/untitled3.py', wdir='D:/tf_examples-master')

  File "C:\ProgramData\Anaconda3\envs\env3-gpu\lib\site-packages\spyder\utils\site\sitecustomize.py", line 705, in runfile
    execfile(filename, namespace)

  File "C:\ProgramData\Anaconda3\envs\env3-gpu\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
    exec(compile(f.read(), filename, 'exec'), namespace)

  File "D:/tf_examples-master/untitled3.py", line 15, in <module>
    print("Multiplication with constants: %i" % sess.run(a*b))

  File "C:\ProgramData\Anaconda3\envs\env3-gpu\lib\site-packages\tensorflow\python\client\session.py", line 900, in run
    run_metadata_ptr)

  File "C:\ProgramData\Anaconda3\envs\env3-gpu\lib\site-packages\tensorflow\python\client\session.py", line 1135, in _run
    feed_dict_tensor, options, run_metadata)

  File "C:\ProgramData\Anaconda3\envs\env3-gpu\lib\site-packages\tensorflow\python\client\session.py", line 1316, in _do_run
    run_metadata)

  File "C:\ProgramData\Anaconda3\envs\env3-gpu\lib\site-packages\tensorflow\python\client\session.py", line 1335, in _do_call
    raise type(e)(node_def, op, message)

InternalError: GPU sync failed
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

jam*_*woo 6

当我得到这个错误GPU sync failed。重新启动我的笔记本/内核没有帮助。

我有另一个笔记本/内核未关闭,并且正在使用我的GPU,因此要解决此问题,我要做的就是关闭另一个笔记本,重新启动当前的笔记本,一切正常!


lam*_*ter 5

TLDR:如果您发现tensorflow抛出a GPU sync failed Error,可能是因为模型的输入太大(就像我第一次遇到这个问题时的情况),或者您没有正确安装cuDNN。验证cuDNN是否正确安装,并重置您的nvidia缓存(即sudo -rf $HOME/.nv/)(如果在最初安装CUDA和cuDNN之后还没有这样做),然后重新启动计算机。


运行在tensorflow(TF)文档(https://www.tensorflow.org/tutorials/keras/save_and_restore_models#checkpoint_callback_usage)中找到的示例

“ GPU同步失败错误”

运行tf.keras模型(输入较大(向量化MNIST特征数据(长度= 28 ^ 2))时)。调查此问题,请在此处(https://github.com/tensorflow/tensorflow/issues/5688)找到这篇文章(它讨论的问题具体是由模型的大量输入引起的)和(遵循预期效果的链条) )(https://github.com/tensorflow/tensorflow/issues/5688)。第二个帖子问题的最后一行显示错误消息摘要

F tensorflow / stream_executor / cuda / cuda_dnn.cc:2440]无法使卷积入队:CUDNN_STATUS_NOT_SUPPORTED

由此,我决定尝试并测试cuDNN是否已正确安装(按照TF的要求)(https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#installlinux-deb)。按照文档尝试验证cuDNN的安装(https://docs.nvidia.com/deeplearning/sdk/cudnn-install/index.html#verify),

#Copy the cuDNN sample to a writable path.
$cp -r /usr/src/cudnn_samples_v7/ $HOME
#Go to the writable path.
$ cd  $HOME/cudnn_samples_v7/mnistCUDNN
#Compile the mnistCUDNN sample.
$make clean && make
#Run the mnistCUDNN sample.
$ ./mnistCUDNN
#If cuDNN is properly installed and running on your Linux system, you will see a message similar to the following:
Test passed!
Run Code Online (Sandbox Code Playgroud)

发现那是抛出错误

cudnnGetVersion() : 6021 , CUDNN_VERSION from cudnn.h : 6021 (6.0.21)
Host compiler version : GCC 5.4.0
There are 1 CUDA capable devices on your machine :
device 0 : sms 20  Capabilities 6.1, SmClock 1797.0 Mhz, MemSize (Mb) 8107, MemClock 5005.0 Mhz, Ecc=0, boardGroupID=0
Using device 0

Testing single precision
CUDNN failure
Error: CUDNN_STATUS_INTERNAL_ERROR
mnistCUDNN.cpp:394
Aborting...
Run Code Online (Sandbox Code Playgroud)

进一步研究,在这里找到nvidiadev线程(https://devtalk.nvidia.com/default/topic/1025900/cudnn/cudnn-fails-with-cudnn_status_internal_error-on-mnist-sample-execution/post/5259556/#5259556)和此处(https://devtalk.nvidia.com/default/topic/1024761/cuda-setup-and-installation/cudnn_status_internal_error-when-using-cudnn7-0-with-cuda-8-0/post/5217666/ #5217666),建议通过清除nvidia缓存

sudo rm -rf ~/.nv/
Run Code Online (Sandbox Code Playgroud)

并重新启动我的机器(否则CUDA和cuDNN的安装验证测试都将失败)。完成此操作后,请同时使用CUDA(https://docs.nvidia.com/cuda/archive/9.0/cuda-installation-guide-linux/index.html#install-samples)和cuDNN(https://docs.nvidia)。 com / deeplearning / sdk / cudnn-install / index.html#installlinux-deb)安装检查已通过。

终于能够成功运行TF模型而没有错误。

model.fit(train_images, train_labels,  
          epochs = 10, 
          validation_data = (test_images, test_labels),
          callbacks = [cp_callback])  # pass callback to training
Run Code Online (Sandbox Code Playgroud)

对1000个样本进行训练,对1000个样本进行验证时代1/10 1000/1000 [==============================]-1s 604us / step-损耗:1.1795-acc:0.6720-val_loss:0.7519-val_acc:0.7580

时代00001:将模型保存到training_1 / cp.ckpt警告:tensorflow:该模型是使用Keras优化器()编译的,但使用是以TensorFlow格式保存的save_weights。将保存模型的权重,但与TensorFlow格式的TensorFlow优化器不同,不会保存优化器的状态。.....

希望这对您有所帮助。

注意:这可能是一个容易遇到的问题,因为tensorflow文档明确要求同时安装CUDA和cuDNN以支持TF中的GPU,但实际上这是不正确的,您实际上pip install tensorflow-gpu 无需安装cuDNN即可。 (如果某人过于渴望)可能会误导某人指责其代码中的某些内容,而不是其他一些基本的安装要求(在这种情况下,这实际上是正确的选择)。


GoF*_*uth 5

我有同样的错误

GPU 同步失败

今天我的 CNN 已经运行了大约 12 个小时。
重启电脑暂时解决了这个问题。

编辑:

今天我又犯了这个错误。我没有重新启动计算机,而是重新启动了 IPython 控制台,错误也消失了。似乎在同一个 python 环境中,tensorflow 再也找不到可用的 GPU。如果重新启动python环境,一切都会恢复正常。我在 GTX 950M 上使用 tensorflow-gpu v1.10.0 和 cudnn v7.1.4。