【发布时间】:2015-11-08 10:03:56
【问题描述】:
我正在将 theano 和 lasagne 用于 DNN 语音增强项目。我使用的前馈网络与 lasagne 文档 (/github.com/Lasagne/Lasagne/blob/master/examples/mnist.py) 中的 mnist 示例非常相似。这个网络使用了几个 dropout 层。我在 Nvidia Titan X GPU 上训练我的网络。但是,当我不使用 dropout 时,我的 GPU 利用率约为 60%,一个 epoch 大约需要 60 秒,但当我使用 dropout 时,我的 GPU 利用率下降到 8%,每个 epoch 大约需要 600 秒。这与将辍学率设置为 20% 或 0.1% 无关。
最初我认为这是由于用于生成 dropout 掩码的随机数生成器 (RNG) 没有在 GPU 上运行。但是,在代码 (https://github.com/Lasagne/Lasagne/blob/master/lasagne/layers/noise.py) 中似乎使用了 rng_mrg,它应该基于此链接在 GPU 上运行:http://deeplearning.net/software/theano/tutorial/examples.html#other-implementations
运行 theano profiler 显示“theano.sandbox.rng_mrg.mrg_uniform”占用了 86.7% 的执行时间,我不明白。
如果有人知道是什么影响了我的 GPU 利用率,我将不胜感激。
【问题讨论】:
标签: python gpgpu theano deep-learning lasagne