Для глубокого обучения нейронных сетей (DNN) с помощью TensorFlow служба «Машинное обучение Azure» предоставляет пользовательский класс TensorFlow средства оценки Estimator. Средство оценки TensorFlow в пакете Azure SDK (не следует путать с классом tf.estimator.Estimator) позволяет легко отправлять задания обучения TensorFlow для одноузловых и распределенных запусков в вычислительных ресурсах Azure. Обучение с помощью средства оценки TensorFlow похоже на использование базового средства оценкиEstimator, поэтому сначала прочтите статью с практическим руководством и изучите изложенные понятия. Чтобы выполнить задание TensorFlow, следует создать объект TensorFlow. У вас уже должен быть создан объект compute_target целевого вычислительного ресурса. Укажем следующие параметры в конструкторе TensorFlow. Так как вы работаете со средством оценки TensorFlow, контейнер, используемый для обучения, по умолчанию будет содержать пакет TensorFlow и связанные зависимости, необходимые для обучения в ЦП и GPU. Затем отправьте задание TensorFlow: Средство оценки TensorFlow также позволяет обучать модели в кластерах ЦП и GPU виртуальных машин Azure. Распределенное обучение TensorFlow проводится с помощью нескольких вызовов API, при этом служба машинного обучения Azure в фоновом режиме будет управлять инфраструктурой и функциями оркестрации, необходимыми для выполнения этих рабочих нагрузок. Служба машинного обучения Azure поддерживает два метода распределенного обучения в TensorFlow. Horovod — это поддерживающая алгоритм ring-allreduce платформа на основе открытого исходного кода для распределенного обучения, разработанная Uber. Чтобы запустить распределенное обучение TensorFlow с помощью платформы Horovod, создайте объект TensorFlow следующим образом: В приведенном выше коде показаны следующие новые параметры в конструкторе TensorFlow. В приведенном выше примере будет выполняться распределенное обучение с двумя рабочими ролями — по одной рабочей роли для каждого узла. Horovod и его зависимости будут установлены автоматически, поэтому их можно просто импортировать в сценарий обучения train.py следующим образом: И, наконец, отправьте задание TensorFlow: Можно также запустить собственное распределенное обучение TensorFlow, которое использует модель сервера параметров. В этом методе обучение проводится в кластере серверов параметров и рабочих ролей. Во время обучения рабочие роли вычисляют градиенты, а серверы параметров выполняют статистическую обработку градиентов. Создайте объект TensorFlow: Обратите внимание на следующие параметры в конструкторе TensorFlow в приведенном выше коде. Вам также потребуются сетевые адреса и порты кластера для tf.train.ClusterSpec, поэтому служба машинного обучения Azure автоматически задает переменную среды TF_CONFIG. Переменная среды TF_CONFIG представляет собой строку JSON. Ниже приведен пример переменной для сервера параметров. Если вы используете высокоуровневый API tf.estimator TensorFlow, TensorFlow проанализирует эту переменную TF_CONFIG и сформирует спецификацию кластера. Если для обучения вы используете API более низкого уровня, вам необходимо самостоятельно проанализировать переменнуюTF_CONFIG и создать tf.train.ClusterSpec в коде обучения. В этом примере эти действия выполняются в сценарии обучения следующим образом: Завершив написание сценария обучения и создание объекта TensorFlow, отправьте задание обучения: Записные книжки по распределенному глубокому обучению см. в репозитории GitHub, раздел Узнайте, как запускать записные книжки, следуя указаниям из статьи о том,как изучить эту службу с помощью записных книжек Jupyter. Developer Advocate