Python Tensorflow:无法在服务器中创建会话
我在Keras开发了一个模型,并对它进行了多次训练。有一次我强制停止了模型的训练,从那以后我得到了以下错误:Python Tensorflow:无法在服务器中创建会话,python,tensorflow,Python,Tensorflow,我在Keras开发了一个模型,并对它进行了多次训练。有一次我强制停止了模型的训练,从那以后我得到了以下错误: Traceback (most recent call last): File "inception_resnet.py", line 246, in <module> callbacks=[checkpoint, saveEpochNumber]) ## File "/home/eh0/E27890/anaconda3/lib/python3.5/sit
Traceback (most recent call last):
File "inception_resnet.py", line 246, in <module>
callbacks=[checkpoint, saveEpochNumber]) ##
File "/home/eh0/E27890/anaconda3/lib/python3.5/site-packages/keras/legacy/interfaces.py", line 87, in wrapper
return func(*args, **kwargs)
File "/home/eh0/E27890/anaconda3/lib/python3.5/site-packages/keras/engine/training.py", line 2042, in fit_generator
class_weight=class_weight)
File "/home/eh0/E27890/anaconda3/lib/python3.5/site-packages/keras/engine/training.py", line 1762, in train_on_batch
outputs = self.train_function(ins)
File "/home/eh0/E27890/anaconda3/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py", line 2270, in __call__
session = get_session()
File "/home/eh0/E27890/anaconda3/lib/python3.5/site-packages/keras/backend/tensorflow_backend.py", line 163, in get_session
_SESSION = tf.Session(config=config)
File "/home/eh0/E27890/anaconda3/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1486, in __init__
super(Session, self).__init__(target, graph, config=config)
File "/home/eh0/E27890/anaconda3/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 621, in __init__
self._session = tf_session.TF_NewDeprecatedSession(opts, status)
File "/home/eh0/E27890/anaconda3/lib/python3.5/contextlib.py", line 66, in __exit__
next(self.gen)
File "/home/eh0/E27890/anaconda3/lib/python3.5/site-packages/tensorflow/python/framework/errors_impl.py", line 466, in raise_exception_on_not_ok_status
pywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.InternalError: Failed to create session.
模型的训练在没有GPU加速的情况下开始
另外,由于我正在服务器上训练我的模型,而且我也没有对服务器的根访问权限,因此我无法重新启动服务器或使用根访问权限清除GPU内存。现在的解决方案是什么 我在一篇评论中找到了解决方案 这将列出占用GPU内存的所有进程(及其PID)。我用枪一个接一个地杀了他们
kill -9 PID
现在一切都恢复了正常运行。我正在使用Anaconda 4.5.12和python 3.5、NVIDIA驱动程序390.116 也面临着同样的问题。 在我的例子中,这是由不兼容的cudatoolkit版本引起的
conda install tensorflow-gpu
已安装cudatoolkit 9.3.0和cudnn 7.3.x。然而,在阅读了答案并参考了我的另一个虚拟环境后,我推断cudatookit 9.0.0
将与我的驱动程序版本兼容
conda install cudatoolkit==9.0.0
这是从cuda 9.0\u 0
版本安装的cudatoolkit 9.0.0
和cudnn 7.3.0
。在此之后,我能够使用GPU创建tensorflow会话。
现在,我们来谈谈裁员的选择
- 如果您的GPU内存被其他作业占用,那么按照@Preetam saha arko的建议逐个杀死它们将释放GPU,并允许您创建与GPU的
会话(前提是兼容性问题已经解决)tf
- 要使用指定的GPU创建会话,请在从
中查找PID后,终止上一个nvidia smi
请求,并将cuda visible device设置为可用的GPU ID(tf.Session()
)0
然后使用导入操作系统 os.Enviro[“CUDA\u可视设备”]=“0”
可以创建与指定GPU设备的会话tf.Session
- 否则,如果GPU不起作用,则在从
中查找PID后,关闭上一个nvidia smi
请求,并将cuda visible device设置为undefinedtf.Session()
然后使用导入操作系统 os.environ[“CUDA_可视设备”]=''
可以创建与CPU的会话tf.Session
内部:调用cuDevicePrimaryCtxRetain失败:CUDA\u错误\u内存不足;报告的总内存:12786073600当我的GPU使用率为零时,我得到了相同的错误,您如何在nvidia smi-q的输出中找到占用GPU内存的进程,在结果中找到“进程”,在那里您将找到进程ID@K.wanter谢谢,原来我的问题是由于驱动程序版本不适合cuda运行时版本,更新驱动程序解决问题“进程”在我的系统中显示为空白。此外,nvidia smi显示GPU利用率为0%。如果不重新启动服务器,还有其他方法吗?@请澄清一下。我的回答方式是错误的,还是我在回答中提到的是错误的?
conda install tensorflow-gpu
conda install cudatoolkit==9.0.0