2017-10-09 10 views
0

我使用Tensorflow(CPU版本)作爲我的深度學習模型。具體使用DNNRegressor Estimator進行訓練,給定參數集(網絡結構,隱藏層,alpha等)雖然我能夠減少損失,但是模型需要花費很長時間學習(大約3天),而且時間很長每100步採取9秒。如何充分利用GPU進行TensorFlow Estimators?

enter image description here

我來到這個文章翻過: - https://medium.com/towards-data-science/how-to-traine-tensorflow-models-79426dabd304 ,發現GPU的可以更快速地學習。所以我從AWS(單核GPU)enter image description here帶有4個(vCPU),12個(ECU)和61個(MiB)的p2.xlarge GPU。

但是學習速度在每100步第9秒時相同。我使用相同的代碼在CPU上使用Estimators,因爲我讀了Estimators自己使用GPU。這裏是我的「nvidia-smi」命令輸出。 enter image description here

  • 據顯示,GPU存儲器被使用,但我的揮發性GPU-的Util是在1%以下。無法弄清楚,我錯過了什麼。它是設計成相同的還是我錯過了一些東西,因爲每秒的全局步數對於Estimators的CPU和GPU實現都是相同的。
  • 我是否必須明確地改變DNNRegressor Estimator Code中的內容?
+0

張量流開始需要一些時間,您檢查過程有多長時間? – Kev1n91

+0

@ kev1n91這個時間對於所有的步驟都是不變的。所以這段時間正在使用。 – user3457384

+0

看起來像GPU正在等待CPU運行緩慢。你如何提供數據? – Maxim

回答

0

這聽起來像你可能從csv讀取並轉換爲熊貓數據幀,然後使用tensorflow的pandas_input_fn。這是pandas_input_fn實現的已知問題。您可以在https://github.com/tensorflow/tensorflow/issues/13530上跟蹤問題。

爲了解決這個問題,你可以使用不同的I/O方法(例如從TFRecords讀取)。如果您想繼續使用熊貓並增加步數/秒,則可以減少批量大小,但這可能會對估算人員的學習能力產生負面影響。