Я прошел это руководство по распределенному tenorflow в рамках эксперимента с ML Engine, и я хочу определить свой собственный пользовательский уровень вместо уровня STANDARD_1
, который они используют в своих config.yaml. При использовании tf.estimator.Estimator
API требуются ли какие-либо дополнительные изменения кода для создания настраиваемого уровня любого размера? Например, в статье говорится: «Если вы распределите 10 000 пакетов между 10 рабочими узлами, каждый узел будет работать примерно с 1000 пакетами». так что это может означать, что файл config.yaml ниже был бы возможен
trainingInput:
scaleTier: CUSTOM
masterType: complex_model_m
workerType: complex_model_m
parameterServerType: complex_model_m
workerCount: 10
parameterServerCount: 4
Требуются ли какие-либо изменения кода в учебнике по mnist, чтобы использовать эту настраиваемую конфигурацию? Будет ли это возможным распределить количество пакетов X между 10 рабочими, как предлагает учебник? Я покопался в некоторых других примерах ML Engine и обнаружил, что reddit_tft использует распределенное обучение, но, похоже, они определили свои собственные runconfig.cluster_spec
в своем пакете тренеров: task.py, даже если они также используют API-интерфейс оценщика. Итак, нужна ли дополнительная настройка? На данный момент я понимаю, что при использовании API-интерфейса оценщика (даже в рамках вашей собственной определенной модели) не должно быть никаких дополнительных изменений.
Изменится ли что-нибудь из этого, если в config.yaml указано использование графических процессоров? В этой статье для API-интерфейса оценщика предлагается «Без кода изменения необходимы, пока ваш ClusterSpec настроен правильно. Если кластер представляет собой смесь процессоров и графических процессоров, сопоставьте имя задания ps с процессорами, а имя рабочего задания - с графическими процессорами ». Однако, поскольку config.yaml конкретно определяет тип машины для серверов параметров и рабочих, я ожидаю, что в ML-Engine ClusterSpec будет правильно настроен на основе файла config.yaml. Однако я не могу найти документацию по ml-движку, подтверждающую, что для использования графических процессоров не требуется никаких изменений.
Наконец, в ML-Engine мне интересно, есть ли какие-либо способы идентифицировать использование различных конфигураций? Строка «Если вы распределите 10 000 пакетов между 10 рабочими узлами, каждый узел будет работать примерно с 1000 пакетами». предполагает, что использование дополнительных воркеров будет примерно линейным, но у меня нет интуиции, как определить, нужны ли дополнительные серверы параметров? Что можно было бы проверить (на облачных или тензорных панелях), чтобы определить, достаточно ли у них количества серверов параметров?