Попытка выполнить вывод на нескольких процессорах - PullRequest
0 голосов
/ 19 ноября 2018

В последнее время я работал с API обнаружения объектов Tensorflow, я обучил ssd_mobilenet_v2 , используя свои собственные данные, и модель работает, как и ожидалось.

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

Я попытался добавить параметры device_count={ "CPU": n_cpus }, inter_op_parallelism_threads=n_inter, intra_op_parallelism_threads=n_intra, в методе tf.Sessions().Моя цель состояла в том, чтобы указать количество используемых ядер и количество потоков, которые будут созданы для ускорения, но это не повлияло на производительность.

После этого я также попытался закрепитьопределенные процессы для определенных ядер, используя следующий метод: with tf.device('/cpu:0'):.

Использование with tf.device('/cpu:0'): с такими тривиальными операциями, как tf.matmul, действительно повышает производительность.Я также мог видеть производительность и загрузку процессора, напр.CPU: 0 использовался на уровне 98-99% (это было то, что я искал).

Однако, когда я попробовал тот же подход tf.device() с выводом модели, загрузка ЦП вернулась к настройке по умолчанию, где каждая рабочая нагрузка распределяется между всеми ядрами (один оператор распределяется между ядрами).

Я хочу знать, может ли часть вывода работать параллельно на нескольких ядрах ЦП.Мой интерес заключается в параллельном выполнении разных операций вывода на разных ядрах.До сих пор мне не удавалось сделать эту работу, возможно, моя логика неверна, я был бы признателен за некоторые рекомендации :)

Дополнительная информация: Я использую TensorFlow 1.11.0, версия процессора

...