在 Theano 中使用屏幕会话 - 竞争条件

Posted

技术标签:

【中文标题】在 Theano 中使用屏幕会话 - 竞争条件【英文标题】:Using screen session with Theano - race conditions 【发布时间】:2015-10-18 08:10:47 【问题描述】:

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

我如下进行。我通过 ssh 连接到我正在使用的计算集群(我不是 的 root 用户)。

然后我运行:

screen -S model1

然后,一旦我进入这个屏幕会话,我就会运行 Python 脚本来训练我的模型。我分离屏幕(Ctrl+A+D),当我执行 screen -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 时才会发生这种情况。

【问题讨论】:

不知道为什么它被标记为cuda,所以我删除了 cuda 标记。如果您认为这应该用cuda 标记,请解释原因并重新标记。谢谢。 【参考方案1】:

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

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

【讨论】:

谢谢!没错,我在 AFS 上。根据我收集的信息,我运行: 1) kinit -c cache_name me@domain.com 2) ssh me@comp.domain.com 但这似乎不起作用(我仍然得到相同的错误,每次我做 ssh ,我仍然需要输入我的密码)。还有更多吗?我一直在阅读文档,但我对使用 Kerberos(尤其是 ssh)不是很熟悉。 computing.help.inf.ed.ac.uk/afs-top-ten-tips#Tip07 或 qwone.com/~jason/useful.html 中描述的方法可能会有所帮助。我有使用预先构建的 longjob 脚本的好处,所以我自己不知道细节。

以上是关于在 Theano 中使用屏幕会话 - 竞争条件的主要内容,如果未能解决你的问题,请参考以下文章

停止刷新令牌的竞争条件?

使用带有 viewpager 的异步任务时的竞争条件

条件竞争和恶性条件竞争

侦听firebase数据库节点时如何处理kotlin中的竞争条件

条件竞争漏洞

竞争条件和解锁写入