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

Я делаю некоторый тестовый код для моих моделей и пытаюсь выполнить вывод с различным количеством потоков.Код выглядит следующим образом:

import tensorflow as tf

def benchmark_model(model_config, num_threads):
    # not sure if this is required but still..
    tf.reset_default_graph()

    # expect this session context manager to reset its state on every call ??
    with tf.Session(graph=tf.Graph(),
                config=tf.ConfigProto(
                    intra_op_parallelism_threads=num_threads,
                    inter_op_parallelism_threads=num_threads)) as session:
        graph = tf.get_default_graph()
        tf.saved_model.loader.load(session, [tf.saved_model.tag_constants.SERVING], model_config.export_dir)

        # some number of iteration and printing out timers
        session.run(...)

for num_thread in [1, 16, 32, 64]:
    benchmark_model(model_config, num_thread) 

Для данной модели я наблюдаю, что результаты профилирования одинаковы.Результат определяется числом потоков, сконфигурированных для первого сеанса (в данном случае «1»).

Когда я изменяю порядок списка [1, 16, 32, 64] -> [64, 32, 16, 1]: я получаю результаты профилирования для num_threads = 64.

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

Способ, которым я проверил и узнал, что мой сеанс повторно использует старую конфигурацию, заключается в том, что изначально я былпросто запускаю скрипт python для одной конфигурации за раз, чтобы я знал, что результаты для потоков 1 против 64 сильно отличаются, но когда я пытался запустить его в цикле, он не работает.Любые указатели на то, что происходит и как решить.

...