在训练我的张量流模型时,我面临一个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进行训练并将张量存储在主机内存中?欢迎其他任何建议。
答案 0 :(得分:0)
使用GPU运行特定操作(例如,训练期间进行一些张量乘法)需要将这些张量存储在GPU上。
您可能想使用Tensorboard或类似的东西来查看哪些操作需要最多的计算图内存。特别是,嵌入和LSTM之间的第一个链接可能是元凶,您需要以某种方式缩小范围。