рекомендуемый способ профилирования распределенного тензорного потока - PullRequest
0 голосов
/ 26 июня 2018

В настоящее время я использую API оценки тензорного потока для обучения моей модели tf. Я использую распределенное обучение, которое состоит из почти 20-50 рабочих и 5-30 серверов параметров в зависимости от размера данных обучения. Поскольку у меня нет доступа к сеансу, я не могу использовать метаданные выполнения a = с полной трассировкой для просмотра трассировки Chrome. Я вижу, что есть два других подхода:

1) tf.profiler.profile
2) tf.train.profilerhook

Я специально использую tf.estimator.train_and_evaluate(estimator, train_spec, test_spec)

, где моя оценка является предварительно построенной оценкой.

Может ли кто-нибудь дать мне некоторое руководство (конкретные примеры кода и указатели кода будут очень полезны, так как я очень плохо знаком с тензорным потоком), каков рекомендуемый способ оценки профиля? Получают ли два подхода разную информацию или служат одной и той же цели? Также рекомендуется один над другим?

1 Ответ

0 голосов
/ 17 июля 2019

Есть две вещи, которые вы можете попробовать:

ProfilerContext

https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/profiler/profile_context.py Пример использования:

with tf.contrib.tfprof.ProfileContext('/tmp/train_dir') as pctx:
  train_loop()

ProfilerService

https://www.tensorflow.org/tensorboard/r2/tensorboard_profiling_keras

Вы можете запустить ProfilerServer через tf.python.eager.profiler.start_profiler_server(port) на всех рабочих и серверах параметров. И используйте TensorBoard для захвата профиля.

Обратите внимание, что это очень новая функция, вы можете использовать tf-nightly.

...