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: 

,因爲它需要的車型將只使用盡可能多的內存,然後您可以嘗試使用不同的批量,並查看內存何時用完。