Сью Хён Пак

По мере усложнения задачи глубокого обучения (ГО) модель ГО должна иметь больший вес модели для повышения точности. При обучении глубокой нейронной сети (ГНС) веса ​​модели многократно корректируются в соответствии с заданным набором обучающих данных. Одна из проблем заключается в том, что современные модели глубокого обучения имеют миллионы весов, в то время как количество обучающих выборок обычно намного меньше. Крайне важно увеличить набор обучающих данных, чтобы обученные модели глубокого обучения обеспечивали обобщение, способность правильно обрабатывать невидимые данные.

Увеличение данных широко используется для решения этой задачи. Практикой является применение случайных преобразований к существующим обучающим выборкам, предоставляя дополнительные отдельные обучающие выборки. Взгляните на конвейер DNN ниже. Пока не будет достигнута целевая точность проверки, два этапа — этап подготовки данных и этап вычисления градиента — повторяются для нескольких эпох. Конвейер дополнения данных работает внутри этапа подготовки данных. После обучения данные проходят через два слоя RandAugment, каждый из которых случайным образом применяет одно из 14 искажений (например, сдвиг, поворот и соляризация), а также слой случайной обрезки и случайного отражения, размер набора данных увеличивается экспоненциально.

Эпоха  – это полный проход всего обучающего набора.
шагуказывает на обработку подмножества выборок, которое мы называеммини-пакетом, в течение эпохи.

Расширение данных дает большее разнообразие в обучающей выборке и помогает обучать более обобщенную модель DL. Однако многоуровневые вычисления при увеличении данных часто сильно нагружают ЦП и могут быть причиной снижения скорости обучения.

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

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

Накладные расходы на увеличение данных

Этап подготовки данных обычно выполняется на ЦП. С другой стороны, вычисление градиента требует дорогостоящих вычислений прямого и обратного распространения, что требует использования ускорителей, таких как GPU и TPU. Благодаря недавней разработке специализированных аппаратных ускорителей, таких как NVIDIA A100 и Google TPU v3, вычисление градиента значительно ускорилось. Между тем, конвейер расширения выполняет случайные преобразования через несколько уровней, что является обременительным для ЦП. В результате большие накладные расходы ЦП стали узким местом обучения DNN.

Чтобы измерить влияние, мы анализируем пропускную способность обучения ResNet-50, обученного на ImageNet, с использованием различного количества слоев RandAugment. Без слоя RandAugment пропускная способность обучения достигает максимума. По мере увеличения количества слоев RandAugment производительность обучения заметно снижается.

Ограничения существующих подходов и наши вопросы

Как мы можем уменьшить нагрузку на ЦП за счет увеличения данных?

Были предприняты попытки сократить объем вычислений, но стохастический характер увеличения данных поставил под угрозу такие подходы.

Первый подход заключается в использовании аппаратных ускорителей с массовым параллелизмом, таких как GPU и FPGA. Последние работы — NVIDIA DALI и TrainBox. Но использование массивного параллелизма несовместимо со стохастическими характеристиками конвейеров расширения.

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

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

Напротив, эхо-данные кэшируют расширенные выборки, а затем повторно используют их для последовательных эпох.

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

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

Как мы можем уменьшить нагрузку на ЦП из-за увеличения данных и сохранить обобщение модели, полученной путем увеличения данных?

Восстановление данных

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

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

  • Коэффициент повторного использования r, который показывает, сколько раз повторно использовать каждый кешированный образец.
  • Стратегия разделения, которая определяет, как разделить полный конвейер дополнений на частичное и окончательное дополнения.

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

Мы замечаем, что конфигурация стандартного увеличения данных и отражения данных может быть представлена ​​с использованием наших обозначений. Как видно на графиках ниже, стандартное увеличение данных позволяет максимально увеличить разнообразие выборок, но пропускная способность совсем не улучшается; при отображении данных пропускная способность повышается за счет повторного использования выборок, но уменьшается разнообразие выборок. По этой причине среди комбинаций различных факторов повторного использования и стратегий разделения должна существовать «золотая середина», которая обеспечивает высокую пропускную способность наряду с заметным разнообразием выборки. Сосредоточив внимание на изменениях разнообразия выборок по оси Y, идеальное разделение, которое должен исследовать пользователь, состоит в том, что окончательный конвейер расширения состоит из преобразований, обеспечивающих достаточное разнообразие выборок с небольшими вычислениями. Отличным примером может быть комбинация случайного слоя обрезки и случайного горизонтального слоя отражения. Это производит в 7 раз больше расширенных выборок, чем один слой RandAugment, с меньшим количеством циклов ЦП.

