Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Tensorflow:无法在服务器中创建会话_Python_Tensorflow - Fatal编程技术网

Python Tensorflow:无法在服务器中创建会话

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

我在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/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创建会话,请在从
    nvidia smi
    中查找PID后,终止上一个
    tf.Session()
    请求,并将cuda visible device设置为可用的GPU ID(
    0

    导入操作系统
    os.Enviro[“CUDA\u可视设备”]=“0”

    然后使用
    tf.Session
    可以创建与指定GPU设备的会话

  • 否则,如果GPU不起作用,则在从
    nvidia smi
    中查找PID后,关闭上一个
    tf.Session()
    请求,并将cuda visible device设置为undefined

    导入操作系统
    os.environ[“CUDA_可视设备”]=''

    然后使用
    tf.Session
    可以创建与CPU的会话


在集群上工作时,我遇到了类似的问题。当我将作业脚本提交到Slurm server时,它会正常运行,但在Jupytyter笔记本上训练模型时,我会得到以下错误:

内部错误:无法创建会话

原因:这是因为我在同一个GPU下运行多台jupyter笔记本电脑(都使用tensorflow),所以slurm服务器将限制创建新的tensorflow会话。 通过停止所有jupyter笔记本,然后一次只运行一个/两个,问题就解决了

以下是jupyter笔记本的日志错误:


内部:调用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