使用与Theano的屏幕会话 - 竞争条件

时间:2015-07-27 23:23:41

标签: python-2.7 ssh gnu-screen theano keras

当在屏幕会话中训练在Keras中实施的神经网络时,我似乎遇到了与Theano的竞争条件。

我按照以下步骤进行。我正在使用我正在使用的计算集群(我不是的root用户)。

然后我跑:

screen -S model1

然后,一旦我进入这个屏幕会话,我运行Python脚本来训练我的模型。我分离屏幕(Ctrl + A + D),当我做屏幕-r时,一切都很好。但是,如果我在运行screen -r之前退出ssh会话,并在重新登录时运行screen -r,那么我会收到以下错误:

compilelock.py", line 91, in get_lock
  File "~/.local/lib/python2.7/site-packages/theano/gof/compilelock.py", line 275, in lock
OSError: [Errno 13] Permission denied: '~/.theano/compiledir_Linux-3.11--generic-x86_64-with-Ubuntu-13.10-saucy-x86_64-2.7.5+-64/lock_dir'
Error in sys.exitfunc:
Traceback (most recent call last):
  File "/usr/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
    func(*targs, **kargs)
  File "~/.local/lib/python2.7/site-packages/theano/gof/cmodule.py", line 1344, in _on_atexit
  File "/usr/lib/python2.7/contextlib.py", line 17, in __enter__
    return self.gen.next()
  File "~/.local/lib/python2.7/site-packages/theano/gof/compilelock.py", line 54, in lock_ctx
  File "~/.local/lib/python2.7/site-packages/theano/gof/compilelock.py", line 91, in get_lock
  File "~/.local/lib/python2.7/site-packages/theano/gof/compilelock.py", line 275, in lock
OSError: [Errno 13] Permission denied: '~/.theano/compiledir_Linux-3.11--generic-x86_64-with-Ubuntu-13.10-saucy-x86_64-2.7.5+-64/lock_dir'

有谁知道为什么会这样?有趣的是,只有在我登出并尝试在登录后运行screen -r时才会发生。

1 个答案:

答案 0 :(得分:1)

我的猜测是您的主目录位于某种网络文件系统(例如AFS)上。如果是这样,一旦您结束会话,文件系统安全凭证就会失效,并且该过程虽然继续在屏幕内运行,但不再具有使用Theano缓存目录~/.theano中的文件的权限。如果这个猜测是正确的,则问题不是竞争条件。

如果问题与AFS凭证到期有关,那么解决方案是使用带有kinit命令的凭证缓存(请参阅http://web.mit.edu/kerberos/krb5-1.12/doc/user/user_commands/kinit.html中的-c选项。)