Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can I measure the execution time of individual operations with TensorFlow?

Tags:

tensorflow

I know I can measure the execution time of a call to sess.run(), but is it possible to get a finer granularity and measure the execution time of individual operations?

like image 411
user3559888 Avatar asked Dec 15 '15 15:12

user3559888


2 Answers

I have used the Timeline object to get the time of execution for each node in the graph:

  • you use a classic sess.run() but also specify the optional arguments options and run_metadata
  • you then create a Timeline object with the run_metadata.step_stats data

Here is an example program that measures the performance of a matrix multiplication:

import tensorflow as tf from tensorflow.python.client import timeline  x = tf.random_normal([1000, 1000]) y = tf.random_normal([1000, 1000]) res = tf.matmul(x, y)  # Run the graph with full trace option with tf.Session() as sess:     run_options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)     run_metadata = tf.RunMetadata()     sess.run(res, options=run_options, run_metadata=run_metadata)      # Create the Timeline object, and write it to a json     tl = timeline.Timeline(run_metadata.step_stats)     ctf = tl.generate_chrome_trace_format()     with open('timeline.json', 'w') as f:         f.write(ctf) 

You can then open Google Chrome, go to the page chrome://tracing and load the timeline.json file. You should see something like:

timeline

like image 66
Olivier Moindrot Avatar answered Oct 02 '22 09:10

Olivier Moindrot


There is not yet a way to do this in the public release. We are aware that it's an important feature and we are working on it.

like image 35
Ian Goodfellow Avatar answered Oct 02 '22 08:10

Ian Goodfellow