Как профилировать модель тензорного потока, работающую на tf-обслуживание? - PullRequest
0 голосов
/ 25 января 2019

Как я знаю, когда я запускал модель тензорного потока на скрипте Python, я мог использовать следующий фрагмент кода для профилирования временной шкалы каждого блока в модели.

from tensorflow.python.client import timeline

options = tf.RunOptions(trace_level=tf.RunOptions.FULL_TRACE)
run_metadata = tf.RunMetadata()
batch_positive_score = sess.run([positive_score], feed_dict, options=options, run_metadata=run_metadata)
fetched_timeline = timeline.Timeline(run_metadata.step_stats)
chrome_trace = fetched_timeline.generate_chrome_trace_format()
with open('./result/timeline.json', 'w') as f:
    f.write(chrome_trace)

Но как профилировать модель с нагрузкой на тензор потока-обслуживания?

1 Ответ

0 голосов
/ 03 мая 2019

Я думаю, что вы можете использовать tf.profiler даже во время обслуживания, потому что это, наконец, график Tensorflow, и изменения, внесенные во время обучения (включая профилирование, как я понимаю), будут отражены и в обслуживании.

Найдите приведенный ниже код Tensorflow:

# User can control the tracing steps and
# dumping steps. User can also run online profiling during training.
#
# Create options to profile time/memory as well as parameters.
builder = tf.profiler.ProfileOptionBuilder
opts = builder(builder.time_and_memory()).order_by('micros').build()
opts2 = tf.profiler.ProfileOptionBuilder.trainable_variables_parameter()

# Collect traces of steps 10~20, dump the whole profile (with traces of
# step 10~20) at step 20. The dumped profile can be used for further profiling
# with command line interface or Web UI.
with tf.contrib.tfprof.ProfileContext('/tmp/train_dir',
                                      trace_steps=range(10, 20),
                                      dump_steps=[20]) as pctx:
  # Run online profiling with 'op' view and 'opts' options at step 15, 18, 20.
  pctx.add_auto_profiling('op', opts, [15, 18, 20])
  # Run online profiling with 'scope' view and 'opts2' options at step 20.
  pctx.add_auto_profiling('scope', opts2, [20])
  # High level API, such as slim, Estimator, etc.
  train_loop()

После этого мы можем запустить следующие команды в командной строке:

bazel-bin/tensorflow/core/profiler/profiler \
    --profile_path=/tmp/train_dir/profile_xx
tfprof> op -select micros,bytes,occurrence -order_by micros

# Profiler ui available at: https://github.com/tensorflow/profiler-ui
python ui.py --profile_context_path=/tmp/train_dir/profile_xx

Код для визуализации времени и памяти:

# The following example generates a timeline.
tfprof> graph -step -1 -max_depth 100000 -output timeline:outfile=<filename>

generating trace file.

******************************************************
Timeline file is written to <filename>.
Open a Chrome browser, enter URL chrome://tracing and load the timeline file.
******************************************************

Атрибут Время выполнения графика TensorFlow для ваших кодов Python:

tfprof> code -max_depth 1000 -show_name_regexes .*model_analyzer.*py.* -select micros -account_type_regexes .* -order_by micros

Показать переменные модели и количество параметров:

tfprof> scope -account_type_regexes VariableV2 -max_depth 4 -select params

Показать самые дорогиетипы операций:

tfprof> op -select micros,bytes,occurrence -order_by micros

Автоматический профиль:

tfprof> advise

Для получения более подробной информации по этому вопросу вы можете обратиться по ссылкам ниже:

Понимать все упомянутые классына этой странице =>

https://www.tensorflow.org/api_docs/python/tf/profiler

Код подробно указан в ссылке ниже:

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/core/profiler/README.md

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...