Статья опубликована в рамках: Научного журнала «Студенческий» № 37(81)
Рубрика журнала: Информационные технологии
Скачать книгу(-и): скачать журнал часть 1, скачать журнал часть 2, скачать журнал часть 3, скачать журнал часть 4, скачать журнал часть 5
МОДЕЛИ РАСПРЕДЕЛЕННОГО ОБУЧЕНИЯ НЕЙРОННЫХ СЕТЕЙ
Обучение современных нейронных сетей требует большого количества вычислений, следовательно, и вычислительных мощностей. Один из действенных методов улучшения производительности - использование распределенных вычислений. В такого рода вычислениях используется одновременно мощность нескольких компьютеров, тем самым распределяя нагрузку и уменьшая время обучения.
Выделяют два подхода к распределению вычислений. Один из них - параллелизм модели. Модель распределяется по узлам, и каждый узел проходит часть модели по всему набору данных. Этот подход полезен для обучения больших моделей, однако подход к параллелизму данных более распространен.
При параллелизме данных набор данных распределяется по узлам и каждый узел имеет полную копию модели и изучает параметры только в подмножестве набора данных.
Это предпочтительный подход, так как проще и эффективнее разделить набор данных. Каждая машина получает одинаковый объем работы, что приводит к лучшему использованию кластера.
Сложность состоит в том, чтобы объединить параметры, рассчитанные на каждом узле, для вычисления полной модели.
Выделяют несколько методов, с помощью которых можно реализовать распараллеливания данных.
Синхронное усреднение параметров - самый простой метод.
- Случайные значения параметров инициализации;
- Распределите копию параметров для каждого узла;
- Обучить каждый узел на подмножестве данных;
- Обновите глобальные параметры, чтобы они стали средними значениями параметров, вычисленных на каждом узле;
- Если есть больше данных, вернитесь к шагу 2.
В отсутствие оптимизации распределенные вычисления эквивалентны вычислениям на одной машине.
Этот метод также зависит от количества мини-пакетов (с 1 мини-пакетом это эквивалентно обучению одной машины - но это добавляет огромные накладные расходы из-за сетевого взаимодействия между каждой итерацией). Для большего количества партий оно существенно отличается.
Нам нужно найти компромисс между действиями и правильностью. При усреднении по слишком большому количеству мини-пакетов параметры рабочего узла могут отличаться.
Исследования показывают, что периоды усреднения порядка одного раза в каждые 10–20 мини-пакетов (на одного работника) все еще могут работать приемлемо хорошо (однако это трудно изучать из-за влияния других гиперпараметров, таких как скорость обучения, размер мини-партии, число рабочих).
Если используются оптимизаторы (что настоятельно рекомендуется), требуются дополнительные издержки (поскольку большинство оптимизаторов поддерживают внутреннее состояние, его необходимо обновить и распространить среди работников, что увеличивает нагрузку на сеть).
Метод асинхронного стохастического градиентного спуска вместо того, чтобы передавать параметры от рабочих на сервер параметров, будет передавать обновления (т.е. градиенты после обучения, скорость и т.д.).
Становится более интересным, если обновления являются асинхронными, что позволяет применять обновления к параметрам сразу после их вычисления (вместо того, чтобы ждать, пока все рабочие выполнят один и тот же шаг).
Очевидным преимуществом является увеличение пропускной способности (не нужно ждать, пока другие работники завершат свой шаг). Менее очевидным является то, что работники могут получить выгоду от обновлений от других работников раньше, чем при использовании синхронного SGD.
Однако вычисление градиента занимает время, и к тому времени, когда работник вычислил обновление, вектор глобального параметра мог обновляться несколько раз. Эта проблема известна как градиентная устаревание.
Средняя уклончивость градиента равна количеству рабочих N. Это означает, что градиент будет в среднем N шагов устаревшими к тому времени, когда они применяются к глобальной сети параметров.
Проблема связана с асинхронной природой алгоритма (это не имело место для синхронного усреднения параметров).
Существуют разные подходы для минимизации градиентной устаревания:
scaling parameter (с параметром λ) отдельно для каждого обновления на основе устаревания градиентов;
soft synchronisation protocols: не обновляйте глобальные параметры напрямую. Сервер параметров ожидает сбора некоторого количества обновлений S от любого из рабочих (1 < S < N);
use synchronisation to bound staleness: Идея состоит в том, чтобы задержать работника быстрее, когда это необходимо, чтобы максимальная уравновешенность оставалась ниже определенного порога.
Параметр масштабирования и методы мягкой синхронизации хорошо сочетаются друг с другом. Они достигают лучших результатов, чем каждый из них в одиночку.
Важно заметить, что распределенное обучение не является бесплатным. Лучше всего тренироваться на одной машине как можно больше.
Список литературы:
- Алексеенко Ю.В. Применение распределенных вычислений для реализации алгоритмов Deep Learning // Современные тенденции развития науки и технологий – 2015. – №6. – С. 95–100.
- Ионов С. Д. Распределенный запуск нейронных сетей на множестве вычислительных узлов // Вестник УГАТУ – 2013. – №55. – С. 85–91.
- М. С. Герасименко Вычисление искусственных нейронных сетей на вычислительных кластерах и ЛВС // Вестник ВГУ – 2010. – №1. – С. 121–125.
Оставить комментарий