【问题标题】:GPU Sync Failed While using tensorflow使用 tensorflow 时 GPU 同步失败
【发布时间】:2018-06-30 05:51:48
【问题描述】:

我正在尝试运行这个简单的代码来测试 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))

但奇怪的是得到 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

任何帮助将不胜感激。

【问题讨论】:

    标签: python python-3.x tensorflow


    【解决方案1】:

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

    我有另一个笔记本/内核没有关闭并且正在使用我的 GPU,所以为了解决这个问题,我所做的就是关闭另一个笔记本,重新启动我当前的笔记本,一切正常!

    【讨论】:

    • 除了重启还有其他方法吗?
    【解决方案2】:

    我有同样的错误

    GPU 同步失败

    今天我的 CNN 已经运行了大约 12 个小时。
    重新启动计算机暂时解决了这个问题。

    已编辑:

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

    【讨论】:

      【解决方案3】:

      TLDR:如果你发现 tensorflow 正在抛出 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)。第二个帖子问题的最后一行显示错误消息 sn-p

      F tensorflow/stream_executor/cuda/cuda_dnn.cc:2440] 未能在流上将卷积排入队列: CUDNN_STATUS_NOT_SUPPORTED

      由此,我决定尝试测试(根据 TF 的要求)cuDNN 是否实际安装正确(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!
      

      发现正在抛出错误

      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...
      

      查看更多内容,在此处 (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) 找到 nvidiadev 线程,建议通过

      清除 nvidia 缓存
      sudo rm -rf ~/.nv/
      

      并重新启动(否则 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
      

      训练 1000 个样本,验证 1000 个样本 Epoch 1/10 1000/1000 [==============================] - 1s 604us/step - loss: 1.1795 - acc: 0.6720 - val_loss:0.7519 - val_acc:0.7580

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

      希望对你有所帮助。

      注意:这可能是一个容易遇到的问题,因为 tensorflow 文档明确要求在 TF 中安装 CUDA 和 cuDNN 以支持 GPU,但您实际上可以pip install tensorflow-gpu 不安装 cuDNN,即使这不是正确的做法,这(如果某人过于急切)可能会误导某人将责任归咎于他们的代码中的某些内容,而不是其他一些底层安装要求(这实际上是正确的在这种情况下选择)。

      【讨论】:

        【解决方案4】:

        这是一个较老的问题,但对于那些遇到这个问题的人来说,我的解决方法与其他答案不同。

        代码使用import schedule 在预定时间运行 TensorFlow 模型。该代码将在第一次运行时没有问题,然后在第二次运行时代码将返回一个

        GPU 同步失败

        错误。以前,我使用from numba import cuda 修复了一个内存问题,以释放 Tensorflow 分配的内存。使用的代码包括一行 cuda.close(),因为我认为 Tensorflow 会在下一次运行时重新打开 Cuda 会话。我删除了cuda.close() 这条线,从那以后一切都运行良好。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-08-27
          • 1970-01-01
          • 2019-02-20
          • 2017-07-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多