Понимание параллелизма данных и параллелизма моделей, их возможностей и их криптонита

Идея разделения частей работы для получения исключительных результатов за короткий промежуток времени и, таким образом, снижения общей нагрузки, как раз и является сутью нашей темы под названием «Распределенное обучение», которая привела к очень интересным исследованиям в области машинного обучения. обучение продвигает наши технологии еще на один шаг вперед.

Введение в распределенное обучение

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

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

  1. Параллелизм данных
  2. Параллелизм модели

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

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

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

Существует два подхода к параллелизму данных:

  • Синхронное обучение

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

  • Асинхронное обучение

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

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

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

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

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

В исследовании под названием Эффективное и надежное параллельное обучение DNN с помощью параллелизма моделей как платформы с несколькими графическими процессорами проверялось параллелизм моделей и параллелизм данных. Остановимся подробнее на результатах данной теории.

Недостатки параллелизма данных и способы их преодоления с помощью параллелизма моделей

До сих пор мы видели, как распределять данные и обучать модель на нескольких устройствах с разными фрагментами данных, и этот подход работает в большинстве случаев и также прост в реализации. Ниже приведены преимущества использования Model Parallelism:

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

  • Эта зависимость от обмена данными между графическими процессорами параллелизма данных приводит к значительному замедлению. В среднем 26,7% времени обучения тратится на передачу данных между GPU при применении параллелизма данных.
  • На рисунке ниже показано количество времени, которое Data Parallelism использует для обмена данными между графическими процессорами, по сравнению со временем, которое требуется для обработки и вычисления градиентов.

Преимущества параллелизма данных перед параллелизмом моделей

  • Исследования показали, что модели, использующие параллелизм данных, повышают свою точность по мере обучения, но точность начинает колебаться при параллелизме модели.
  • Для параллелизма модели, если обучение проходит конвейерным способом, это вызывает проблему устаревания. Эта проблема устаревания приводит к нестабильному обучению и ухудшению точности модели.
  • На рисунке ниже изображен график, на котором мы можем видеть, как устаревание вызывает потерю точности обучения, начиная с итерации 2700, что приводит к падению до 5000-х.

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

Заключение

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

Вышеупомянутая статья спонсируется Vevesta.

Vevesta:Словарь функций и методов вашей команды по машинному обучению. Ускорьте свой проект по машинному обучению, используя функции, методы и проекты, используемые вашими коллегами.

Следующая статья будет публиковаться с интервалом в неделю. Яесли вам понравилась моя статья, просто отправьте мне несколько аплодисментов и отзывов по адресу [email protected] или подпишитесь на нас в Twitter по адресу @vevesta_labsза регулярные обновления моих статей.

100 первых пользователей, которые войдут в Вевесту, получат бесплатную подписку на 3 месяца.

Рекомендации

  1. Распределенное обучение — Vevesta
  2. Лэй Мао-распределенное обучение
  3. Нептун.ай
  4. На пути к науке о данных
  5. Асинхронный стохастический градиентный спуск на GPU для ускорения обучения нейронной сети
  6. Аналитика Индия Маг
  7. Обучение надежной параллельной DNN
  8. Распределенное обучение — подстек
  9. Распределенное обучение — SpecTrain