【问题标题】:Theano takes a few minutes to start a script running on GPUTheano 需要几分钟来启动在 GPU 上运行的脚本
【发布时间】:2016-01-10 18:26:19
【问题描述】:

我启动一个在 GPU 上运行的脚本如下:

THEANO_FLAGS=mode=FAST_RUN,device=gpu0,floatX=float32,base_compiledir=../../temp python t.py

有时甚至需要几分钟才能开始:脚本t.py 的第一行是打印语句(即print('start')),几分钟后才会显示。

如果使用CPU,打印语句立即出现:

THEANO_FLAGS=mode=FAST_RUN,device=cpu,floatX=float32,base_compiledir=../../temp python t.py

我事先使用 sudo pkill -9 python 杀死了所有 Python 进程。运行 nvidia-smi 表明在运行我的脚本之前,没有进程使用任何 GPU。 (我使用 nVidia GPU,特别是 nVidia GeForce GTX Titan X)

我注意到问题出现在屏幕会话中(使用GNU Screen),它是在不久前创建的(> 似乎是半天)。杀死屏幕会话并创建一个新会话可以解决问题。但是,我不明白为什么它可以解决问题。

什么可以解释这个问题?


一些时机:

使用 Python 脚本:

import time
print('start import theano')
theano_import_start_time = time.time()
import theano
theano_import_duration = time.time() - theano_import_start_time
print('done import theano')
print('theano_import_duration: {0} seconds'.format(theano_import_duration))

使用命令运行:

francky@server:/scratch1/a/b$ THEANO_FLAGS=mode=FAST_RUN,device=gpu0,floatX=float32,base_compiledir=../../temp_compilation python -u test_import_theano.py

我明白了:

start import theano
Using gpu device 0: GeForce GTX TITAN X (CNMeM is disabled)
done import theano
theano_import_duration: 221.107403994 seconds

221 秒是导入库的相当长的时间。如果我杀死屏幕并创建一个新屏幕,导入时间约为 1.1 秒。

缓慢似乎是可重现的:即使我多次运行 import theano,它仍然需要大约 220 秒(除非我杀死并创建一个新屏幕)。另外,我不会清空base_compiledir

【问题讨论】:

  • print 行之前是否有 import theano 语句?如果是,暂停是发生在 Theano 自动打印的 Using gpu device 0: <GPU details> 语句之前还是之后?
  • @DanielRenshaw 很好,在打印语句之前有一个import theano。下次遇到此问题时,我将在所有导入之前移动打印语句。它在Using gpu device 0: <GPU details> 语句之前暂停。
  • 这通常意味着它正在做初步编译。 ../../temp 是在网络文件系统上还是以某种方式被反复删除?
  • @DanielRenshaw(抱歉耽搁了,问题直到现在还没有再次出现)你是对的,这是需要很长时间才能完成的import theano:我尝试使用print('start import theano'); import theano; print('done import theano')。不涉及编译。我不认为它涉及来自网络文件系统的文件,但即使它做了一切都是 1 Gbps 和本地:它通常不是瓶颈。

标签: python gpgpu theano


【解决方案1】:

如果你清空base_compiledir Theano 标志指向的目录并启动你的脚本,你应该预计import theano 会花费非常长的时间,因为第一次导入 theano 会导致在后台发生大量编译.后续运行应该会更快import theano,因为安装程序编译已经发生,只要在此期间没有清除base_compiledir

由于 Theano 必须检查所有设置编译是否存在于缓存中,import theano 即使在第一次运行之后也可能需要一段时间才能运行。如果 base_compiledir 位于联网或速度较慢的文件系统上,则尤其如此。

【讨论】:

  • 谢谢。不过,这种缓慢似乎是可重现的:即使我不止一次运行import theano,它仍然需要大约 220 秒。另外,我不会清空base_compiledir。杀死屏幕并创建一个新屏幕后,不更改任何其他内容,import theano 然后需要大约 1 秒。
  • 如果编译目录位于网络文件系统上,您的凭据是否已过期?
猜你喜欢
  • 2015-10-06
  • 2016-02-04
  • 1970-01-01
  • 2021-07-02
  • 2018-06-17
  • 2019-08-03
  • 2017-03-02
  • 1970-01-01
  • 2014-10-18
相关资源
最近更新 更多