在Tensorflow中处理双位异常/ GPU错误

时间:2018-12-04 09:38:21

标签: tensorflow keras cuda

我们在使用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时应该捕获的某种类型的错误,还是我应该做的其他事情?

预先感谢

1 个答案:

答案 0 :(得分:1)

GPU出现不可纠正的ECC错误时,不会直接报告给任何应用程序。 内核驱动程序先记录Xid 48,再记录Xid 63,GPU会被有效禁用,直到通过nvidia-smi实用程序或通过重新引导计算机将其重置为止。 在此处查看详细信息:https://docs.nvidia.com/deploy/xid-errors/index.html

从应用程序的角度来看,其影响是在某个时间点内核开始无法启动。根据应用程序,您可能会收到错误报告。我相信tensorflow大部分时间都会检查错误,并且该应用最终会因断言而失败。故障消息很可能没有任何迹象表明崩溃与ECC错误有关。

在检测到无法纠正的错误之后的第一个故障可能看起来特别令人困惑。到那时,该错误会导致正在进行的某些操作中止,并且您最终可能会报告相当多的可能错误。同样,他们都不会说任何有关ECC错误的信息,您需要自己检查一下。