Анонс для тех, кто интересуется 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? Авторы показали, что улучшение есть даже на двух экспертах, а это можно использовать и с маленькими моделями, влезающими на скромные машины.
В общем интересное направление, можно ожидать перевода в практическую плоскость даже для “простых смертных”.
Очередные анонсы (от @che-shr-cat).
На следующий неделе делаю два доклада на конференции OpenTalks.ai.
1) 04 февраля в 15:15 "Главные результаты в NLP в 2020 году". Дам свой топ главных достижений за последний год. И это не только GPT-3 :)
2) 05 февраля в 13:15 "Обзорный доклад про железо для ИИ" по мотивам моей серии постов про железо (включая ещё не вышедшие части) https://blog.inten.to/hardware-for-deep-learning-current-state-and-trends-51c01ebbb6dc
Также обзоры по CV и RL сделают Алексей Досовицкий из Google Brain и Александр Новиков из DeepMind.
Расписание конференции здесь:
https://opentalks.ai/ru/timetable
Конференция платная, но организаторы дали нам код на 25% скидки, пользуйтесь: gonzoOpenTalksAI
На следующий неделе делаю два доклада на конференции OpenTalks.ai.
1) 04 февраля в 15:15 "Главные результаты в NLP в 2020 году". Дам свой топ главных достижений за последний год. И это не только GPT-3 :)
2) 05 февраля в 13:15 "Обзорный доклад про железо для ИИ" по мотивам моей серии постов про железо (включая ещё не вышедшие части) https://blog.inten.to/hardware-for-deep-learning-current-state-and-trends-51c01ebbb6dc
Также обзоры по CV и RL сделают Алексей Досовицкий из Google Brain и Александр Новиков из DeepMind.
Расписание конференции здесь:
https://opentalks.ai/ru/timetable
Конференция платная, но организаторы дали нам код на 25% скидки, пользуйтесь: gonzoOpenTalksAI
Слайды со вчерашнего выступления на OpenTalks.ai.
Что важного (на мой взгляд) произошло в NLP в 2020-м году.
https://www.slideshare.net/grigorysapunov/nlp-in-2020
Что важного (на мой взгляд) произошло в NLP в 2020-м году.
https://www.slideshare.net/grigorysapunov/nlp-in-2020
Slideshare
NLP in 2020
This document summarizes developments in natural language processing (NLP) in 2020. It discusses large language models like GPT-3, the increasing sizes of transformer-based models, issues with large models, multilingual models, more efficient transformer…
Слайды с сегодняшнего выступления про железо для AI.
https://www.slideshare.net/grigorysapunov/ai-hardware-landscape-2021
https://www.slideshare.net/grigorysapunov/ai-hardware-landscape-2021
SlideShare
AI Hardware Landscape 2021
Hardware for deep learning includes CPUs, GPUs, FPGAs, and ASICs. CPUs are general purpose but support deep learning through instructions like AVX-512 and libraries. GPUs like NVIDIA and AMD models are commonly used due to high parallelism and memory bandwidth.…