Изучение потенциала разреженных вычислений

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

Изучение потенциала разреженности

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

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

В последнее время этот инновационный цикл привел к впечатляющим достижениям на всех уровнях. Например, гипотеза лотерейного билета (Франкл и Карбин, 2018 и Франкл и др., 2019, Рамануджан и др., 2019, Пенсия и др., 2020) выдвинула на первый план алгоритмическое понимание того, что небольшого подмножества весов обученной модели достаточно для представления обученной функции с высокой степенью точности (Han et al. 2015). На основе этой идеи были предложены новые методы обучения для фальсификации лотереи. То есть, чтобы найти разреженные подсети с высокой точностью, не неся вычислительных затрат на плотное обучение (Evci et al. 2020, Jayakumar et al. 2020).

Наряду с этой работой были предприняты заметные усилия по расширению программной поддержки основных фреймворков машинного обучения для разреженных вычислений. Толчок OpenAI к интеграции его разреженного блока инструментов в PyTorch является одним из примеров такой улучшенной поддержки.

На уровне оборудования также ведутся серьезные инновации. Новые ускорители, специально разработанные для поддержки разреженных вычислений, такие как Intelligence Processing Unit (IPU) Graphcore, становятся широко доступными для новаторов в промышленности и научных кругах.

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

В нашем тематическом исследовании, представленном на SNN Workshop 2021, мы исследуем потенциал разреженных вычислений на конкретном примере предварительного обучения масштабируемой языковой модели на процессоре IPU. В частности, мы реализуем сильную базовую линию разреженного предварительного обучения языковой модели BERT и демонстрируем ее превосходство над плотными моделями при сравнении на основе операций с плавающей запятой (FLOP). Помимо изучения различных аспектов оборудования, программного обеспечения и алгоритмов, задействованных в этом тематическом исследовании, мы надеемся, что наши результаты могут послужить практической отправной точкой для дальнейших исследований в этой области.

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

Аппаратное обеспечение: архитектура IPU и разреженные вычисления.

Graphcore IPU - это новый процессор с массовым параллелизмом, специально разработанный для рабочих нагрузок машинного обучения. Второе поколение чипа имеет 1472 полностью независимых процессорных ядра (называемых тайлами), каждое из которых имеет 6 потоков, что позволяет ему выполнять одновременно 8832 независимых параллельных инструкции (множественные инструкции и множественные данные (MIMD)). Примечательно, что каждая плитка имеет свой собственный фрагмент внутрипроцессорной памяти, доступ к которой возможен со скоростью 180 ТБ / с на карту, что более чем в 100 раз превышает пропускную способность доступа к памяти по сравнению с внешней памятью DRAM. Совместное размещение вычислений и памяти в IPU не только делает его более энергоэффективным, но также означает, что он очень хорошо подходит для очень нерегулярных вычислений, которые необходимо распараллеливать с использованием детализированного и гибкого подхода.

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

Архитектура IPU может поддерживать вычислительную эффективность для разреженного обучения и вывода даже при высокой степени детализации разреженной структуры. Блок умножения-накопления размера 16 позволяет IPU достигать хорошего использования потоков и производительности даже для очень маленьких размеров блоков 1x1, 4x4, 8x8 или 16x16. IPU также поддерживает ряд инструкций, предназначенных для ускорения вычислений с обычными разреженными примитивами, что дополнительно помогает повысить пропускную способность.

Программное обеспечение: Poplar и программная библиотека popsparse

Все аппаратные и архитектурные функции могут быть реализованы с помощью оптимизированных ядер, доступных через popsparse, гибкую низкоуровневую библиотеку C ++ для разреженных вычислений. Popsparse - это одна из программных библиотек Graphcore с открытым кодом (известная как PopLibs), которая построена на основе Poplar, API построения и компиляции графиков Graphcore, лежащего в основе всего, что работает на IPU.

Ядра разреженности могут быть либо напрямую нацелены через PopART API, либо легко интегрированы в существующие модели TensorFlow через слои TensorFlow и Keras, используемые в этой работе. Поддерживается разреженность с размерами блоков 1x1, 4x4, 8x8, 16x16 как в FP16, так и в FP32. Graphcore предоставляет реализации с открытым исходным кодом и учебные пособия в публичных примерах на GitHub.

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

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

Полные реализации разреженных моделей в диапазоне от архитектур RNN до GPT2, а также методы статической и динамической оптимизации разреженности, такие как RigL и разреженное внимание, также доступны с открытым исходным кодом.

Алгоритм: использование динамической разреженности для фальсификации лотереи

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

Традиционно методы обрезки - простой и удивительно эффективный способ ускорить вывод обученной модели. Достижение аналогичных вычислительных преимуществ во время обучения обычно является более сложной задачей. Один из распространенных методов - начать обучение с разреженной топологией и со временем развивать шаблоны подключения (Evci et al. 2020, Jayakumar et al. 2020). При таком подходе разреженные возможности подключения периодически модифицируются путем сокращения и восстановления текущей подсети. Это означает, что доступные степени свободы исходной сверхпараметризованной модели могут быть эффективно исследованы, сохраняя при этом преимущество снижения вычислительных затрат.

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

Здесь мы решили реализовать простую, но хорошо настроенную базовую линию динамической разреженности, используя отсечение на основе величины и случайное восстановление для блоков переменного размера 1x1, 4x4, 8x8 и 16x16. В частности, основываясь на задаче моделирования языка BERT (Devlin et al. 2018), мы разрежем веса полностью подключенного кодировщика (исключая веса внедрения) с коэффициентом разреженности 0,9, так что на этих уровнях остается только 10% процентов весов. . Мы регулярно обновляем шаблон разреженности (160 раз в фазе I предварительного обучения), используя отсечение на основе величины и случайное повторное выращивание определенной доли весов (коэффициент отсечения 0,5, косинус-затухание с течением времени, см. Рисунок 1).

Затем мы настраиваем скорость обучения, чтобы обеспечить наилучшее выполнение задачи. Используя этот подход, мы разрежем модели различных размеров до BERT Base. На рисунке 2 показаны достигнутые потери модели маскированного языка после фазы I, соответствующие показателям валидации при прогнозировании случайного подмножества маскированных токенов. При сравнении с бюджетом FLOP динамически разреженные обученные модели превосходят их плотные аналоги для всех размеров модели.

Это демонстрирует, что подходы динамического разреженного обучения могут быть эффективным методом снижения вычислительной нагрузки при крупномасштабном предварительном обучении. Интересно, что метод динамического разреженного обучения также остается эффективным с точки зрения FLOP для блоков больших размеров до 16x16 (Таблица 1). Использование блоков большего размера дает дополнительное пространство для оптимизации, которая может быть использована для повышения эффективности выполнения.

Новые направления для эффективности разреженных тренировок

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

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

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

"Читать газету"

Если вы заинтересованы в сотрудничестве с Graphcore IPU в рамках разреженного проекта, отправьте заявку в Академическую программу Graphcore.