Обучение модели Keras на движке машинного обучения с несколькими рабочими

Я построил модель семантической сегментации Keras (тензорный бэкэнд) и пытаюсь обучить ее на движке Google Cloud ML. У меня есть около 200000 изображений (256x256) для обучения небольшими партиями (10) в течение примерно 100 эпох. 1 эпоха заняла почти 25 часов, когда я использовал только мастер-устройство типа complex_model_m_gpu.

Я не уверен, как модели Keras адаптируются к обучающим устройствам с несколькими графическими процессорами (например, complex_model_m_gpu). Никакой документации по этому поводу нет, но только в отношении распределенного обучения TensorFlow. Как я могу наилучшим образом использовать ресурсы, доступные в движке машинного обучения, для быстрого обучения моей модели? Как использование нескольких воркеров влияет на процесс обучения. Когда я добавляю воркеров в свой стек, это показывает, что мастер и воркер оба выполняют 1 эпоху, независимо друг от друга, и они оба сохраняют разные контрольные точки. Это кажется контрпродуктивным.


person Nikhil Saraf    schedule 18.07.2018    source источник


Ответы (1)


Использование более 1 графического процессора требует некоторых изменений в вашем коде. Вот одно руководство, которое может оказаться полезным. Обратите внимание на следующие строки кода:

# we'll store a copy of the model on *every* GPU and then combine
# the results from the gradient updates on the CPU
with tf.device("/cpu:0"):
    # initialize the model
    model = MiniGoogLeNet.build(width=32, height=32, depth=3,
        classes=10)

# make the model parallel
model = multi_gpu_model(model, gpus=G)

Как правило, гораздо эффективнее использовать 1 машину с 1/2/4/8 GPUS, чем использовать несколько машин. Однако, если вы хотите масштабировать больше, чем количество графических процессоров на одном компьютере, model_to_estimator и вызовите train_and_evaluate в результате Estimator. Keras не поддерживает работу с несколькими машинами, поэтому, если вы этого не сделаете, каждый рабочий будет пытаться работать независимо, как вы заметили.

person rhaertel80    schedule 18.07.2018