Тут в чате затронули тему длинных трансформеров и я вспонил, что недавно делал презентацию с их обзором. Думаю кому-нибудь может быть полезно.
TL;DR: используйте BigBird или Linformer
https://docs.google.com/presentation/d/1qRcKLldtepnkDohA5AVqC6stMkdqjPEb4ev9jQUexh8/edit?usp=sharing
TL;DR: используйте BigBird или Linformer
https://docs.google.com/presentation/d/1qRcKLldtepnkDohA5AVqC6stMkdqjPEb4ev9jQUexh8/edit?usp=sharing
Google Docs
Applying Transformer Models to Long Texts: Challenges and Solutions.
Applying Transformer Models to Long Texts: Challenges and Solutions. Vladislav Lialin, Text Machine Lab, UMass Lowell [email protected]
Extracting Training Data from Large Language Models
Carlini et al.
статья: arxiv.org/abs/2012.07805
блогпост: bair.berkeley.edu/blog/2020/12/20/lmmem
Мы знаем, что языковые модели могут хорошо запоминать обучающую выборку (см Language Models and Knowledge Bases) и всегда подозревали, что они даже запоминают строки, встречающиеся в датасете всего один-два раза. Carlini et al. исследуют, как можно доставать именно такую информацию из GPT-2 (1.5B параметров).
Подход состоит из двух шагов: нагенерировать текстов, отсортировать их. Методы семплирования и сортировки очень важны, чтобы отсеить случаи, когда модель выдаёт тривиальные факты (числа от 0 до 100 или лицензию MIT) или просто повторяет одну фразу (I love you I love you I love you).
Для генерации модели давали префиксы текстов наскрапленых из интернета таким образом, чтобы они не пересекались с тренировочным сетом GPT-2.
Для сортировки сравнивали энтропию текста, которую выдавал алгоритм сжатия zlib. Идея в том, что тексты с низкой энтропией скорее всего и являются тривиальными / повторяющимися.
(И для семплирования и для сортировки пробовали и другие методы, за ними посылаю в статью.)
Более 60% сгенерированных текстов оказались реальными тектсами 😱 , что проверили вручную с помощью поиска в интеренете. Хоть большинство из них содержали открытые вещи, вроде новостных статей, terms of use, твитов Трампа, …, более 10% содержали в себе адреса/номера телефонов/twitter и другую персональную информацию реальных людей.
Очень советую статью к прочтению, в ней понятным и адекватным образом описаны этические вопросы. Своё мнение я бы сформулировал так: GPT-2 и друзья и так тренируются на публичных данных, до которых и так несложно добраться. Но, большим компаниям, тренирующих BERTы на внутренних данных нужно начать думать о том, как защищать веса этих моделей от утечек / использовать методы differentially private training.
Carlini et al.
статья: arxiv.org/abs/2012.07805
блогпост: bair.berkeley.edu/blog/2020/12/20/lmmem
Мы знаем, что языковые модели могут хорошо запоминать обучающую выборку (см Language Models and Knowledge Bases) и всегда подозревали, что они даже запоминают строки, встречающиеся в датасете всего один-два раза. Carlini et al. исследуют, как можно доставать именно такую информацию из GPT-2 (1.5B параметров).
Подход состоит из двух шагов: нагенерировать текстов, отсортировать их. Методы семплирования и сортировки очень важны, чтобы отсеить случаи, когда модель выдаёт тривиальные факты (числа от 0 до 100 или лицензию MIT) или просто повторяет одну фразу (I love you I love you I love you).
Для генерации модели давали префиксы текстов наскрапленых из интернета таким образом, чтобы они не пересекались с тренировочным сетом GPT-2.
Для сортировки сравнивали энтропию текста, которую выдавал алгоритм сжатия zlib. Идея в том, что тексты с низкой энтропией скорее всего и являются тривиальными / повторяющимися.
(И для семплирования и для сортировки пробовали и другие методы, за ними посылаю в статью.)
Более 60% сгенерированных текстов оказались реальными тектсами 😱 , что проверили вручную с помощью поиска в интеренете. Хоть большинство из них содержали открытые вещи, вроде новостных статей, terms of use, твитов Трампа, …, более 10% содержали в себе адреса/номера телефонов/twitter и другую персональную информацию реальных людей.
Очень советую статью к прочтению, в ней понятным и адекватным образом описаны этические вопросы. Своё мнение я бы сформулировал так: GPT-2 и друзья и так тренируются на публичных данных, до которых и так несложно добраться. Но, большим компаниям, тренирующих BERTы на внутренних данных нужно начать думать о том, как защищать веса этих моделей от утечек / использовать методы differentially private training.
The Berkeley Artificial Intelligence Research Blog
Does GPT-2 Know Your Phone Number?
The BAIR Blog
Learning from others' mistakes: Avoiding dataset biases without modeling them
Sanh et al. [Hugging Face]
arxiv.org/abs/2012.01300
В больших датасетах вроде MNLI с моделями случаются плохие вещи из-за низкого качества данных. Многие примеры можно правильно классифицировать с помощью эвристик, не имеющих ничего общего с задачей. Например, наличие слова “no” очень повышает вероятность класса “противоречие”.
Эту проблему можно решить очисткой датасета или нахождением конкретных эвристик и построением adversarial примеров для них. Но авторы этой статьи предложили метод, который не требует никакой ручной работы для исправления этой проблемы.
Идея в том, что в начале вы тренируете небольшую модель для классификации w, например TinyBERT из двух слоёв. Она выучивает самые простые зависимости в данных. Далее вы замораживаете эту модель и учите большую модель b на вот таком лоссе:
Идея в том, что градиенты для тех примеров, где простая модель ошибается будут большими, а там, где простая модель справляется будут очень маленькими. В результате модель b показывает хорошее качество на adversarial-тестовом датасете HANS.
Sanh et al. [Hugging Face]
arxiv.org/abs/2012.01300
В больших датасетах вроде MNLI с моделями случаются плохие вещи из-за низкого качества данных. Многие примеры можно правильно классифицировать с помощью эвристик, не имеющих ничего общего с задачей. Например, наличие слова “no” очень повышает вероятность класса “противоречие”.
Эту проблему можно решить очисткой датасета или нахождением конкретных эвристик и построением adversarial примеров для них. Но авторы этой статьи предложили метод, который не требует никакой ручной работы для исправления этой проблемы.
Идея в том, что в начале вы тренируете небольшую модель для классификации w, например TinyBERT из двух слоёв. Она выучивает самые простые зависимости в данных. Далее вы замораживаете эту модель и учите большую модель b на вот таком лоссе:
CrossEntropy(p_w * p_b, label)
.Идея в том, что градиенты для тех примеров, где простая модель ошибается будут большими, а там, где простая модель справляется будут очень маленькими. В результате модель b показывает хорошее качество на adversarial-тестовом датасете HANS.
Очень много шума наделала модель DALL·E от OpenAI, которая умеет генерировать картинки вместе с текстом.
К сожалению, OpenAI (уже традиционно) опубликовали блогпост без статьи 😕, поэтому придётся угадывать что же они там делали. Ещё один момент - зачастую блогпост OpenAI и статья OpenAI очень разные. Поэтому подробный обзор DALL·E будет позже.
Сейчас попытаюсь саммаризировать то, что я понял и мои предположения,
DALL·E - это просто языковая модель-трансформер. Но она обучена на последовательностях вида “текст связанный с картинкой <значения пикселей картинки>”. О том, как OpenAI применяет языковое моделирование для изображений можно почтитать тут.
Моделируется последовательность состоящая и из текста и из картинки просто одним большим трансформером. То есть модель предсказывает следующий токен, который может быть как словом, так и пикселем. При этом картинка и текст связанны друг с другом и помогают друг друга предсказать.
Теперь мои догадки о том, как майнили пары текст-изображение. Скорее всего просто делали поиск в интернете и майнили соответствующие картинки, соответствующие коротким фразам из датасета на котором тренировали GPT-3. Что ещё можно было сделать: как-то отсеивать тексты, которые не похожи на описания картинок или делать поиск наоборот - текста по намайненым картинкам. В конце-концов третья вещь - использовать предтренированные модели object detection или metric learning чтобы проверять, что картинки и правда похожи на текст. В качестве такой модели можно использовать DALL·E, который натренирован на предыдущей итерации датасета (оценивая моделью вероятность текста при условии картинки или наоборот).
Результаты:
Можно генерировать изображения обусловливаясь на тексте или даже не тексте и начале изображения. При этом качество картинок и уровень понимания текста зачастую очень удивляют. Например вы можете написать “вот такой же чайник, но со словом GPT на нём <картинка чайника>” и получить вот такие картинки.
openai.com/blog/dall-e
Неофициальная имплементация: github.com/lucidrains/DALLE-pytorch
Спасибо за ссылку @Archelunch
К сожалению, OpenAI (уже традиционно) опубликовали блогпост без статьи 😕, поэтому придётся угадывать что же они там делали. Ещё один момент - зачастую блогпост OpenAI и статья OpenAI очень разные. Поэтому подробный обзор DALL·E будет позже.
Сейчас попытаюсь саммаризировать то, что я понял и мои предположения,
DALL·E - это просто языковая модель-трансформер. Но она обучена на последовательностях вида “текст связанный с картинкой <значения пикселей картинки>”. О том, как OpenAI применяет языковое моделирование для изображений можно почтитать тут.
Моделируется последовательность состоящая и из текста и из картинки просто одним большим трансформером. То есть модель предсказывает следующий токен, который может быть как словом, так и пикселем. При этом картинка и текст связанны друг с другом и помогают друг друга предсказать.
Теперь мои догадки о том, как майнили пары текст-изображение. Скорее всего просто делали поиск в интернете и майнили соответствующие картинки, соответствующие коротким фразам из датасета на котором тренировали GPT-3. Что ещё можно было сделать: как-то отсеивать тексты, которые не похожи на описания картинок или делать поиск наоборот - текста по намайненым картинкам. В конце-концов третья вещь - использовать предтренированные модели object detection или metric learning чтобы проверять, что картинки и правда похожи на текст. В качестве такой модели можно использовать DALL·E, который натренирован на предыдущей итерации датасета (оценивая моделью вероятность текста при условии картинки или наоборот).
Результаты:
Можно генерировать изображения обусловливаясь на тексте или даже не тексте и начале изображения. При этом качество картинок и уровень понимания текста зачастую очень удивляют. Например вы можете написать “вот такой же чайник, но со словом GPT на нём <картинка чайника>” и получить вот такие картинки.
openai.com/blog/dall-e
Неофициальная имплементация: github.com/lucidrains/DALLE-pytorch
Спасибо за ссылку @Archelunch
Openai
DALL·E: Creating images from text
We’ve trained a neural network called DALL·E that creates images from text captions for a wide range of concepts expressible in natural language.
Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity
arxiv.org/abs/2101.03961
Fedus et al. [Google Brain]
Twitter thread: тык
Код: тык
TL;DR Допилили напильником mixture of experts, чтобы натренировать модель с 1.6 триллионами параметров.
Рисёч в области больших неросетей уже больше рисёч в области high-performance computing, чем в области нейросетей: вам нужно, чтобы ваши 100500 GPU друг с другом эффективно коммуницировали и чтобы каждая из них использовалась в полную силу. Одним из путей решения этих проблем (и создания новых) является подход Mixture of Experts (MoE), который уже позволил натренировать трансформер с 1 триллионом парметров. Основная идея: в каждом (втором) слое транфмораера FFN слой заменяется на MoE-слой, который представляет собой N (~1024) очень широких полносвязных сеток-экспертов (у них разные параметры). Каждая из сеток может лежать на своей GPU и входящая последовательность токенов в начале попадает в сетку-роутер, которая с помощью софтмакса определяет какой токен отдать каким k экспертам.
Авторы Switch Transformers дорабатывают этот подход:
1. Используют k=1 - то есть роутер отдаёт каждый токен только в одного эксперта. В оригинальной MoE-статье говорилось, что это не должно работать, тк градиенты становятся тривиальными. Но у Switch Transformers заработало 💁♂️.
1. Перед расчётом софтмакса в роутере конвертируют тензоры в fp32. Вся остальная сетка работает в fp16.
1. Чуть-чуть поменяли вид регуляризации, которая заставляет роутер использовать всех экспертов и не концентрироваться только на нескольких из них.
1. Инициализируют модель в sqrt(10) раз меньшими числами.
1. Если в эксперта приходит слишком много токенов, часть этих токенов пропускает эксперта (по сути делается skip-connection).
Результаты:
1. Обучается с меньшим количеством танцев с бубном, чем MoE - позволяют натренировать модель с 1.6 триллионами параметров без проблем с нестабильностью
1. На 600% раз быстрее, чем T5 с эквивалентным FLOPS/token и на 20% быстрее, чем MoE.
1. На языковом моделировании и на NLU-датасетах типа SuperGLUE заметно улучшает результаты T5 (размер моделей подобран так, что на их предобучение уходит одинаковое время).
1. Авторы предполагают, что даже относительно небольшие модели могут работать лучше и обучаться быстрее, если использовать Switch Transformers.
Статья очень большая и читается сложновато. Если решите вникнуть поглубже, рекомендую обратить внимание на Appendix F с псевдо-TF-кодом.
Ещё вот неплохая имплементация MoE на PyTorch: тык
arxiv.org/abs/2101.03961
Fedus et al. [Google Brain]
Twitter thread: тык
Код: тык
TL;DR Допилили напильником mixture of experts, чтобы натренировать модель с 1.6 триллионами параметров.
Рисёч в области больших неросетей уже больше рисёч в области high-performance computing, чем в области нейросетей: вам нужно, чтобы ваши 100500 GPU друг с другом эффективно коммуницировали и чтобы каждая из них использовалась в полную силу. Одним из путей решения этих проблем (и создания новых) является подход Mixture of Experts (MoE), который уже позволил натренировать трансформер с 1 триллионом парметров. Основная идея: в каждом (втором) слое транфмораера FFN слой заменяется на MoE-слой, который представляет собой N (~1024) очень широких полносвязных сеток-экспертов (у них разные параметры). Каждая из сеток может лежать на своей GPU и входящая последовательность токенов в начале попадает в сетку-роутер, которая с помощью софтмакса определяет какой токен отдать каким k экспертам.
Авторы Switch Transformers дорабатывают этот подход:
1. Используют k=1 - то есть роутер отдаёт каждый токен только в одного эксперта. В оригинальной MoE-статье говорилось, что это не должно работать, тк градиенты становятся тривиальными. Но у Switch Transformers заработало 💁♂️.
1. Перед расчётом софтмакса в роутере конвертируют тензоры в fp32. Вся остальная сетка работает в fp16.
1. Чуть-чуть поменяли вид регуляризации, которая заставляет роутер использовать всех экспертов и не концентрироваться только на нескольких из них.
1. Инициализируют модель в sqrt(10) раз меньшими числами.
1. Если в эксперта приходит слишком много токенов, часть этих токенов пропускает эксперта (по сути делается skip-connection).
Результаты:
1. Обучается с меньшим количеством танцев с бубном, чем MoE - позволяют натренировать модель с 1.6 триллионами параметров без проблем с нестабильностью
1. На 600% раз быстрее, чем T5 с эквивалентным FLOPS/token и на 20% быстрее, чем MoE.
1. На языковом моделировании и на NLU-датасетах типа SuperGLUE заметно улучшает результаты T5 (размер моделей подобран так, что на их предобучение уходит одинаковое время).
1. Авторы предполагают, что даже относительно небольшие модели могут работать лучше и обучаться быстрее, если использовать Switch Transformers.
Статья очень большая и читается сложновато. Если решите вникнуть поглубже, рекомендую обратить внимание на Appendix F с псевдо-TF-кодом.
Ещё вот неплохая имплементация MoE на PyTorch: тык
Twitter
AK
Switch Transformers: Scaling to Trillion Parameter Models with Simple and Efficient Sparsity pdf: https://t.co/0i6fcOuy4X abs: https://t.co/AUKgennqZy github: https://t.co/8QD4sJ2ckE
🤯CBOW считали хуже Skip-Gram, потому что в оригинальной имплементации был баг - не нормализовали градиент на число слов.
Какой-то очень дерзкий ход от 🤗. Можно поиграться со *всеми* их модельками прямо в браузере. И купить у них API (на удивление недорого).
Очень подробно описанная имплементация Switch Transformer. Выглядит прямо отлично, советую почитать всем.
lab-ml.com/labml_nn/transformers/switch/
lab-ml.com/labml_nn/transformers/switch/
Forwarded from эйай ньюз
Уроки пиара от Майкрософт.
Литерали чат-бот натренированный на переписке с мертвым человеком — то, о чем думал каждый, кто тренировал чат-ботов. Но нет. "Воскрешение мертвых", черное зеркало, гроб, гроб, кладбище.
Дарю идею дляпатента попадания в СМИ: тренируете чатбота на переписке с живым человеком, а в конце озаглавливаете "ПРОЕКТ ПО ТРАСПЛАНТАЦИИ ЛИЧНОСТИ".
Литерали чат-бот натренированный на переписке с мертвым человеком — то, о чем думал каждый, кто тренировал чат-ботов. Но нет. "Воскрешение мертвых", черное зеркало, гроб, гроб, кладбище.
Дарю идею для
Пока интересные статьи на глаза не попадаются, но попался пост 2009 года (“BC” по меркам диплёрнинга), который очень хорошо состарился.
Главная его мысль состоит в том, что автоматическое дифференцирование - это must have тулза в ML, но люди с ней незнакомы. И призывы к тому, что это нужно менять.
Сейчас в мире DL нет ни одного человека, кто не работал бы с автоматическим дифференцированием - потому что это основа и TF, и PyTorch и всех остальных нейросетевых фреймворков. Однако, далеко не все понимают что это такое и чем автоматическое дифференцирование отличается от численного и от аналитического. И пост является хорошим ответом на эти вопросы.
Главная его мысль состоит в том, что автоматическое дифференцирование - это must have тулза в ML, но люди с ней незнакомы. И призывы к тому, что это нужно менять.
Сейчас в мире DL нет ни одного человека, кто не работал бы с автоматическим дифференцированием - потому что это основа и TF, и PyTorch и всех остальных нейросетевых фреймворков. Однако, далеко не все понимают что это такое и чем автоматическое дифференцирование отличается от численного и от аналитического. И пост является хорошим ответом на эти вопросы.
Justin Domke
Automatic Differentiation: The most criminally underused tool in the potential machine learning toolbox?
Update: (November 2015) In the almost seven years since writing this, there has been an explosion of great tools for automatic differentiation and a corresponding upsurge in its use. Thus, happily,…