Распределенное обучение с помощью Машинного обучения Azure

В этой статье вы узнаете о распределенном обучении и о том, как Машинное обучение Azure поддерживает его для моделей глубокого обучения.

В распределенном обучении рабочая нагрузка для обучения модели разделяется и разделяется между несколькими мини-процессорами, называемыми рабочими узлами. Эти рабочие узлы работают параллельно, чтобы ускорить обучение модели. Распределенное обучение можно использовать для традиционных моделей машинного обучения, но лучше подходит для вычислительных и временных задач, таких как глубокое обучение для обучения глубоких нейронных сетей.

Глубокое обучение и распределенное обучение

Существует два основных типа распределенного обучения: параллелизм данных и параллелизм моделей. Для распределенного обучения моделей глубокого обучения пакет SDK Машинное обучение Azure в Python поддерживает интеграцию с PyTorch и TensorFlow. Оба являются популярными платформами, которые используют параллелизм данных для распределенного обучения и могут использовать Horovod для оптимизации скорости вычислений.

Сведения о моделях машинного обучения, которые не требуют распределенного обучения, см. в разделе "Обучение моделей" с помощью Машинное обучение Azure различных способов обучения моделей с помощью пакета SDK для Python.

Параллелизм данных

Параллелизм данных — это самый простой способ реализации двух подходов к распределенному обучению, которого достаточно для большинства вариантов использования.

В этом подходе данные делятся на секции, где количество секций равно общему количеству доступных узлов в вычислительном кластере или бессерверных вычислениях. Модель копируется в каждом из этих рабочих узлов, и каждый узел работает с собственным подмножеством данных. Имейте в виду, что каждый узел должен иметь емкость для поддержки модели, которая обучается, то есть вся модель должна соответствовать каждому узлу.

Этот подход показан на схеме ниже.

Схема парралелизма данных, показывающая модель, скопированную в рабочие узлы.

Каждый узел независимо рассчитывает ошибки между прогнозами для учебных примеров и выходных данных с метками. В свою очередь, каждый узел обновляет свою модель на основе ошибок и должен передать все изменения на другие узлы, чтобы обновить соответствующие модели. Рабочие узлы должны синхронизировать параметры модели или градиенты в конце пакетного вычисления, чтобы убедиться, что они обучают consis режим палатки l.

Параллелизм модели

В параллелизме модели, также известном как параллелизм сети, модель сегментируется в разные части, которые могут выполняться одновременно в разных узлах, и каждый из них выполняется на одних и том же данных. Масштабируемость этого метода зависит от степени параллелизации задач алгоритма, и это сложнее реализовать, чем параллелизм данных.

В случае параллелизма модели рабочие узлы должны синхронизировать общие параметры, как правило, один раз для каждого этапа перенаправления вперед или обратного распространения. Кроме того, более крупные модели не являются проблемой, так как каждый узел работает с подразделом модели для тех же обучающих данных.