Правильный способ запуска распределенного обучения в ML Engine

Я пытаюсь обучить свою модель (которая не построена с помощью tf.estimator или tf.keras), используя распределенное обучение в ML Engine.

Какие шаги я должен предпринять, чтобы запустить распределенное обучение в ML Engine?

Я нашел следующие рекомендации:

Итак, если первое указано в командной строке, означает ли это, что мне не нужно ничего делать со вторым, потому что ML Engine каким-то образом заботится о распределении моего графика по устройствам? Или мне нужно сделать и то, и другое?

А также, что произойдет, если я вручную укажу устройства, используя:

with tf.device('/gpu:0/1/2/etc')

..и затем запустить команду с --scale-tier?


person user912830823    schedule 15.05.2018    source источник


Ответы (1)


Возможны два сценария:

- Вы хотите использовать машины с процессором:

В этом случае ты прав. Использование параметра --scale-tier достаточно, чтобы задание автоматически распределялось в ML Engine.

У вас есть несколько вариантов шкалы {1}.

- Вы хотите использовать машины с графическим процессором:

В этом случае вам необходимо определить файл config.yaml, который описывает нужные вам параметры графического процессора, и запустить команду gcloud для запуска задания ML Engine с config.yaml в качестве параметра {2}.

Если вы используете with tf.device('/gpu:0/1/2/etc') в своем коде, вы заставляете использовать это устройство, и это перезаписывает нормальное поведение. {3}.

{1}: https://cloud.google.com/ml-engine/reference/rest/v1/projects.jobs#scaletier.

{2}: https://cloud.google.com/ml-engine/docs/tensorflow/using-gpus#requesting_gpu-enabled_machines

{3}: https://www.tensorflow.org/programmers_guide/using_gpu

person J.L Valtueña    schedule 15.05.2018
comment
Большое спасибо! Верно ли, что в config.yaml я могу указать типы машин / устройств, которые мне нужны: т.е. конкретные устройства с графическим процессором? если да, то как только это будет сделано, обрабатывает ли MLE распределение моего графика между запрошенными машинами / устройствами? Или мне нужно как-то делать это вручную? Другими словами, достаточно ли добавления config.yaml для запуска распределенного обучения с помощью MLE (как он работает с процессорами) или мне нужно что-то еще делать? - person user912830823; 16.05.2018
comment
Да, достаточно запустить распределенное обучение ML Engine, для этого нужен параметр scale-tier. По умолчанию, если вы выбираете машины с графическим процессором, внутренняя работа с использованием ЦП, ГП или обоих должна выполняться автоматически. Вам нужно изменять свой код только в некоторых ситуациях, когда вы хотите, чтобы какой-то код выполнялся определенным устройством. - person J.L Valtueña; 16.05.2018