Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье вы узнаете о распределенном обучении и о том, как Машинное обучение Azure поддерживает его для моделей глубокого обучения.
В распределенном обучении рабочая нагрузка для тренировки модели распределяется и делится между несколькими мини-процессорами, называемыми узлами-работниками. Эти рабочие узлы работают параллельно, чтобы ускорить обучение модели. Распределенное обучение можно использовать для традиционных моделей машинного обучения, но лучше подходит для вычислительных и временных задач, таких как глубокое обучение для обучения глубоких нейронных сетей.
Глубокое обучение и распределенное обучение
Существует два основных типа распределенного обучения: параллелизм данных и параллелизм моделей. Для распределенного обучения моделей глубокого обучения пакет SDK Машинное обучение Azure в Python поддерживает интеграцию с PyTorch и TensorFlow. Оба являются популярными платформами, которые используют параллелизм данных для распределенного обучения и могут использовать Horovod для оптимизации скорости вычислений.
Для моделей машинного обучения, которые не требуют распределенного обучения, см. в документации Обучение моделей с Azure Machine Learning о различных способах обучения моделей с использованием Python SDK.
Параллелизм данных
Параллелизм данных — это самый простой способ реализации двух подходов к распределенному обучению, которого достаточно для большинства вариантов использования.
В этом подходе данные делятся на секции, где количество секций равно общему количеству доступных узлов в вычислительном кластере или бессерверных вычислениях. Модель копируется в каждом из этих рабочих узлов, и каждый узел работает с собственным подмножеством данных. Имейте в виду, что каждый узел должен иметь емкость для поддержки модели, которая обучается, то есть вся модель должна соответствовать каждому узлу.
Этот подход показан на схеме ниже.
Каждый узел независимо рассчитывает ошибки между своими прогнозами для своих обучающих выборок и размеченными выходными данными. В свою очередь, каждый узел обновляет свою модель на основе ошибок и должен сообщить обо всех изменениях другим узлам, чтобы обновить соответствующие модели. Рабочие узлы должны синхронизировать параметры модели или градиенты в конце пакетного вычисления, чтобы убедиться, что они обучают согласованную модель.
Параллелизм модели
В параллелизме модели, также известном как параллелизм сети, модель сегментируется в разные части, которые могут выполняться одновременно в разных узлах, и каждый из них выполняется на одних и том же данных. Масштабируемость этого метода зависит от степени параллелизации задач алгоритма, и это сложнее реализовать, чем параллелизм данных.
В модельном параллелизме рабочие узлы должны синхронизировать общие параметры, как правило, один раз для каждого шага прямого или обратного распространения. Кроме того, более крупные модели не являются проблемой, так как каждый узел работает с подразделом модели для тех же обучающих данных.