Предварительная обработка на нескольких процессорах параллельно и подача выходных данных в tensorflow, который обучается на нескольких графических процессорах

#multithreading #multiprocessing #tensorflow

#многопоточность #многопроцессорная обработка #tensorflow

Вопрос:

Я пытаюсь использовать Tensorflow для своей работы над проблемой классификации.

Перед подачей входных данных в виде изображений я хочу выполнить некоторую предварительную обработку изображений. Я хотел бы выполнить эту предварительную обработку на нескольких ядрах процессора параллельно и передать их в график TensorFlow, который я хочу запустить в настройке с несколькими графическими процессорами (у меня 2 графических процессора TitanX).

Причина, по которой я хочу эту настройку, заключается в том, что, пока графический процессор выполняет обучение, процессоры продолжают выполнять свою работу по предварительной обработке и, следовательно, после каждой итерации графический процессор не простаивает. Я изучал API TensorFlow для этого, но не смог найти что-то, что конкретно касается такого сценария.

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

У меня есть два конкретных вопроса :

  • Как я могу добиться этой настройки?
  • Хорошая ли идея иметь такую настройку?

Наглядный пример был бы большим подспорьем.

Комментарии:

1. Начальная модель, предоставленная Google в репозитории tensorflow / models, делает именно это.

2. Так ли это? Теперь посмотрим глубже.

3. Кажется, это оно 🙂