Как выполнить распределенное обучение с распределением только входного конвейера в Tensorflow?

#python #tensorflow #tensorflow-datasets #distributed-tensorflow

#python #tensorflow #tensorflow-datasets #distributed-tensorflow

Вопрос:

В настоящее время на моем компьютере установлено 4 графических процессора 1080, и у меня довольно мощный процессор для выполнения моего проекта классификации изображений. Однако, поскольку моя модель очень мала, а мои обучающие данные очень велики (не могут вместить весь набор данных в памяти), я должен читать и обрабатывать пакет образцов динамически. Теперь я узнал, что графические процессоры используются только примерно на 50%, в то время как все ядра моего процессора используются полностью.

Итак, одно из решений заключается в том, что я хотел бы разделить свой входной конвейер (я использую tf.data.dataset в качестве входного конвейера) на другую машину (машины) без графических процессоров, чтобы ускорить входной конвейер, чтобы я мог больше использовать графические процессоры. Есть два варианта, которыми я могу распределить свой входной конвейер: 1) Просто распределите увеличение данных, и таким образом, одна машина прочитает все необработанное изображение и отправит на другую машину, а затем отправит его обратно на машины с графическими процессорами для обучения. 2) Просто скопируйте весь / часть dataset на все компьютеры, работающие только с CPU, и они независимо обработают свой собственный входной конвейер и отправят его обратно машинам с графическими процессорами для обучения.

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