5

目前,我使用默认的 64 作为 seq2seq tensorflow 模型的批量大小。我可以使用具有 12 GB RAM 和 Haswell-E xeon 128GB RAM 的单个 Titan X GPU 的最大批量大小、层大小等是多少。输入数据被转换为嵌入。以下是我正在使用的一些有用参数,似乎单元格输入大小为 1024:

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% 的内存已被占用。

4

3 回答 3

5

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

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

然后,您可以在开始会话时使用此配置:

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

现在,该模型将只使用所需的内存,然后您可以尝试使用不同的批量大小,看看它何时会耗尽内存。

于 2017-03-16T11:08:16.093 回答
0

详细说明之前的答案,很难通过分析预测模型的确切最大 RAM 消耗,因为 TF 运行时可以自由地同时安排独立操作,这样做可能会导致比执行相同操作更高的最大 RAM 使用依次。操作调度是动态的,因此训练步骤中使用的最大 RAM 量可能因步骤而异。在实践中,对于非平凡的模型,似乎有必要进行实验以找到始终有效的最大批量大小。

于 2016-02-08T19:18:11.003 回答
0

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

于 2016-02-04T16:05:56.707 回答