Class ProfilerHook
Inherits From: SessionRunHook
Defined in tensorflow/python/training/basic_session_run_hooks.py
.
Captures CPU/GPU profiling information every N steps or seconds.
This produces files called "timeline-
For more information see: https://github.com/catapult-project/catapult/blob/master/tracing/README.md
__init__
__init__(
save_steps=None,
save_secs=None,
output_dir='',
show_dataflow=True,
show_memory=False
)
Initializes a hook that takes periodic profiling snapshots.
options.run_metadata
argument of tf.Session.Run
is used to collect
metadata about execution. This hook sets the metadata and dumps it in Chrome
Trace format.
Args:
save_steps
:int
, save profile traces every N steps. Exactly one ofsave_secs
andsave_steps
should be set.save_secs
:int
orfloat
, save profile traces every N seconds.output_dir
:string
, the directory to save the profile traces to. Defaults to the current directory.show_dataflow
:bool
, if True, add flow events to the trace connecting producers and consumers of tensors.show_memory
:bool
, if True, add object snapshot events to the trace showing the sizes and lifetimes of tensors.
Methods
after_create_session
after_create_session(
session,
coord
)
Called when new TensorFlow session is created.
This is called to signal the hooks that a new session has been created. This
has two essential differences with the situation in which begin
is called:
- When this is called, the graph is finalized and ops can no longer be added to the graph.
- This method will also be called as a result of recovering a wrapped session, not only at the beginning of the overall session.
Args:
session
: A TensorFlow Session that has been created.coord
: A Coordinator object which keeps track of all threads.
after_run
after_run(
run_context,
run_values
)
before_run
before_run(run_context)
begin
begin()
end
end(session)
Called at the end of session.
The session
argument can be used in case the hook wants to run final ops,
such as saving a last checkpoint.
If session.run()
raises exception other than OutOfRangeError or
StopIteration then end()
is not called.
Note the difference between end()
and after_run()
behavior when
session.run()
raises OutOfRangeError or StopIteration. In that case
end()
is called but after_run()
is not called.
Args:
session
: A TensorFlow Session that will be soon closed.