2016-01-06 16 views
19

TensorFlowネットワーク内の各ノードの時間コストを計算する方法はありますか?
パフォーマンスのボトルネックを突き止めるのは難しいです。TensorFlowネットワークのプロファイル方法?

編集:Timelineプロファイラは本当に素晴らしいです(https://stackoverflow.com/a/37774470/3632556)。

+4

可能な複製:http://stackoverflow.com/questions/34293714/tensorflow-can-i-measure-the-execution-time-of-individual-operations – user3559888

答えて

2

今のところ最も良い外部の方法はCPU/GPUプロファイラでコンパイルすることですが、これはBUILDtensorflow.bzlファイルのオプションを変更することで手動で行う必要があります(どこには不明)。それはあなた次第です機能は、ほとんどの時間を取っているかについてのプロファイル情報などを入手TensorFlowのコードはswigを介して連結されているので、あなたは、その後、あなたがgperftoolsを使用してpprof

によって視覚化することにより実行することができ

、私は」 pprofでプロフィールを読むときにシンボルを取得するのがどれほど簡単かわかりません。構築されたファイルswake .soにポイントすることができます。

それを試してみて、それがあなたのために働くかどうかお知らせください!

2

TFで各作業に費やされた時間を確認したい場合は、runtime statisticsを使用してテンソルボードで行うことができます。さらに

:ちょうどあなたがtensorboardでそれを見ることができ、それを印刷するよりも

run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE) 
run_metadata = tf.RunMetadata() 
sess.run(<values_you_want_to_execute>, options=run_options, run_metadata=run_metadata) 
your_writer.add_run_metadata(run_metadata, 'step%d' % i) 

よりよい:あなたは、この(上記のリンクで完全な例を確認してください)のような何かをする必要がありますノードをクリックすると、正確な合計メモリ、 計算時間、およびテンソル出力サイズが表示されます。

また、テンソルフローはdebuggerです。ここでそれを使用する方法のチュートリアルです。

[1]: https://www.tensorflow.org/get_started/graph_viz#

+0

現在の(2017年後半、TensorFlow 1.4)の取得方法タイムラインは[ProfilerHook](https://www.tensorflow.org/api_docs/python/tf/train/ProfilerHook)を使用しています。これは、tf.RunOptionsが利用できないtf.EstimatorのMonitoredSessionsで動作します。 – Urs

1

https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler

主な特徴:

測定モデルパラメータ、浮動小数点演算、テンソル形。

プロファイル実行時間、要求されたメモリサイズ、デバイス配置。

チェックポイントテンソルの形状とその値を検査します。

opsを選択的にグループ化、フィルタリング、アカウント作成、オーダーします。

+0

質問に「* TensorFlowネットワークの各ノードの時間コストを計算する方法はありますか?」*ツールを使用して時間コストを計算する方法を示すことで答えを改善できますか? – Pang

+0

リンクが見つからない –

関連する問題