Ревампер

С учетом полученных результатов мы разрабатываем новую систему загрузки данных Revamper, которая реализует восстановление данных с оптимальной конфигурацией. Он включает в себя восстановление данных для существующих процедур подготовки данных платформ DL, таких как PyTorch и TensorFlow, путем замены существующих систем загрузки данных, таких как PyTorch dataloader и tf.data, на Revamper. сильный>.

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

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

  • сбалансированное вытеснение для устранения перекоса вычислений между эпохами и
  • перетасовка с учетом кеша для устранения перекоса вычислений внутри эпохи.

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

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

Далее мы объясним, как в модулях Revamper используется сбалансированное вытеснение и перемешивание с учетом кеша, управляя временем обработки ЦП для каждого шага.

Сбалансированное выселение

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

Перемешивание с поддержкой кэша

После выселения по указанию выселяющего тасователя основной процесс присваивает индексы мини-пакетов каждому работнику, выбранному из пакетного тасователя. Поскольку Revamper уже знает индексы вытесненных сэмплов перед каждой эпохой обучения, пакетный перетасовщик распределяет сэмплы таким образом, чтобы в каждом мини-пакете было одинаковое соотношение кэшированных и некэшированных сэмплов. Как некэшированные индексы, так и кешированные индексы выбираются случайным образом. Таким образом можно устранить любое ненужное ожидание между ЦП и ускорителем DL.

Оценка

Мы реализуем Revamper с более чем 2000 строками кода Python на основе PyTorch 1.6. Он переопределяет существующий загрузчик данных PyTorch с идентичным интерфейсом, за исключением дополнительных параметров, таких как коэффициент повторного использования и стратегия разделения.

Мы оцениваем восстановление данных, реализованное в Revamper, по следующим базовым параметрам:

  • Стандартный: обучение DNN с полной аугментацией без какого-либо механизма повторного использования.
  • Эхо данных: кэширование и повторное использование полностью дополненных образцов.
  • Упрощенный: стандартная настройка, при которой один или несколько слоев преобразования удаляются, чтобы уменьшить вычислительные затраты на увеличение данных.

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

Мы обучаем модель DL ResNet-50 в ImageNet с помощью RandAugment, используя Revamper и другие базовые модели. По сравнению со стандартной настройкой Revamper показывает более высокую производительность обучения при сохранении сопоставимой точности. Эхо данных и упрощенная настройка показывают значительное снижение точности, несмотря на увеличение пропускной способности, что не является признаком хорошего компромисса.

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

Заключение

Исследования по ускорению обучения ДО не прекратятся в ближайшем будущем. Размер модели ИИ, размер набора данных и объем вычислений увеличиваются до беспрецедентных масштабов, а сокращение времени, денег и усилий на обучение становится серьезной проблемой для практиков. Из-за огромного углеродного следа обучения ИИ также необходимо сделать машинное обучение чище и экологичнее, используя эффективные алгоритмы. (См. Зеленый ИИ)

Итак, как бы мы ни ценили более высокую точность и обобщение модели, мы стремимся устранить узкое место в обучении, вызванное увеличением данных. Для достижения этой цели мы разрабатываем новый механизм повторного использования образцов — восстановление данных. А связанная новая система загрузки данных Revamper повышает производительность обучения моделей DNN в 1,03–2,04 раза, сохраняя при этом сопоставимую точность.

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

Подтверждение

Этот пост в блоге основан на следующей статье:

Мы хотели бы поблагодарить Gyewon Lee за предоставление ценной информации для этого сообщения в блоге.

Эта запись изначально была опубликована в нашем блоге Notion 31 июля 2021 г.