Как архитектура Terraformer ускоряет Transformers в 37 раз без потери качества

Yannic Kilcher 24,2 тыс. 57 мин 4 мин 02.12.2021
Главное

В новом видео Янник Кильхер (Yannic Kilcher) разбирает амбициозную научную работу исследователей из Варшавского университета, Google Research и OpenAI. Статья под названием «Sparse is Enough in Scaling Transformers» представляет архитектуру Scaling Transformer и её «прокачанную» версию — Terraformer. Основная идея авторов заключается в том, что для эффективного масштабирования нейросетей не обязательно активировать все параметры одновременно: разреженность (sparsity) позволяет добиться колоссального ускорения инференса при сохранении качества работы модели.

🚀 Масштабирование через разреженность: суть Scaling Transformer 0:00

Главная задача представленного исследования — внедрить блоки разреженности в стандартную архитектуру Transformers . Результатом стала модель Scaling Transformer, которая в ходе тестов показала впечатляющие результаты в задачах декодирования (генерации текста). Особенно заметен прогресс при работе с одиночными примерами (unbatched decoding), где разреженность проявляет себя лучше всего .

Янник Кильхер приводит следующие данные по производительности:

Самым удивительным фактом Янник Кильхер называет отсутствие деградации качества . По мнению авторов статьи, разреженные слои позволяют получить ту же перплексию (метрику качества языковой модели), что и стандартные «плотные» (dense) модели с тем же количеством параметров .

🏗️ Анатомия разреженного Feed-Forward слоя 6:56

В классическом трансформере основными вычислительными узлами являются блоки внимания (attention) и полносвязные слои (feed-forward, FF). Авторы статьи предлагают заменить каждый из них разреженной версией.

Работа с FF-слоем строится на следующих принципах:

  1. Обоснование через ReLU: Авторы аргументируют возможность разреженности тем, что функция активации ReLU и так превращает около половины значений в ноль . Янник Кильхер отмечает, что это рассуждение кажется ему несколько «шатким», но признает: если метод работает, теоретическое обоснование вторично .
  2. Компартментализация матриц: Вместо умножения вектора на всю огромную матрицу, она разбивается на отсеки (compartments) . В каждом отсеке активируется только один столбец. Это позволяет загружать из памяти и вычислять только крошечную часть весов .
  3. Контроллер низкого ранга: Чтобы решить, какие столбцы активировать, используется вспомогательный механизм. Это мини-сеть, работающая в режиме «низкого ранга» (low-rank), которая на основе входного вектора предсказывает маску активации .

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

🧠 Оптимизация внимания: Multiplicative и Conv слои 19:21

Создание разреженного механизма внимания сложнее, так как на выходе слоев генерации запросов (Queries), ключей (Keys) и значений (Values) обычно нет нулей, которые можно было бы эксплуатировать . Авторы предлагают заменить плотные слои комбинацией «мультипликативного» слоя (Mult) и сверточного слоя (Conv) .

Особенности этой структуры:

Янник Кильхер отмечает, что такая архитектура вводит новые пути передачи информации, из-за чего сложно точно оценить, какой именно из «инженерных трюков» вносит решающий вклад в итоговый успех .

🌍 Terraformer: интеграция долгой памяти и обратимости 44:02

Когда Scaling Transformer дополняется технологиями для работы с длинными последовательностями, он превращается в Terraformer . В эту модель интегрированы идеи из архитектуры Reformer.

Ключевые дополнения Terraformer:

  1. LSH Attention: Использование локально-чувствительного хеширования (Locality Sensitive Hashing) для ускорения поиска ключей в длинных текстах . Вместо вычисления всех связей, алгоритм ищет «столкновения хешей», что значительно экономит ресурсы .
  2. Обратимые блоки (Reversibility): Чтобы не хранить в памяти все промежуточные активации для обратного распространения ошибки, архитектура строится так, чтобы входные данные можно было восстановить из выходных . Это критически важно для обучения на очень длинных последовательностях .
  3. Рекуррентные блоки (SRU): В FF-блоки добавляются простые рекуррентные юниты (Simple Recurrent Units) . По мнению авторов, это улучшает обобщающую способность модели .

Кильхер находит добавление рекуррентности «странным выбором» . Он предполагает, что это могло быть сделано для того, чтобы подтянуть цифры в специфических тестах, где модель должна обрабатывать данные вдвое длиннее, чем видела при обучении .

📉 Ограничения и перспективы 55:12

Несмотря на впечатляющие 37-кратные ускорения, Янник Кильхер выделяет несколько нюансов:

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

💬 Цитаты

«Разреженные слои достаточны для получения той же перплексии, что и стандартный трансформер с тем же количеством параметров.»

Янник Кильхер 02:13

«Эффект разреженности действительно сияет, когда вы переходите к более крупным моделям.»

Янник Кильхер 01:35
👥 Спикер
🔗 Упомянутые сайты и проекты
📖 Термины
Перплексия
Мера того, насколько хорошо вероятностная модель предсказывает выборку; основной критерий качества языковых моделей.
Инференс
Процесс использования обученной нейросети для получения предсказаний или генерации контента.
Низкоранговая аппроксимация
Метод представления большой матрицы через произведение двух маленьких для экономии вычислений.
LSH (Locality Sensitive Hashing)
Алгоритм хеширования, при котором похожие объекты с большой вероятностью получают одинаковые хеши.
📊 Цифры
⚖️ Другая сторона
Искусственный интеллект Terraformer Scaling Transformer Янник Кильхер Sparsity OpenAI