UltraFastBERT экспоненциально более быстрая языковая модель

Языковая модель UltraFastBERT экспоненциальное увеличение скорости

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

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

В данной статье представлен UltraFastBERT – основанная на BERT архитектура, обеспечивающая эффективность ведущих моделей BERT, но использующая всего 0,3% нейронов во время статистического заключения, а именно 12 из 4095 в каждом слое. Мы рассмотрим архитектуру, функциональность и результаты UltraFastBERT. Начнем.

UltraFastBERT: Введение в экспоненциально более быструю языковую модель

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

В основе фреймворка UltraFastBERT лежит вариант фреймворка BERT, который строит на этой концепции и заменяет слои прямой связи более быстрыми сетями прямой связи в своей архитектуре, что в конечном итоге приводит к тому, что фреймворк UltraFastBERT использует только 0,3% доступных нейронов, при этом доставляя результаты, сравнимые с моделями BERT с аналогичным размером и процессом обучения, особенно по отношению к вспомогательным задачам. Из-за его реализации на практике, промежуточные слои в UltraFastBERT фреймворке работают экспоненциально быстрее.

Для быстрой прямой связи (FFF) сети и сети прямой связи (FF) с n числом нейронов, сложность прямого прохода в сети прямой связи составляет O(n), в то время как сложность прямого прохода в быстрой прямой связи составляет O(log2n), и разница в сложности времени в основном обусловлена фактом, что в быстрой прямой связи нейроны организованы в сбалансированное двоичное дерево, и когда подается ввод, сеть выполняет только одну ветвь дерева условно. Кроме того, выполнение статистического заключения на быстрой прямой связи приводит к CMM или условному умножению матриц, при котором строки ввода поочередно умножаются на столбцы весов, и результатом предыдущей операции умножения определяется вес столбцов для продолжения работы. В результате сеть использует все нейроны только для некоторых входных данных, и ни для одного ввода не требуется обработка более чем несколькими нейронами сети. Умножение матриц CMM в отличие от DMM или плотного матричного умножения, которое вычисляет скалярное произведение всех входов с каждым столбцом весов.

В заключение, UltraFastBERT – это фреймворк на основе BERT, который обеспечивает результаты, сравнимые с лучшими языковыми моделями BERT, который:

  1. Использует только 0,3% доступных нейронов во время статистического заключения и работает только с 12 нейронами из общего числа 4095 нейронов для каждого слоя статистического заключения.
  2. Обеспечивает высокую производительность, сравнимую с лучшими моделями BERT, путем реализации стратегий дообучения на вспомогательных задачах.
  3. Предоставляет исходную реализацию условного умножения матрицы (CMM), которое является основой для быстрой сети прямой связи и в результате приводит к ускорению производительности в 78 раз по сравнению с оптимизированным плотным матричным умножением (DMM).

Сети прямой связи

Сеть прямой связи – это одна из самых простых искусственных нейронных сетей, которая перемещает информацию только в прямом направлении, от входных узлов к выходным узлам через скрытые узлы. Одной из основных особенностей сети прямой связи является то, что в таких сетях нет циклов или петель, и они проще в построении по сравнению с РНС или рекуррентными нейронными сетями, и СВН или сверточными нейронными сетями. Архитектура сети прямой связи включает три компонента: входные слои, скрытые слои и выходные слои, и каждый слой состоит из единиц, называемых нейронами, а каждый слой связан с другими с помощью весов.

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

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

Этап прямого распространения

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

Этап обратного распространения

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

UltraFastBERT: Архитектура и работа модели

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

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

Продвигаясь дальше, во время обучения фреймворк UltraFastBERT следует процедуре обучения, применяемой в фреймворке crammedBERT, которая включает отключение отсева при предварительной тренировке и использование расписания треугольной скорости обучения 1-цикла. Затем модель настраивается для максимизации своей производительности на широком спектре задач, в основном на базе тестов GLUE в течение 5 эпох.

Интерференция

Интерференция является важной частью быстрой прямой нейронной сети, и сами быстрые прямые сети составляют большую часть крупных языковых моделей, известных своим исключительным потенциалом ускорения. Чтобы понять этот потенциал ускорения, рассмотрим пример одной из самых совершенных языковых моделей – GPT-3, в которой быстрые прямые сети в каждом слое трансформатора состоят из более чем 49,100 нейронов. Если быстрая прямая сеть (максимальная глубина 15) была обучаемой, она могла бы заменить исходную прямую сеть. Предложенная быстрая прямая сеть будет иметь более 65,000 нейронов, но для интерференции будет использоваться только 16 из этих нейронов, что составляет примерно 0,03% нейронов, доступных для GPT-3.

