Использование профилировщика Tensorflow с tf.Estimator

Мне нужно использовать профилировщик Tensorflow для профилирования некоторого кода, который по какой-то причине работает медленно. К сожалению, рассматриваемый код использует tf.Estimator, поэтому я не могу понять, как внедрить объект метаданных запуска в вызов сеанса run(), чтобы получить информацию, необходимую профилировщику.

Что я должен делать?


person forefinger    schedule 10.11.2017    source источник


Ответы (3)


tf.estimator использовать tf.train.ProfilerHook работает!

просто добавьте ProfilerHook в TrainSpec хуки!

hook = tf.train.ProfilerHook(
    save_steps=20,
    output_dir=os.path.join(args.model_dir, "tracing"),
    show_dataflow=True,
    show_memory=True)
hooks = [hook]
train_spec = tf.estimator.TrainSpec(
    hooks=hooks,
    input_fn=lambda: input_fn())

затем вы можете получить файл трассировки, например timeline-{}.json, в model_dir/tracing, и открыть хром chrome://tracing для визуализации!

ссылки: https://stackoverflow.com/a/48278275/6494418

person Colin Wang    schedule 11.12.2019

with tf.contrib.tfprof.ProfileContext('/tmp/train_dir', dump_steps=[10]) as pctx: estimator.train() # any thing you want to profile

Затем вы получите файл по адресу /tmp/train_dir/profile_10

Аргументы определены в https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/profiler/profile_context.py

person Jason Liu    schedule 24.10.2018

Используйте ProfileContext, как описано здесь: https://github.com/tensorflow/tensorflow/tree/master/tensorflow/core/profiler . Это позволяет вам профилировать без необходимости получать доступ к сеансу.

person forefinger    schedule 10.11.2017