Показатель

  • Вступление
  • Типы парадигм
  • Синхронизация против. Асинхронное обучение
  • Типы распределенной стратегии
  • Заключение

Вступление

Обучение модели машинного обучения - очень трудоемкая задача. По мере увеличения размера наборов данных становится очень трудно обучать модели в течение ограниченного периода времени. Для решения этого типа задач используются подходы распределенного обучения. Используя распределенное обучение, мы можем обучать очень большие модели и сокращать время обучения. Tensorflow предоставляет высококачественный API для обучения ваших моделей распределенным способом с минимальными изменениями кода.

Типы парадигм

Для распределенного обучения используются два типа парадигм.

  1. Параллелизм данных: при параллелизме данных модели реплицируются на разные устройства (GPU) и обучаются на пакетах данных.
  2. Параллелизм моделей. Когда модели слишком велики, чтобы поместиться на одном устройстве, они могут быть распределены по множеству устройств.

Синхронизация и асинхронное обучение

Есть два распространенных способа распределения обучения с параллелизмом данных.

  • Синхронное обучение (поддерживается через архитектуру all-reduce): все устройства (графические процессоры) обучаются по разным фрагментам входных данных с синхронизацией и агрегированием градиента на каждом шаге. Существуют три общие стратегии, которые входят в синхронное обучение
  • Асинхронное обучение (поддерживается через архитектуру сервера параметров): все рабочие независимо проходят обучение по входным данным и асинхронно обновляют переменные.

Типы распределенной стратегии

  1. Зеркальная стратегия
  • Работал на одной машине / работнике и нескольких графических процессорах
  • Модель (архитектура нейронной сети) реплицируется на все графические процессоры.
  • Каждая модель обучается на разных срезах данных, и обновление веса выполняется с использованием эффективных алгоритмов связи между устройствами (алгоритмы полного сокращения), таких как иерархическое копирование, сокращение до одного устройства, NCCL (по умолчанию).

Как вы видите на рисунке, нейронная сеть, имеющая два уровня (уровень A, уровень B), реплицируется на каждом графическом процессоре. Каждый графический процессор обучается на срезе данных, во время обратного распространения используется алгоритм взаимодействия между устройствами для обновления весов.

2. Стратегия TPU

  • Стратегия TPU такая же, как и зеркальная стратегия, с той лишь разницей, что она работает на TPU, а не на графических процессорах.
  • Распределенная архитектура обучения - это то же самое, что и зеркальная стратегия.

3. Зеркальная стратегия для нескольких сотрудников

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

4. Стратегия централизованного хранения

  • Выполняется на одной машине с несколькими графическими процессорами
  • Вместо этого переменные не зеркалируются, они размещаются на ЦП, а операции реплицируются на все локальные графические процессоры.

5. Стратегия одного устройства

  • Работа на одном устройстве с графическим процессором или процессором
  • Типичный для тестирования

6. Стратегия сервера параметров

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

Заключение

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

использованная литература

[1]: Распределенное обучение с TensorFlow https://www.tensorflow.org/guide/distributed_training

[2]: Использование распределенной стратегии с Керасом https://www.tensorflow.org/tutorials/distribute/keras

Спасибо за прочтение !