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