(для тех кто забыл что такое CBOW/SG, картинка из https://arxiv.org/abs/1301.3781)
DeBERTa: Decoding-enhanced BERT with Disentangled Attention
Pengcheng He, Xiaodong Liu, Jianfeng Gao, Weizhu Chen
Статья: https://arxiv.org/abs/2006.03654
Код: https://github.com/microsoft/DeBERTa
Модель в Transformers: https://huggingface.co/transformers/model_doc/deberta.html
Пост: https://www.microsoft.com/en-us/research/blog/microsoft-deberta-surpasses-human-performance-on-the-superglue-benchmark/
В зоопарке с бертами громкое пополнение. Microsoft захватил лидерство в SuperGLUE (https://super.gluebenchmark.com/leaderboard) с моделью DeBERTa (итоговый скор 90.3), попутно превзойдя human baseline (скор 89.8) на этом бенчмарке. В затылок лидеру дышит гугловая T5 + Meena, также превосходящая человека (90.2). Гугл пока про этот свой прорыв отмалчивается.
Что за зверь эта DeBERTa?
По большому счёту DeBERTa — это RoBERTa с двумя усовершенствованиями.
1) Разделённый механизм внимания (disentangled attention), в котором каждый токен кодируется двумя векторами: вектор контента и вектор позиции (относительной), для работы с которыми заведены отдельные матрицы.
В оригинальном трансформере, как вы помните, вектор был один и представлял собой сумму контентного и позиционного эмбеддинга. В оригинальной работе были абсолютные позиционные эмбеддинги, считавшиеся через синусы, в последующих работах также были относительные, но важно, что они арифметически суммировались с контентными в один итоговый вектор эмбеддинга (H), который дальше и прилетал на вход каждого слоя self-attention.
Здесь на вход пролетает пара {H, P}, где H — это по-прежнему контентные эмбеддинги (на входе посчитанные для BPE-токенов, а далее — выходы с предыдущих слоёв self-attention), а P — относительные позиционные эмбеддинги, кодирующие связь токена на позиции i с токеном на позиции j, которые считаются из относительного расстояния между i и j.
Вес внимания между двумя такими {H, P} состоял бы из четырёх компонент: content-to-content (как в оригинале), content-to-position, position-to-content и position-to-position. От последнего отказываются, потому что он вроде как не добавляет новой информации при использовании относительных позиций. В итоге получается, что к традицинным контентным K,Q,V добавляются позиционные Q_r и K_r и соответствующие им матрицы проекций.
Ну и нормализуют теперь не на корень из d, а на корень из 3d.
2) Enhanced mask decoder (EMD), где перед финальным софтмаксом, когда модель должна уже декодировать замаскированные токены при обучении с MLM (Masked Language Model), к контекстным эмбеддингам добавляются _абсолютные_ позиционные (важно, в механизме внимания были _относительные_ позиционные эмбеддинги). Потому что, по мнению авторов, абсолютная позиция слова в некоторых случаях критична для предсказания.
Декодером это называется несколько некорректно, потому что речь по большому счёту идёт про энкодер трансформера (помните, BERT — это чисто encoder часть полного трансформера), декодера в его хитрым маскированным вниманием тут нет.
Авторы говорят, что через EMD можно добавлять в модель другую полезную информацию, но это тема на будущее (когда Гугл обгонит на SuperGLUE, видимо).
Правда, в статье описана адаптация DeBERTa к авторегрессионной генерации, где эта хитрая треугольная маска появляется.
Также в работе применяют virtual adversarial training алгоритм под названием Scale-invariant-Fine-Tuning (SiFT), который создаёт adversarial examples путём изменения эмбеддингов слов (причём нормализованных эмбеддингов, типа так лучше), а модель должна на них выдавать распределение как на оригинальных данных. Внимательное изучение SiFT тоже оставили на будущее.
Экспериментальная часть богата.
Сравнивают large модели BERT, RoBERTa, XLNet, ELECTRA и кое-где ALBERT и Megatron. DeBERTa рулит. И этот результат получают при обучении примерно на половине данных по сравнению с RoBERTa и XLNet. Также DeBERTa обходит по качеству Megatron-1.3B, который в три раза толще.
DeBERTa-base также побеждает RoBERTa/XLNet-base.
Pengcheng He, Xiaodong Liu, Jianfeng Gao, Weizhu Chen
Статья: https://arxiv.org/abs/2006.03654
Код: https://github.com/microsoft/DeBERTa
Модель в Transformers: https://huggingface.co/transformers/model_doc/deberta.html
Пост: https://www.microsoft.com/en-us/research/blog/microsoft-deberta-surpasses-human-performance-on-the-superglue-benchmark/
В зоопарке с бертами громкое пополнение. Microsoft захватил лидерство в SuperGLUE (https://super.gluebenchmark.com/leaderboard) с моделью DeBERTa (итоговый скор 90.3), попутно превзойдя human baseline (скор 89.8) на этом бенчмарке. В затылок лидеру дышит гугловая T5 + Meena, также превосходящая человека (90.2). Гугл пока про этот свой прорыв отмалчивается.
Что за зверь эта DeBERTa?
По большому счёту DeBERTa — это RoBERTa с двумя усовершенствованиями.
1) Разделённый механизм внимания (disentangled attention), в котором каждый токен кодируется двумя векторами: вектор контента и вектор позиции (относительной), для работы с которыми заведены отдельные матрицы.
В оригинальном трансформере, как вы помните, вектор был один и представлял собой сумму контентного и позиционного эмбеддинга. В оригинальной работе были абсолютные позиционные эмбеддинги, считавшиеся через синусы, в последующих работах также были относительные, но важно, что они арифметически суммировались с контентными в один итоговый вектор эмбеддинга (H), который дальше и прилетал на вход каждого слоя self-attention.
Здесь на вход пролетает пара {H, P}, где H — это по-прежнему контентные эмбеддинги (на входе посчитанные для BPE-токенов, а далее — выходы с предыдущих слоёв self-attention), а P — относительные позиционные эмбеддинги, кодирующие связь токена на позиции i с токеном на позиции j, которые считаются из относительного расстояния между i и j.
Вес внимания между двумя такими {H, P} состоял бы из четырёх компонент: content-to-content (как в оригинале), content-to-position, position-to-content и position-to-position. От последнего отказываются, потому что он вроде как не добавляет новой информации при использовании относительных позиций. В итоге получается, что к традицинным контентным K,Q,V добавляются позиционные Q_r и K_r и соответствующие им матрицы проекций.
Ну и нормализуют теперь не на корень из d, а на корень из 3d.
2) Enhanced mask decoder (EMD), где перед финальным софтмаксом, когда модель должна уже декодировать замаскированные токены при обучении с MLM (Masked Language Model), к контекстным эмбеддингам добавляются _абсолютные_ позиционные (важно, в механизме внимания были _относительные_ позиционные эмбеддинги). Потому что, по мнению авторов, абсолютная позиция слова в некоторых случаях критична для предсказания.
Декодером это называется несколько некорректно, потому что речь по большому счёту идёт про энкодер трансформера (помните, BERT — это чисто encoder часть полного трансформера), декодера в его хитрым маскированным вниманием тут нет.
Авторы говорят, что через EMD можно добавлять в модель другую полезную информацию, но это тема на будущее (когда Гугл обгонит на SuperGLUE, видимо).
Правда, в статье описана адаптация DeBERTa к авторегрессионной генерации, где эта хитрая треугольная маска появляется.
Также в работе применяют virtual adversarial training алгоритм под названием Scale-invariant-Fine-Tuning (SiFT), который создаёт adversarial examples путём изменения эмбеддингов слов (причём нормализованных эмбеддингов, типа так лучше), а модель должна на них выдавать распределение как на оригинальных данных. Внимательное изучение SiFT тоже оставили на будущее.
Экспериментальная часть богата.
Сравнивают large модели BERT, RoBERTa, XLNet, ELECTRA и кое-где ALBERT и Megatron. DeBERTa рулит. И этот результат получают при обучении примерно на половине данных по сравнению с RoBERTa и XLNet. Также DeBERTa обходит по качеству Megatron-1.3B, который в три раза толще.
DeBERTa-base также побеждает RoBERTa/XLNet-base.
GitHub
GitHub - microsoft/DeBERTa: The implementation of DeBERTa
The implementation of DeBERTa. Contribute to microsoft/DeBERTa development by creating an account on GitHub.
В режиме авторегрессионной генерации по perplexity на Wikitext-103 лучше GPT-2 и Transformer-XL (не понял только, каких размеров).
По ablations показали, что более-менее все добавления в модель нужны (EMD, content-to-position, position-to-content).
DeBERTa-large обучалась на 6 DGX-2 с 96 V100. Одна модель на 1М шагов обучается 20 дней. Забудьте, если вы не гугл.
Обучили также тяжёлую DeBERTa на 1.5B параметров, у неё в SuperGLUE общий скор 89.9 (у человека 89.8). У ансамбля DeBERT те самые лидерские 90.3. Гугловая T5 вроде как в версии 11B там (но ждём также их могучий Switch Transformer).
Такие вот дела. Microsoft вроде как собирается предоставлять доступ к модели через API в рамках их моделей Turing. Эта называется Turing NLRv4.
По ablations показали, что более-менее все добавления в модель нужны (EMD, content-to-position, position-to-content).
DeBERTa-large обучалась на 6 DGX-2 с 96 V100. Одна модель на 1М шагов обучается 20 дней. Забудьте, если вы не гугл.
Обучили также тяжёлую DeBERTa на 1.5B параметров, у неё в SuperGLUE общий скор 89.9 (у человека 89.8). У ансамбля DeBERT те самые лидерские 90.3. Гугловая T5 вроде как в версии 11B там (но ждём также их могучий Switch Transformer).
Такие вот дела. Microsoft вроде как собирается предоставлять доступ к модели через API в рамках их моделей Turing. Эта называется Turing NLRv4.
Обзор интересной статьи про применение contrastive learning для биологии
Forwarded from DL in biology (Зоя Червонцева)
Evolution Is All You Need: Phylogenetic Augmentation for Contrastive Learning
Текст: https://arxiv.org/abs/2012.13475
Код: нет, но есть формулы
Статья-видение. Авторы предлагают новую разновидность contrastive learning для обучения именно биологических моделей.
Contrastive learning -- одна из популярных концепций самообучения (self-supervised learning). Самообучение часто бывает полезно, когда данных много, а меток для них мало. Можно предобучиться на неразмеченных данных и что-то понять про их структуру -- а потом уже приступать к классификации. Для стадии предобучения данные часто размножают (аугментируют), и в этой работе авторы заметили, что биологические данные и так уже аугментированы эволюцией, причем очень подходящим для contrastive learning образом.
Собственно идея контрастирования заключается в следующем. Представим, что у нас есть картинки, и для каждой картинки определены два разных аугментирующих преобразования -- например, поворот на 90 градусов и размытие. Цель -- научиться понимать, какие картинки являются вариантами друг друга. Для этого нужно найти такую функцию (энкодер), которая отобразит два варианта одной исходной картинки в максимально близкие точки, а варианты разных картинок -- в далёкие. Будем требовать, чтобы это выполнялось для всех картинок, а степень близости итоговых точек определим через взаимную информацию их распределений. Если хорошо подобрать преобразования, такой энкодер научится отделять важное от неважного.
На практике вместо взаимной информации считают более простую функцию, являющуюся её нижней оценкой. Оптимизируется функция для N пар производных картинок, из которых одна пара “правильная” -- соответствует двум разным преобразованиям одной исходной картинки, а остальные пары “неправильные” -- соответствуют разным картинкам. Преобразования при этом не фиксируют, а сэмплируют каждый раз из некоторого заранее заданного распределения.
Так вот, биология. Авторы предлагают перейти к работе с последовательностями и рассматривать их в контексте ортологических рядов. Исходная “картинка” каждого ряда -- это его предковая последовательность, а все современные последовательности -- преобразования исходной картинки. Теперь можно применить всю ту же процедуру обучения энкодера. Хорошими парами будут считаться пары ортологов, а плохими -- пары из разных семейств. Из некоторого математически мотивированного принципа следует, что хорошие пары лучше составлять из максимально далеких друг от друга последовательностей.
Обученный таким образом энкодер выучит признаки, которые эволюция сохраняет во всех своих “преобразованиях” -- а значит, эти признаки являются биологически важными.
Текст: https://arxiv.org/abs/2012.13475
Код: нет, но есть формулы
Статья-видение. Авторы предлагают новую разновидность contrastive learning для обучения именно биологических моделей.
Contrastive learning -- одна из популярных концепций самообучения (self-supervised learning). Самообучение часто бывает полезно, когда данных много, а меток для них мало. Можно предобучиться на неразмеченных данных и что-то понять про их структуру -- а потом уже приступать к классификации. Для стадии предобучения данные часто размножают (аугментируют), и в этой работе авторы заметили, что биологические данные и так уже аугментированы эволюцией, причем очень подходящим для contrastive learning образом.
Собственно идея контрастирования заключается в следующем. Представим, что у нас есть картинки, и для каждой картинки определены два разных аугментирующих преобразования -- например, поворот на 90 градусов и размытие. Цель -- научиться понимать, какие картинки являются вариантами друг друга. Для этого нужно найти такую функцию (энкодер), которая отобразит два варианта одной исходной картинки в максимально близкие точки, а варианты разных картинок -- в далёкие. Будем требовать, чтобы это выполнялось для всех картинок, а степень близости итоговых точек определим через взаимную информацию их распределений. Если хорошо подобрать преобразования, такой энкодер научится отделять важное от неважного.
На практике вместо взаимной информации считают более простую функцию, являющуюся её нижней оценкой. Оптимизируется функция для N пар производных картинок, из которых одна пара “правильная” -- соответствует двум разным преобразованиям одной исходной картинки, а остальные пары “неправильные” -- соответствуют разным картинкам. Преобразования при этом не фиксируют, а сэмплируют каждый раз из некоторого заранее заданного распределения.
Так вот, биология. Авторы предлагают перейти к работе с последовательностями и рассматривать их в контексте ортологических рядов. Исходная “картинка” каждого ряда -- это его предковая последовательность, а все современные последовательности -- преобразования исходной картинки. Теперь можно применить всю ту же процедуру обучения энкодера. Хорошими парами будут считаться пары ортологов, а плохими -- пары из разных семейств. Из некоторого математически мотивированного принципа следует, что хорошие пары лучше составлять из максимально далеких друг от друга последовательностей.
Обученный таким образом энкодер выучит признаки, которые эволюция сохраняет во всех своих “преобразованиях” -- а значит, эти признаки являются биологически важными.
Анонс для тех, кто интересуется AGI и участвует в семинаре по разбору статей.
Сегодня 23 января, в 21:00 MSK (через час) планируем обсудить широко известную статью Франсуа Шолле "On the measure of intelligence" (https://arxiv.org/abs/1911.01547)
"Пойдусь по статье, расскажу зачем нам нужно формальное измеримое определение интеллекта, какие к нему есть подходы, какие будут более продуктивными, какие менее. Расскажу, какое определение предлагает сам Франсуа. И наконец, расскажу про предложенный им бенчмарк ARC, в чем его достоинства и почему им стоит заниматься уже сейчас, попробую дать краткий обзор того, что с ним уже произошло за год" @Andreyz4k
Если вы ещё не с нами, но вам интересно участвовать в этой активности в качестве слушателя или докладчика (или ещё как), ответьте, пожалуйста, на вопросы анкеты:
https://forms.gle/6dx54vmruiSVAv9A8
Обещаю сегодня перед семинаром отправить приглашения всем, кто их оставит за это время (до 20:50 примерно).
Сегодня 23 января, в 21:00 MSK (через час) планируем обсудить широко известную статью Франсуа Шолле "On the measure of intelligence" (https://arxiv.org/abs/1911.01547)
"Пойдусь по статье, расскажу зачем нам нужно формальное измеримое определение интеллекта, какие к нему есть подходы, какие будут более продуктивными, какие менее. Расскажу, какое определение предлагает сам Франсуа. И наконец, расскажу про предложенный им бенчмарк ARC, в чем его достоинства и почему им стоит заниматься уже сейчас, попробую дать краткий обзор того, что с ним уже произошло за год" @Andreyz4k
Если вы ещё не с нами, но вам интересно участвовать в этой активности в качестве слушателя или докладчика (или ещё как), ответьте, пожалуйста, на вопросы анкеты:
https://forms.gle/6dx54vmruiSVAv9A8
Обещаю сегодня перед семинаром отправить приглашения всем, кто их оставит за это время (до 20:50 примерно).
Google Docs
AGI Seminar / Journal Club
Мы планируем запустить онлайн семинар/журнальный клуб по разбору статей вокруг общего искусственного интеллекта (AGI). Если вам интересно участвовать в этой активности в качестве слушателя или докладчика (или ещё как), ответьте, пожалуйта, на вопросы анкеты…
Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity
William Fedus, Barret Zoph, Noam Shazeer
Статья: https://arxiv.org/abs/2101.03961
В начале 2021 года Гугл опубликовал статью Switch Transformers, которая в медиа прошла под вывеской “Гугл обучил трансформер с 1.6T параметров и побил GPT-3 со своими 175B параметров!”.
Это в целом не совсем корректный и полный месседж хотя бы, например, потому, что ещё полгода назад у Гугла уже была модель на 600B параметров в работе про GShard с примерно такой же архитектурой, а также потому, что сравнивать архитектуру стандартного трансформера (как в GPT-3) с архитектурой MoE (лежащей в основе Switch Transformer или GShard) по общему числу параметров не очень корректно.
Работа и направление на самом деле интересные. В чём суть?
Начать стоит издалека.
Архитектура под названием Mixture of Experts (MoE) в нейросетях является одним из направлений в рамках подхода conditional computation, суть которого в том, что граф вычислений определяется входными данными. В целом сам подход MoE достаточно старый, прослеживается как минимум с начала 1990-х годов (http://www.cs.toronto.edu/~fritz/absps/jjnh91.pdf) и применялся с разного рода моделями, далеко не только нейросетевыми.
В нейросетевых MoE обычно есть множество “экспертов” (отдельных слоёв или даже целых сетей), в которые направляет данные на обработку специальный механизм роутинга (gating network). Этот механизм по входным данным генерирует распределение вероятностей “подходящих” экспертов (и по сути является обучаемым полносвязным слоем с софтмаксом), из которых обычно выбирается сколько-то (немного) топовых экспертов, и в них отправляются данные. Выходы экспертов суммируются и направляются затем в последующий слой. Остальные невыбранные эксперты ничего не получают и в этот момент не работают. Такой вариант, реализованный в виде слоя, называется Sparsely-Gated Mixture-of-Experts Layer, здесь разреженность относится именно к выбору экспертов.
В начале 2017 года весьма представительный коллектив авторов (включая Хинтона, Джеффа Дина, а также Noam Shazeer, одного из авторов работ про более поздние Switch Transformer и GShard) опубликовал знаковую работу про этот метод (“Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer”, https://arxiv.org/abs/1701.06538), где авторы применили слой MoE между двумя слоями рекурретной сети для задачи языкового моделирования (в целом та же задача, которую решает GPT), а также для машинного перевода.
Надо сказать, уже в той работе января 2017 года появилась модель на 137B параметров и это было почти за полтора года до первой GPT (хронологию GPT можно посмотреть здесь: https://blog.inten.to/gpt-3-language-models-are-few-shot-learners-a13d1ae8b1f9).
Данная модель содержала 131072 эксперта (эксперт представлял собой простую feed-forward сеть с одним скрытым слоем), из которых активными в каждый момент времени были только 4. То есть из этих 137B параметров (относящихся, правда, не только к экспертам, но зато не относящихся к большим матрицам эмбеддингов, которые из этого подсчёта исключены) в реальности в каждый момент времени работает очень небольшое (на порядки меньшее) число. За счёт огромной разреженности по экспертам, такие модели требуют заметно меньше вычислений, чем dense модели с равным числом параметров.
Так что для более адекватного сравнения с “обычными” трансформерами было бы правильно ввести какую-то другую метрику, что-то типа “количество активных весов” или как-то ещё и сравниваться по ней. У обычных трансформеров, кстати, это число тоже может быть сильно меньше полного числа параметров (но всё же не настолько сильно, как у MoE), если они используют функции активации типа ReLU, в таких сетях часть “нейронов” по факту может быть выключена.
Та модель 2017 года показала прекрасные результаты и побила state-of-the-art на языковом моделировании, а также вела себя весьма достойно на машинном переводе.
William Fedus, Barret Zoph, Noam Shazeer
Статья: https://arxiv.org/abs/2101.03961
В начале 2021 года Гугл опубликовал статью Switch Transformers, которая в медиа прошла под вывеской “Гугл обучил трансформер с 1.6T параметров и побил GPT-3 со своими 175B параметров!”.
Это в целом не совсем корректный и полный месседж хотя бы, например, потому, что ещё полгода назад у Гугла уже была модель на 600B параметров в работе про GShard с примерно такой же архитектурой, а также потому, что сравнивать архитектуру стандартного трансформера (как в GPT-3) с архитектурой MoE (лежащей в основе Switch Transformer или GShard) по общему числу параметров не очень корректно.
Работа и направление на самом деле интересные. В чём суть?
Начать стоит издалека.
Архитектура под названием Mixture of Experts (MoE) в нейросетях является одним из направлений в рамках подхода conditional computation, суть которого в том, что граф вычислений определяется входными данными. В целом сам подход MoE достаточно старый, прослеживается как минимум с начала 1990-х годов (http://www.cs.toronto.edu/~fritz/absps/jjnh91.pdf) и применялся с разного рода моделями, далеко не только нейросетевыми.
В нейросетевых MoE обычно есть множество “экспертов” (отдельных слоёв или даже целых сетей), в которые направляет данные на обработку специальный механизм роутинга (gating network). Этот механизм по входным данным генерирует распределение вероятностей “подходящих” экспертов (и по сути является обучаемым полносвязным слоем с софтмаксом), из которых обычно выбирается сколько-то (немного) топовых экспертов, и в них отправляются данные. Выходы экспертов суммируются и направляются затем в последующий слой. Остальные невыбранные эксперты ничего не получают и в этот момент не работают. Такой вариант, реализованный в виде слоя, называется Sparsely-Gated Mixture-of-Experts Layer, здесь разреженность относится именно к выбору экспертов.
В начале 2017 года весьма представительный коллектив авторов (включая Хинтона, Джеффа Дина, а также Noam Shazeer, одного из авторов работ про более поздние Switch Transformer и GShard) опубликовал знаковую работу про этот метод (“Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer”, https://arxiv.org/abs/1701.06538), где авторы применили слой MoE между двумя слоями рекурретной сети для задачи языкового моделирования (в целом та же задача, которую решает GPT), а также для машинного перевода.
Надо сказать, уже в той работе января 2017 года появилась модель на 137B параметров и это было почти за полтора года до первой GPT (хронологию GPT можно посмотреть здесь: https://blog.inten.to/gpt-3-language-models-are-few-shot-learners-a13d1ae8b1f9).
Данная модель содержала 131072 эксперта (эксперт представлял собой простую feed-forward сеть с одним скрытым слоем), из которых активными в каждый момент времени были только 4. То есть из этих 137B параметров (относящихся, правда, не только к экспертам, но зато не относящихся к большим матрицам эмбеддингов, которые из этого подсчёта исключены) в реальности в каждый момент времени работает очень небольшое (на порядки меньшее) число. За счёт огромной разреженности по экспертам, такие модели требуют заметно меньше вычислений, чем dense модели с равным числом параметров.
Так что для более адекватного сравнения с “обычными” трансформерами было бы правильно ввести какую-то другую метрику, что-то типа “количество активных весов” или как-то ещё и сравниваться по ней. У обычных трансформеров, кстати, это число тоже может быть сильно меньше полного числа параметров (но всё же не настолько сильно, как у MoE), если они используют функции активации типа ReLU, в таких сетях часть “нейронов” по факту может быть выключена.
Та модель 2017 года показала прекрасные результаты и побила state-of-the-art на языковом моделировании, а также вела себя весьма достойно на машинном переводе.
👍3❤1
Другим большим достижением я бы назвал работу про GShard середины 2020 года (“GShard: Scaling Giant Models with Conditional Computation and Automatic Sharding”, https://arxiv.org/abs/2006.16668). Среди авторов Дмитрий Лепихин (пользуясь случаем, хочу передать привет :) ) и другие, включая всё того же Noam Shazeer.
В этой работе MoE применили к трансформерам, в которых каждый второй feed-forward слой в энкодере и декодере заменили на MoE с top-2 активными в каждый момент времени экспертами. Модель отскейлили до 600B параметров (2048 экспертов, 36 слоёв трансформера) и обучали на 2048 TPU v3 под задачу мультиязычного машинного перевода, и получили заметное улучшение качества.
Чтобы трансформер с MoE можно было так отскейлить, разработали модуль GShard, предоставляющий API для шардирования моделей, по сути представляющий собой аннотации для тензоров.
В работе даже попробовали обучить модель на 1T параметров (2048 экспертов, 60 слоёв), но с ней были проблемы по части стабильности при обучении на bfloat16 (остальное обучалось на float32; напоминаю, что про форматы чисел с плавающей точкой есть подробная статья https://moocaholic.medium.com/fp64-fp32-fp16-bfloat16-tf32-and-other-members-of-the-zoo-a1ca7897d407).
Ну и собственно Switch Transformer во многом продолжает эту линию. Алгоритм роутинга в MoE упростили, теперь активен только один эксперт всё в том же feed-forward слое (был отдельный эксперимент по добавлению MoE в слой внимания, и это даёт лучший результат, но работает на float32, а на bfloat16 расходится). Каждый токен отправляется в соответствующего ему эксперта.
Делали это поверх Mesh-Tensorflow, в работе есть сколько-то оптимизаций для улучшения обучения (например, везде используют bfloat16, что ощутимо облегчает коммуникацию, и только внутри функции роутера всё приводят к float32; более хитрые инициализации и регуляризации).
Сравниваются с моделями семейста T5: T5-base (223M), T5-large (739M), для сравнения с ними делают Switch-base (7.4B) и Switch-large (26.3B) так, чтобы по количеству вычислений (FLOPS) они совпадали.
Делают предобучение на Masked Language Model (MLM, по типу BERT’а) и файн-тюнинг на задачах из GLUE, SQuAD, SuperGLUE и т.д.
Был ещё дополнительный лосс, помогающий балансировать нагрузку по различным экспертам, чтобы никакой из них не перетрудился и не стал узким местом, к кому стоит очередь. Исключать, кстати, такого всё равно нельзя и на случай, когда кто-то окажется перегружен и не успеет обработать какой-то из входящих токенов, этот токен (вернее его эмбеддинг) пробрасывается на выход, благо там везде residual connections. Было предположение, что качество от этого страдает, поэтому сделали No-Token-Left-Behind роутинг, который, если обнаруживает, что токен отправлен на перегруженного эксперта, рероутит его на другого. Но это на практике ничего не дало.
Новых state-of-the-art здесь не получают, но зато показывают, что, во-первых, Switch Transformer превосходит обычный трансформер по качеству; во-вторых, он хорошо скейлится по числу экспертов (чем больше, тем выше качество; при этом не забывайте, что активен в каждый момент только один эксперт, так что это не ансамбль в традиционном виде), а также, в-третьих, при фиксированном объёме вычислений достигает лучшего результата, чем традиционный трансформер (в 7 раз быстрее для base варианта).
Большой Switch Transformer можно отдистиллировать (про дистилляцию у нас в канале вообще было много всего) в обычный, например, Switch-base в T5-base, и это даст качество выше, чем если с нуля обучать аналогичный обычный (T5-base), сохраняется примерно 30% улучшения. Сравнились также с мультиязычным mT5, получили прирост на всех языках (про T5 и mT5 мы писали https://news.1rj.ru/str/gonzo_ML/442).
В этой работе MoE применили к трансформерам, в которых каждый второй feed-forward слой в энкодере и декодере заменили на MoE с top-2 активными в каждый момент времени экспертами. Модель отскейлили до 600B параметров (2048 экспертов, 36 слоёв трансформера) и обучали на 2048 TPU v3 под задачу мультиязычного машинного перевода, и получили заметное улучшение качества.
Чтобы трансформер с MoE можно было так отскейлить, разработали модуль GShard, предоставляющий API для шардирования моделей, по сути представляющий собой аннотации для тензоров.
В работе даже попробовали обучить модель на 1T параметров (2048 экспертов, 60 слоёв), но с ней были проблемы по части стабильности при обучении на bfloat16 (остальное обучалось на float32; напоминаю, что про форматы чисел с плавающей точкой есть подробная статья https://moocaholic.medium.com/fp64-fp32-fp16-bfloat16-tf32-and-other-members-of-the-zoo-a1ca7897d407).
Ну и собственно Switch Transformer во многом продолжает эту линию. Алгоритм роутинга в MoE упростили, теперь активен только один эксперт всё в том же feed-forward слое (был отдельный эксперимент по добавлению MoE в слой внимания, и это даёт лучший результат, но работает на float32, а на bfloat16 расходится). Каждый токен отправляется в соответствующего ему эксперта.
Делали это поверх Mesh-Tensorflow, в работе есть сколько-то оптимизаций для улучшения обучения (например, везде используют bfloat16, что ощутимо облегчает коммуникацию, и только внутри функции роутера всё приводят к float32; более хитрые инициализации и регуляризации).
Сравниваются с моделями семейста T5: T5-base (223M), T5-large (739M), для сравнения с ними делают Switch-base (7.4B) и Switch-large (26.3B) так, чтобы по количеству вычислений (FLOPS) они совпадали.
Делают предобучение на Masked Language Model (MLM, по типу BERT’а) и файн-тюнинг на задачах из GLUE, SQuAD, SuperGLUE и т.д.
Был ещё дополнительный лосс, помогающий балансировать нагрузку по различным экспертам, чтобы никакой из них не перетрудился и не стал узким местом, к кому стоит очередь. Исключать, кстати, такого всё равно нельзя и на случай, когда кто-то окажется перегружен и не успеет обработать какой-то из входящих токенов, этот токен (вернее его эмбеддинг) пробрасывается на выход, благо там везде residual connections. Было предположение, что качество от этого страдает, поэтому сделали No-Token-Left-Behind роутинг, который, если обнаруживает, что токен отправлен на перегруженного эксперта, рероутит его на другого. Но это на практике ничего не дало.
Новых state-of-the-art здесь не получают, но зато показывают, что, во-первых, Switch Transformer превосходит обычный трансформер по качеству; во-вторых, он хорошо скейлится по числу экспертов (чем больше, тем выше качество; при этом не забывайте, что активен в каждый момент только один эксперт, так что это не ансамбль в традиционном виде), а также, в-третьих, при фиксированном объёме вычислений достигает лучшего результата, чем традиционный трансформер (в 7 раз быстрее для base варианта).
Большой Switch Transformer можно отдистиллировать (про дистилляцию у нас в канале вообще было много всего) в обычный, например, Switch-base в T5-base, и это даст качество выше, чем если с нуля обучать аналогичный обычный (T5-base), сохраняется примерно 30% улучшения. Сравнились также с мультиязычным mT5, получили прирост на всех языках (про T5 и mT5 мы писали https://news.1rj.ru/str/gonzo_ML/442).
arXiv.org
GShard: Scaling Giant Models with Conditional Computation and...
Neural network scaling has been critical for improving the model quality in many real-world machine learning applications with vast amounts of training data and compute. Although this trend of...
👍1
По сути Switch Transformer добавляет новое измерение для распараллеливания. К традиционным data- (когда разные части датасета обрабатываются копиями модели на разных узлах) и model-parallelism (когда части одной модели вычисляются на разных узлах) добавляется expert-parallelism (когда разные эксперты вычисляются на разных узлах). И, конечно, всё это можно комбинировать. И даже нужно, если модель очень большая.
И вот, собственно, очень большая модель возникает. Авторы обучают модели Switch-XXL (395B параметров, 64 эксперта), аналогичную по количеству вычислений T5-XXL (13B, 8.7T FLOPS/sequence), а также Switch-C (1571B, 2048 экспертов, более лёгкая для вычислений, “всего” 890B FLOPS/sequence) — вот она, пресловутая модель на 1.6T параметров. Switch-C, кстати, обучали только с использованием expert-parallelism.
Из ожидаемого, Switch-XXL обошёл по качеству T5-XXL. Из менее ожидаемого, Switch-C даёт качество ниже, чем Switch-XXL за то же число шагов, но поскольку по вычислениям он в разы легче (примерно 10x), то при одинаковом вычислительном бюджете он добирается до фиксированного качества раньше, чем Switch-XXL. Также из неожиданного, что Switch-C нестабильности при обучении не демонстрирует, а Switch-XXL иногда нестабилен. Ещё из неожиданного есть то, что Switch-XXL получает state-of-the-art на предобучении, но не получает его на задачах после файн-тюнинга на SuperGLUE (но в целом положительная корреляция есть) — эта динамика требует отдельного изучения.
Практический вопрос: нужно ли всё это, если у вас нет суперкомпьютера с кучей TPU/GPU? Авторы показали, что улучшение есть даже на двух экспертах, а это можно использовать и с маленькими моделями, влезающими на скромные машины.
В общем интересное направление, можно ожидать перевода в практическую плоскость даже для “простых смертных”.
И вот, собственно, очень большая модель возникает. Авторы обучают модели Switch-XXL (395B параметров, 64 эксперта), аналогичную по количеству вычислений T5-XXL (13B, 8.7T FLOPS/sequence), а также Switch-C (1571B, 2048 экспертов, более лёгкая для вычислений, “всего” 890B FLOPS/sequence) — вот она, пресловутая модель на 1.6T параметров. Switch-C, кстати, обучали только с использованием expert-parallelism.
Из ожидаемого, Switch-XXL обошёл по качеству T5-XXL. Из менее ожидаемого, Switch-C даёт качество ниже, чем Switch-XXL за то же число шагов, но поскольку по вычислениям он в разы легче (примерно 10x), то при одинаковом вычислительном бюджете он добирается до фиксированного качества раньше, чем Switch-XXL. Также из неожиданного, что Switch-C нестабильности при обучении не демонстрирует, а Switch-XXL иногда нестабилен. Ещё из неожиданного есть то, что Switch-XXL получает state-of-the-art на предобучении, но не получает его на задачах после файн-тюнинга на SuperGLUE (но в целом положительная корреляция есть) — эта динамика требует отдельного изучения.
Практический вопрос: нужно ли всё это, если у вас нет суперкомпьютера с кучей TPU/GPU? Авторы показали, что улучшение есть даже на двух экспертах, а это можно использовать и с маленькими моделями, влезающими на скромные машины.
В общем интересное направление, можно ожидать перевода в практическую плоскость даже для “простых смертных”.