我正在使用userdocker在远程服务器上一个接一个地训练一些Keras模型。我通过ssh连接到服务器,让它们在不同的屏幕上运行。
为了加快速度,我让模型在5个GPU上进行训练,这样就可以同时训练5个不同的模型。
大多数时候,模型训练没有任何问题:我分离屏幕,从服务器注销,让它们一夜之间运行。然而,有时候,他们会在训练过程中因管道破裂而停下来。下面我列出了消息的最后部分,因为我认为它可能是最相关的,但它很长且重复。
我发现这个question的错误消息略有相似,而且他们与explanation相关联,但是我无法看到如何在我的情况下修复它或者我犯了错误在我的代码中可能会导致这个问题,因为它并不总是发生。
使用Keras或userdocker时是否遇到类似问题?如何防止它发生?
错误消息
23/24 [===========================> ..] - ETA:7s - 损失:1.7797 - acc: 0.2219回溯(最近一次呼叫最后):
文件“/usr/local/lib/python2.7/dist-packages/keras/utils/data_utils.py”, 第655行,在_data_generator_task中 self.queue.put((True,generator_output))
文件“”,第2行,在put中 文件“/usr/lib/python2.7/multiprocessing/managers.py”, 第759行,在_callmethod中 kind,result = conn.recv()EOFError处理流程-259:追溯(最近一次呼叫最后):
文件 “/usr/lib/python2.7/multiprocessing/process.py”,第258行,in _bootstrap self.run()
文件“/usr/lib/python2.7/multiprocessing/process.py”,第114行,在运行中 self._target(* self._args,** self._kwargs)
文件“/usr/local/lib/python2.7/dist-packages/keras/utils/data_utils.py”, 第665行,在_data_generator_task中 self.queue.put((假,e))
文件“”,第2行,放入文件“/usr/lib/python2.7/multiprocessing/managers.py”,第758行, _callmethod conn.send((self._id,methodname,args,kwds))
IOError:[Errno 32]管道损坏追踪(最近一次调用最后一次):文件“main.py”,第406行,中 group_main(sys.argv中[1:])
在group_main中输入“main.py”,第346行 steps_per_epoch)
文件“/netscratch/user01/perge/scripts/pycharm_perge/model_trainer.py”, 第78行,在train_model中 steps_per_epoch = steps_per_epoch,epochs = epochs,callbacks = callBacksList)
文件 “/usr/local/lib/python2.7/dist-packages/keras/legacy/interfaces.py” 第91行,包装中 return func(* args,** kwargs)
文件“/usr/local/lib/python2.7/dist-packages/keras/models.py”,第1256行, 在fit_generator中 initial_epoch = initial_epoch)
文件“/usr/local/lib/python2.7/dist-packages/keras/legacy/interfaces.py”, 第91行,包装中 return func(* args,** kwargs)
文件“/usr/local/lib/python2.7/dist-packages/keras/engine/training.py”, 第2195行,在fit_generator中 workers = 0)文件“/usr/local/lib/python2.7/dist-packages/keras/legacy/interfaces.py”, 第91行,包装中 return func(* args,** kwargs)
文件“/usr/local/lib/python2.7/dist-packages/keras/engine/training.py”, 第2310行,在evaluate_generator中 generator_output = next(output_generator)
文件“/usr/local/lib/python2.7/dist-packages/keras/utils/data_utils.py”, 第751行,在得到 如果不是self.queue.empty():文件“”,第2行,在空文件“/usr/lib/python2.7/multiprocessing/managers.py”,第758行,in _callmethod conn.send((self._id,methodname,args,kwds))IOError:[Errno 32]管道损坏