2015-06-09 55 views
2

我試圖在運行ami-b141a2f5(Theano-CUDA 7)映像的Amazon羣集上執行logistic_sgd.py代碼。在亞馬遜羣集上使用Theano來使用VRAM

而不是包含的MNIST數據庫我使用SD19數據庫,它需要更改幾個維度常量,但否則沒有代碼已被觸及。該代碼運行正常在本地,我的CPU上,但一旦我的代碼和數據SSH連接到Amazon集羣並運行它那裏,我得到這樣的輸出: enter image description here

就像是跑出來的VRAM在我看來,但我的理解是,代碼應該已經在GPU上運行,沒有任何必要的修補。按照錯誤消息中的建議,錯誤仍然存​​在。

回答

0

這裏沒有什麼特別的奇怪。錯誤信息幾乎肯定是準確的:VRAM確實不夠。通常情況下,一個腳本在CP​​U上運行良好,但在GPU上這樣失敗的原因通常是因爲系統內存通常比GPU內存多得多,特別是因爲系統內存是虛擬化的(並且可以在需要時將頁面傳出到磁盤),而GPU記憶不是。

對於這個腳本,需要有足夠的內存來存儲訓練,驗證和測試數據集,模型參數和足夠的工作空間來存儲計算的中間結果。有兩種選擇:

  1. 減少這三個組件中的一個或多個所需的內存量。減少培訓數據的數量通常是最簡單的;減小模型的尺寸。不幸的是,這兩種選擇都會影響正在尋找的結果的質量。減少中間結果所需的內存數量通常超出了開發人員的控制範圍 - 由Theano管理,但是一旦對Theano的內部結構有了很好的理解,有時可以通過改變計算來實現這一目標。

  2. 如果模型參數和工作內存可以適應GPU內存,那麼最常見的解決方案是更改代碼,以便數據不再存儲在GPU內存中(即將其存儲爲numpy數組,而不是像Theano共享變量),然後將每批數據傳遞爲inputs而不是givensLSTM sample code就是這種方法的一個例子。