带有tensorflow的OOM

时间:2019-02-24 01:32:44

标签: tensorflow machine-learning

在训练我的张量流模型时,我面临一个OOM错误,结构如下:

  用GoogleNewsVector初始化的

tf.contrib.layers.embed_sequence   2 * tf.nn.rnn_cell.DropoutWrapper(tf.nn.rnn_cell.LSTMCell)#转发   2 * tf.nn.rnn_cell.DropoutWrapper(tf.nn.rnn_cell.LSTMCell)#向后   tf.nn.bidirectional_dynamic_rnn包装以上各层   tf.layers.dense作为输出层

我试图将批处理大小减小到64,将输入数据填充到1500,并且我的vocab大小为8938

我正在使用的群集非常强大(https://wiki.calculquebec.ca/w/Helios/en),我正在使用两个具有8个GPU的节点,但仍然出现此错误:

  

2019-02-23 02:55:16.366766:W tensorflow / core / framework / op_kernel.cc:1273] OP_REQUIRES在reverse_op.cc:270失败:资源耗尽:OOM发生在   分配张量,形状为[2000,800,300],类型为float on   / job:localhost / replica:0 / task:0 / device:GPU:1通过分配器GPU_1_bfc

我将estimator API与MirroredStrategy结合使用,仍然没有用,有没有办法让tensorflow仅仅使用GPU进行训练并将张量存储在主机内存中?欢迎其他任何建议。

1 个答案:

答案 0 :(得分:0)

使用GPU运行特定操作(例如,训练期间进行一些张量乘法)需要将这些张量存储在GPU上。

您可能想使用Tensorboard或类似的东西来查看哪些操作需要最多的计算图内存。特别是,嵌入和LSTM之间的第一个链接可能是元凶,您需要以某种方式缩小范围。