Torch: RNN克隆器已经用尽了GPU内存。

Karpathy的char-rnn(基于Wojciechz learning_to_execute)使用了一种常用的RNN技巧:

  • 克隆一个原型网络,每个序列有多少个时间步就克隆多少次
  • 在克隆之间共享参数

当我克隆217次时,我可以看到我的5GB GPU内存耗尽(阈值可能更低),导致出现以下情况:

lua opt/torch/install/share/lua/5.1/torch/File.lua:270: cuda runtime error (2) : out of memory at /mounts/Users/student/davidk/opt/torch/extra/cutorch/lib/THC/THCStorage.cu:44

问题出在clone_many_times()函数(链接在上面)。克隆似乎指向原型中相同的物理参数存储,但由于某种原因它仍然会崩溃。

有人遇到过这个问题和/或有任何关于如何训练非常长的序列的想法吗?

(在这里问了同样的问题:https://github.com/karpathy/char-rnn/issues/108

点赞
用户1949987
用户1949987

运行该模型时,我不得不增加GPU的内存容量。使用Sun的Grid Engine,使用-l h_vmem=8G表示8 GB。

否则,你可以尝试torch-rnn。它使用Adam进行优化,并为RNN / LSTM的前向/后向传递硬编码节省空间/时间效率。这也避免了克隆模型的头痛。

2017-07-02 21:18:50