Как провести распределенное обучение с распределением только входного конвейера в Tensorflow?
В настоящее время у меня есть 4 1080 графических процессоров на моей машине, и у меня довольно мощный процессор для выполнения моего проекта классификации изображений. Однако, так как моя модель очень мала, но мои тренировочные данные очень велики (не может вместить весь набор данных в памяти), я должен динамически читать и обрабатывать партии образцов. Теперь я узнал, что графические процессоры используются только на 50%, в то время как все мои процессорные ядра полностью загружены.
Таким образом, одним из решений является то, что я хотел бы разделить мой входной конвейер (я использую tf.data.dataset в качестве входного конвейера) на другую машину (и) без графических процессоров, чтобы ускорить входной конвейер, чтобы я мог получить больше использования на графических процессорах. Есть два варианта, которыми я могу распределить свой входной конвейер: 1) Просто распределите увеличение данных, и поэтому один компьютер читает все необработанное изображение и отправляет его на другой компьютер, а затем отправляет его обратно на компьютеры с графическими процессорами для обучения. 2) Просто скопируйте весь / часть набора данных на все машины, использующие только процессор, и они независимо обрабатывают свой собственный входной конвейер и отправляют его обратно на машины с графическими процессорами для обучения.
Я думаю, что будет гораздо проще реализовать вариант 2). У меня нет опыта в распределенном обучении кодированию на разных машинах. Все примеры, которые я читаю онлайн, посвящены распределенному обучению на нескольких машинах с собственными графическими процессорами. В моем случае, поскольку я собираюсь распространять только входной конвейер, есть ли более простые примеры реализации для этой цели?