Алгоритм и совместимость

Фреймворк UltraFastBERT использует рекурсивный псевдокодовый алгоритм для быстрого прямого распространения сигнала, и алгоритм изображен на рисунке ниже.

Здесь B представляет размер пакета, H представляет ширину входных слоев, а M представляет столбцы. Еще одной основной проблемой при использовании подхода вычисления компьютерной матрицы умножения является то, совместимы ли быстрые прямые распространения с существующим процессом использования плотной матричной умножения и существующих фреймворков глубокого обучения. К счастью, использование CMM не влияет на производительность и не вводит несовместимости, хотя оно повышает сложность кэширования.

Важно отметить, что как часть быстрой прямой сети, однопоточное плотное умножение матрицы полагается на выполнение инструкций MAC или умножение и накопление, и следовательно, замена DMM на подход CMM будет выгодна для ЦП, поскольку для вычисления выхода слоя требуется меньше инструкций MAC. Таким образом, несмотря на использование условной ветви, обычно связанной с ветвлением, “нейронное ветвление” действует как добавление к смещению памяти для соответствующих указателей в структуре. Поэтому в фреймворке UltraFastBERT прогнозирование ветвления инструкций никогда полностью не используется для обеспечения условности CMM и загружает только соответствующие столбцы матрицы весов индивидуально. Кроме того, поскольку фреймворк выполняет произведение строк и столбцов, SIMD или одиночная инструкция множественных данных последовательная обработка всё еще является хорошим вариантом для ускорения реализаций прямого распространения для конкретных устройств.

UltraFastBERT: Производительность и результаты

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

Результаты оптимизации

На следующей диаграмме представлена производительность различных моделей на наборе тестовых данных GLUE-dev. Здесь N представляет количество нейронов, доступных фреймворкам для обучения, “Avg” представляет средний балл всех задач.

Как видно из графика, фреймворк UltraFastBERT, обученный на GPU A6000 в течение более 24 часов, сохраняет около 96% предсказательной производительности по задачам GLUE по сравнению с оригинальным фреймворком BERT. Кроме того, можно увидеть, что с увеличением глубины быстрых прямых сетей производительность фреймворков снижается, хотя большая часть ухудшения производительности происходит только для задачи CoLa. Если задача CoLa игнорируется, фреймворк UltraFastBERT возвращает оценку предсказательной производительности около 98,6%.

Результаты интерференции

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

  1. На уровне 1 реализация строится с использованием операций BLAS Level 1, а именно скалярно-векторное произведение и векторно-векторное произведение.
  2. На уровне 2 реализации используют операции BLAS Level 2, а именно пакетное скалярно-векторное произведение и пакетное матрично-векторное произведение.
  3. На уровне 3 реализации используют непакетные операции перемножения матриц BLAS Level 3, и хотя это самая быстрая реализация для прямых сетей, такие реализации не доступны для быстрых прямых сетей, поскольку библиотека не поддерживает векторное разрежение на уровне компьютерного умножения матриц.

Кроме того, фреймворк UltraFastBERT использует реализации GPU, используя пользовательские ядра CUDA или PyTorch.

В таблице выше сравнивается производительность фреймворка UltraFastBERT со своими предшественниками, фреймворками на основе BERT в терминах прямых и быстрых прямых слоев, где каждый столбец содержит относительную скорость реализации Fast Feedforward по сравнению со скоростью реализации Feedforward при использовании тех же линейно-алгебраических базовых операций.

Однако стоит отметить, что ускорения, указанные в таблице выше, предназначены для “честных сравнений”, то есть как быстрые прямые, так и прямые реализации используют идентичные операции линейной алгебры. Кроме того, на уровнях 1 и 2 реализации быстрых прямых сетей способны выполнять интерференцию в 48 и 78 раз быстрее соответственно по сравнению с самой быстрой реализацией прямого распространения.

Заключительные мысли

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

Благодаря реализации дизайна, промежуточные слои в архитектуре UltraFastBERT работают экспоненциально быстрее. Более того, превосходная производительность, достигаемая фреймворком UltraFastBERT, является доказательством того, что LLM-модели могут обеспечивать высокую производительность, используя только долю своих параметров для отдельных вмешательств, так как UltraFastBERT использует только 0,3% доступных нейронов во время вмешательства, и все же обеспечивает ускорение в 78 раз по сравнению со временами вмешательства.