Как сделать так, чтобы тензорный поток использовал все ядра процессора для сеанса? - PullRequest
2 голосов
/ 24 октября 2019

Я хочу развернуть модель keras с тензорным потоком. Модель преобразуется из модели keras .h5 в файл .pb. (исходная модель взята из [здесь] [https://github.com/shaoanlu/face_toolbox_keras))

). При выполнении логического вывода с кератами на этой модели, если я использую только свой процессор, 12 ядер работают, и логический вывод занимает в среднем 0,7 с.

При преобразовании модели и использовании обслуживания тензорного потока она использует только одно ядро ​​и занимает в среднем 2,7 с.

Я пробовал устанавливать такие параметры, как --tensorflow_session_parallelism, --tensorflow_intra_op_parallelism и --tensorflow_inter_op_parallelism. до 12, но ничего не меняется, только одно ядро ​​работает, если смотреть сверху изнутри контейнера tfserving.

Я попытался также скомпилировать тензор потока, обслуживающий архитектуру моей машины, и я получаю небольшое улучшение (2.7s до 2,5 с), но я не могу контролировать количество ядер, используемых в сеансе.

Я предположил, что хорошо, что другие ядра доступны для одновременных запросов, но я хотел бы иметь больший контроль.

1 Ответ

2 голосов
/ 04 ноября 2019

Проблема может быть из-за constant folding pass. Использование tf.placeholder должно решить проблему.

                if args.const_fold:
                    A = tf.ones([size, size], name=("A%s" % i))
                    B = tf.ones([size, size], name=("B%s" % i))
                else:
                    A_name = "A%s" % i
                    B_name = "B%s" % i
                    A = tf.placeholder(tf.float32, shape=[size, size], name=A_name)
                    B = tf.placeholder(tf.float32, shape=[size, size], name=B_name)
                    feed["%s:0" % A_name] = np.random.rand(size, size)
                    feed["%s:0" % B_name] = np.random.rand(size, size)

Насколько я понимаю, ваш код может быть таким, как показано в if block, как показано выше. Изменение на else block должно решить проблему.

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

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