4

目前,我使用默认64作为seq2seq tensorflow模型的批量大小。什么是最大批量大小,图层大小等,我可以与一个单一的Titan X GPU与12GB RAM和Haswell-E xeon 128GB RAM一起使用。输入数据被转换为嵌入。以下是我使用的一些有用的参数,它看上去细胞输入尺寸为1024:如何确定seq2seq张量流RNN训练模型的最大批量大小

encoder_inputs: a list of 2D Tensors [batch_size x cell.input_size]. 
decoder_inputs: a list of 2D Tensors [batch_size x cell.input_size]. 
tf.app.flags.DEFINE_integer("size", 1024, "Size of each model layer.") 

因此,基于我的硬件什么是最大批量大小,层,输入大小我能去吗?目前GPU显示占用了99%的内存。

回答

0

运行TensorFlow模型时的内存使用情况取决于模型中有多少变量,以及TensorFlow运行时用于计算激活,渐变等的中间张量。例如,在您的模型中,如果input_size1024,则用于每层变量的存储器将是4MB + 4KB(权重和偏差)。用于中间张量的内存将随着批量大小线性增长,但确切的数量很难估计,因为它取决于运行时间如何决定安排操作。 12GB应该能够适应相当大的模型,但。

+1

目前GPU显示99%的内存被上面的配置占用。 – stackit

+1

@stackit我发现TF'占据'整个GPU,即使它没有将它全部用于计算......如果你的模型超出了GPU内存限制,那么它会抛出一个错误,所以你可以找出你的最大模型大小通过试验和错误。 – j314erre

0

在前面的答案中详细阐述了一点,很难分析预测模型的最大内存消耗量,因为TF运行时可以自由地同时调度独立操作,并且这样做会导致更高的最大内存使用率依次执行相同的操作。操作调度是动态的,因此在训练步骤中使用的RAM的最大数量可能会随着步骤的变化而不确定地变化。在实践中,对于非平凡的模型,似乎有必要进行试验以找出能始终如一地工作的最大批量。

+0

Arent有任何thumbrule来预测它,但不是标记它可能。 – stackit

3

默认情况下,Tensorflow占用所有可用的GPU内存。但是,有一种方法可以改变这一点。在我的模型,我这样做:

config = tf.ConfigProto() 
config.gpu_options.allow_growth = True 

然后你可以使用这个配置,当您启动会话:现在

with tf.Session(config=config) as sess: 

,因为它需要的车型将只使用尽可能多的内存,然后您可以尝试使用不同的批量,并查看内存何时用完。

相关问题