2017-10-09 10 views
0

ディープ・ラーニング・モデルにTensorflow(CPU版)を使用していました。具体的には、与えられたパラメータ(ネットワーク構造、隠れた層、アルファなど)を使用して、トレーニングにDNNRegressor Estimatorを使用しました。私は損失を減らすことができましたが、モデルは学習に非常に長い時間(約3日間)を要しました。 100ステップごとに9秒であった。TensorFlow EstimatorのGPUを最大限に活用するにはどうすればいいですか?

enter image description here

私はこの記事accrossに来た: - 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秒で同じです。 Estimatorsが独自にGPUを使用していることを読んでいるので、CPU上のEstimatorで使用したのと同じコードを使用しています。ここに私の「nvidia-smi」コマンド出力があります。 enter image description here

  • GPUのメモリが使用されていることを示しているが、私の揮発性GPU-Utilのは1%です。私が逃しているものは分かりません。同じように動作するように設計されているのか、何かが欠落しています。なぜなら、毎秒のグローバルステップ数はEstimatorのCPUとGPUの実装で同じであるからです。
  • DNNRegressor Estimatorコードで明示的に何かを変更する必要がありますか?
+0

テンソルフローの開始に時間がかかります。プロセスをチェックした時間はどれくらいですか? – Kev1n91

+0

@ kev1n91この時間はすべてのステップで一定です。だから、このような多くの時間が使われています。 – user3457384

+0

GPUが低速CPU操作を待っているように見えます。あなたはどのようにデータをフィードしていますか? – Maxim

答えて

0

csvから読み込んでpandas DataFrameに変換した後、tensorflowのpandas_input_fnを使用しているようです。これは、pandas_input_fnの実装に関する既知の問題です。問題はhttps://github.com/tensorflow/tensorflow/issues/13530で追跡できます。

これと対処するには、I/O(TFRecordsからの読み取りなど)に別の方法を使用できます。パンダを使い続けて1秒あたりの歩数を増やしたい場合は、バッチサイズを減らすことができますが、これはエスティメータの学習能力に悪影響を与える可能性があります。

関連する問題