【问题标题】:Handling Double Bit Exceptions/GPU Errors in Tensorflow在 TensorFlow 中处理双位异常/GPU 错误
【发布时间】:2019-05-05 16:38:01
【问题描述】:

我们在使用 K80 GPU 的 Google Cloud Platform 中的某些机器上使用 Keras 和 Tensorflow 开发深度学习应用程序。

我们遇到了一些双位 ECC (DBE) 错误问题。根据官方文档https://docs.nvidia.com/deploy/dynamic-page-retirement/index.html

应用程序将收到正常退出的 DBE 事件通知, 在 DBE 完成之前,不会在 GPU 上创建更多上下文 绘制出来。

当这些错误发生时,我们的应用程序会使用 100% 的 CPU。我们目前不知道它在做什么,但我们会努力添加更多监控它的方法。

我的问题是我的应用程序如何接收这些 DBE 事件通知?是 SIGTERM、调用 Keras 时我应该捕获的某种类型的错误,还是我应该做的其他事情?

提前致谢

【问题讨论】:

  • 如果 GPU 出现故障导致其无法使用,CUDA 运行时将产生错误。您正在使用的框架如何处理这些错误是关于框架的问题,而不是与 CUDA 相关的任何问题

标签: tensorflow keras cuda


【解决方案1】:

当 GPU 出现无法纠正的 ECC 错误时,它不会直接报告给任何应用程序。 内核驱动程序会记录 Xid 48,然后是 Xid 63,并且 GPU 将被有效禁用,直到通过 nvidia-smi 实用程序或通过重新启动机器进行重置。 在此处查看详细信息:https://docs.nvidia.com/deploy/xid-errors/index.html

从应用程序的角度来看,效果是内核在某个时间点开始无法启动。根据应用程序,您可能会收到错误报告。我相信 tensorflow 在大多数情况下确实会检查错误,并且应用程序最终会因断言而失败。失败消息很可能不会表明崩溃与 ECC 错误有任何关系。

检测到无法纠正的错误后的第一次故障可能看起来特别令人费解。那时,错误会导致一些正在进行的操作中止,您最终可能会收到相当广泛的可能错误报告。同样,他们都不会说 ECC 错误,您需要自己检查。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-29
    • 2018-04-06
    • 1970-01-01
    • 2012-09-15
    • 2011-04-03
    • 2014-01-08
    • 2014-04-06
    • 2013-12-27
    相关资源
    最近更新 更多