我正在尝试使用VGG16运行一些基本的传输学习代码。我使用的是Ubuntu 16.04,TensorFlow 1.3和Keras,我有4个1080ti GPU。
当我到达这行代码时:
datagen = ImageDataGenerator(rescale=1. / 255)
model = applications.VGG16(include_top=False, weights='imagenet')
nvidia-smi的输出显示:
Processes: GPU Memory |
| GPU PID Type Process name Usage
| 0 14241 G /usr/lib/xorg/Xorg 256MiB |
| 0 14884 G compiz 155MiB |
| 0 16497 C /home/simon/anaconda3/bin/python 10267MiB |
| 1 16497 C /home/simon/anaconda3/bin/python 10611MiB |
| 2 16497 C /home/simon/anaconda3/bin/python 10611MiB |
| 3 16497 C /home/simon/anaconda3/bin/python 10611MiB |
+ ---------------------------------------------- ------------------------------- +
然后终端输出
2017-09-02 15:59:15.946927: E tensorflow/stream_executor/cuda/cuda_dnn.cc:371] could not create cudnn handle: CUDNN_STATUS_INTERNAL_ERROR
2017-09-02 15:59:15.946960: E tensorflow/stream_executor/cuda/cuda_dnn.cc:338] could not destroy cudnn handle: CUDNN_STATUS_BAD_PARAM
2017-09-02 15:59:15.946973: F tensorflow/core/kernels/conv_ops.cc:672] Check failed: stream->parent()->GetConvolveAlgorithms( conv_parameters.ShouldIncludeWinogradNonfusedAlgo<T>(), &algorithms)
我的jupyter笔记本kernal死了。
显然这是一个内存问题,但我不明白为什么我的GPU会被这段代码占用。我应该补充说,这个问题只是在过去的24小时内开始,所有这些代码在一天前运行良好。这里有类似问题的答案很多,但它们都涉及TF运行的其他实例(并建议关闭它们)。就我而言,这是唯一运行的TF应用程序(或任何其他应用程序)。
答案 0 :(得分:0)
由于除了ShouldIncludeWinogradNonfusedAlgo()以外的原因,CHECK可能会失败。例如,如果未能创建cudnnSupport实例,则CHECK也将失败。我建议你在github上发布一个更详细的问题,我可以看看。但是更新CUDA驱动程序然后重新安装cudnn可能是第一件要尝试的事情。基本上是为了确保CUDA和cudnn环境最近没有改变。此外,如果可能的话,优选最小的再现器。谢谢!
答案 1 :(得分:0)
尝试杀死所有python进程,然后删除〜/ .nv文件夹并再次运行它。它对我有同样的错误。
答案 2 :(得分:0)
由strickon here解决。我也选择了一个有效的百分比,即0.7。:
config = tf.ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction = 0.7
session = tf.Session(config=config, ...)