Я пытаюсь запустить распределенное учебное задание GCMLE и получаю следующее сообщение об ошибке:
An error was raised. This may be due to a preemption in a connected worker or parameter server. The current session will be closed and a new session will be created. Error: OS Error
Пакет тренера представляет собой пользовательский оценщик, моделируемый во многом так же, как пользовательская перепись cloudml-samples
оценщик: https://github.com/GoogleCloudPlatform/cloudml-samples/tree/master/census/customestimator/trainer. Можно с уверенностью сказать, что файлы task.py
в значительной степени идентичны, а в файле model.py
функции input_fn()
и parse_csv()
одинаковы, и единственные реальные различия заключаются в спецификеmy model_fn()
.
Если я настрою свою модель для работы с одним standard_p100
GPU, я смогу тренироваться со скоростью ~ 15 шагов в секунду.Тем не менее, если я обновлю свою конфигурацию до распределенного параметра с 4 рабочими и 3 серверами параметров (см. Конфигурацию ниже), то появится сообщение об ошибке вытеснения, и 10 шагов займут ~ 600 секунд ...
config-distribution.yaml:
trainingInput:
scaleTier: CUSTOM
masterType: standard_p100
workerType: standard_p100
parameterServerType: large_model
workerCount: 3
parameterServerCount: 3
Если я использую ту же самую конфигурацию с образцом пользовательской оценки переписи, то модель будет работать быстрее, чем ожидалось, и не столкнется с ошибками выгрузки.Я пытался изменить пример переписи, чтобы точнее имитировать мой точный код, но все еще не смог воспроизвести ошибку.
Кто-нибудь сталкивался с подобными проблемами вытеснения при попытке обучить работу распределенного двигателя ml?Любой совет, как я мог бы лучше отладить проблему?Единственный совет, который я нашел в Интернете, предлагал, чтобы количество серверов параметров было как минимум вдвое меньше числа рабочих (именно поэтому я увеличил число серверов до 3 параметров), но мне все еще не повезло.
Чтобы добавить больше контекста из журналов, это типичный (повторяющийся) паттерн, который происходит, когда я пытаюсь тренироваться в распределенной настройке:
master-replica-0 loss = 16.5019, step = 53 (124.505 sec)
master-replica-0 An error was raised. This may be due to a preemption in a connected worker or parameter server. The current session will be closed and a new session will be created. Error: OS Error
master-replica-0 Graph was finalized.
master-replica-0 Restoring parameters from gs://.../model.ckpt-0
master-replica-0 Running local_init_op.
master-replica-0 Done running local_init_op.
master-replica-0 Saving checkpoints for 0 into gs://...
master-replica-0 Skip the current checkpoint eval due to throttle secs (600 secs).
master-replica-0 An error was raised. This may be due to a preemption in a connected worker or parameter server. The current session will be closed and a new session will be created. Error: OS Error
И затем этот цикл повторяется ...
ОБНОВЛЕНИЕ
Я увеличил количество серверов параметров до 10, а количество шагов в секунду увеличилось до 5-10 (все еще меньше 15 с одним GPU), и ошибка все еще произошла, нонемного спорадически.Что бы это подсказало, если бы помогло больше серверов параметров?Процессор и объем памяти очень низок независимо (<5-10%), поэтому не похоже, что PS перегружены, но модель имеет много переменных для обновления (встраивание слов по 50 тыс. С большим количеством измерений)).Может ли это как-то способствовать возникновению проблем? </p>