Andrej Karpathy опубликовал мега простую минимальную имплементацию языковой модели на трансформерах. Подобной штуки очень не хватало как для того, чтобы учить трансформер, так и для того, чтобы по быстрому поиграться с легковесной нейронной языковой моделькой (а не с 20000 строк кода в fairseq).
Очень советую посмотреть на код, может быть даже вдумчиво почитать. Хоть код и не идеален, он очень приятно читается.
И, кстати, вы тоже можете написать что-то подобное. Есть очень много областей, которые покрыты либо тяжёлыми фреймворками, либо низкокачественными случайными репозиториями с миллионом ноутбуков.
https://github.com/karpathy/minGPT
Очень советую посмотреть на код, может быть даже вдумчиво почитать. Хоть код и не идеален, он очень приятно читается.
И, кстати, вы тоже можете написать что-то подобное. Есть очень много областей, которые покрыты либо тяжёлыми фреймворками, либо низкокачественными случайными репозиториями с миллионом ноутбуков.
https://github.com/karpathy/minGPT
GitHub
GitHub - karpathy/minGPT: A minimal PyTorch re-implementation of the OpenAI GPT (Generative Pretrained Transformer) training
A minimal PyTorch re-implementation of the OpenAI GPT (Generative Pretrained Transformer) training - karpathy/minGPT
Forwarded from addmeto
Небольшой фантастический рассказ, в котором часть текста и диалог в конце написаны нейронкой GPT-3. Отдельно оцените по краям общение Автора и нейронки, по ней хорошо видно, что она неплохо поддерживает диалог на базе того что написано.
Очень, очень красивый эксперимент, показывающий как в ближайшем будущем будет работать парное написание текстов, ИИ и живой человек вместе дают результат намного лучше, чем каждый из них поотдельности https://jamesyu.org/singular/
Очень, очень красивый эксперимент, показывающий как в ближайшем будущем будет работать парное написание текстов, ИИ и живой человек вместе дают результат намного лучше, чем каждый из них поотдельности https://jamesyu.org/singular/
jamesyu.org
Singular: Possible Futures of the Singularity in Conversation with GPT-3
Short stories about the singularity written in collaboration with GPT-3.
Forwarded from Towards NLP🇺🇦
Multilingual NLP
Сейчас время начинать (или вспомнить, что забросили) новые учебные курсы. И, если честно, сейчас онлайн курсов невероятное количество и по классическому ML, и по deeplearning, и по NLP. Так, fast.ai перезапустили свой курс по глубокому обучению и, вдобавок, еще и книгу выпустили.
Но меня, если честно, из всего этого изобилия привлек новый курс под названием Multilingual Natural Language Processing. Курс начнется 1 сентября. Здесь самый разнообразный спектр тем — и переходы между простарнствами языков, перевод, разбор фонетической стороны языка. Поэтому, если вы уже устали от базы и классики, стоит обратить внимание.
Сейчас время начинать (или вспомнить, что забросили) новые учебные курсы. И, если честно, сейчас онлайн курсов невероятное количество и по классическому ML, и по deeplearning, и по NLP. Так, fast.ai перезапустили свой курс по глубокому обучению и, вдобавок, еще и книгу выпустили.
Но меня, если честно, из всего этого изобилия привлек новый курс под названием Multilingual Natural Language Processing. Курс начнется 1 сентября. Здесь самый разнообразный спектр тем — и переходы между простарнствами языков, перевод, разбор фонетической стороны языка. Поэтому, если вы уже устали от базы и классики, стоит обратить внимание.
Очередная новость из цикла "в 🤗 добавили"
В этот раз добавили модели PEGASUS, которые до сих пор около-сота по суммаризации. По личным ощущениям, они уже близки к тому, что можно попробовать использовать в реальных задачах.
Кажется, они все для английского, что не очень классно. Но при желании можно хитрыми способами подменить эмбеддинги и пофайнтюнить так, чтобы заработало на другом языке.
твит, модельки, статья
В этот раз добавили модели PEGASUS, которые до сих пор около-сота по суммаризации. По личным ощущениям, они уже близки к тому, что можно попробовать использовать в реальных задачах.
Кажется, они все для английского, что не очень классно. Но при желании можно хитрыми способами подменить эмбеддинги и пофайнтюнить так, чтобы заработало на другом языке.
твит, модельки, статья
Twitter
Sam Shleifer
Excited to release PEGASUS in @huggingface transformers: 12 new SOTA summarization models: https://t.co/gzc414Gjf6 from Google Brain (@GoogleAI) intern @JingqingZX , and colleagues @yaozhaoai, ,Mohammad Saleh, and Peter Liu (@peterjliu). 👇
Рекомендуемый метод файнюнинга на новые языки. В статье файнтюнили берт на другой язык за 1-2 дня. Не вижу причины, почему бы пегасус не заработал.
Forwarded from DL in NLP (nlpcontroller_bot)
From English To Foreign Languages: Transferring Pre-trained Language Models
Tran [Amazon Alexa AI]
arxiv.org/abs/2002.07306
Когда ты видишь статью с одним автором - это либо полный трэш, либо что-то действительно интересное. В случае с этой статьёй:
With a single GPU, our approach can obtain a foreign BERTbase model within a day and a foreign BERTlarge within two days
Основная идея:
1. Инициализировать эмбеддинги нового языка (L2) с помощью эмбеддингов старого языка (L1). Каждый эмбеддинг L2 - это взвешенная сумма некоторых эмбеддингов L1. Веса находят либо с помощью word transition probability (см. статистический MT) либо с помощью unsupervised embedding alignment (см. Artexe 2018)
2. Обучить эмбеддинги BERT на данных L2 (остальные веса заморожены)
3. Обучить BERT на данных L1 + L2
Результаты заметно лучше mBERT на XNLI и немножко лучше на dependency parsing. Абляционные исследования показывают, что инициализация критически важна.
Tran [Amazon Alexa AI]
arxiv.org/abs/2002.07306
Когда ты видишь статью с одним автором - это либо полный трэш, либо что-то действительно интересное. В случае с этой статьёй:
With a single GPU, our approach can obtain a foreign BERTbase model within a day and a foreign BERTlarge within two days
Основная идея:
1. Инициализировать эмбеддинги нового языка (L2) с помощью эмбеддингов старого языка (L1). Каждый эмбеддинг L2 - это взвешенная сумма некоторых эмбеддингов L1. Веса находят либо с помощью word transition probability (см. статистический MT) либо с помощью unsupervised embedding alignment (см. Artexe 2018)
2. Обучить эмбеддинги BERT на данных L2 (остальные веса заморожены)
3. Обучить BERT на данных L1 + L2
Результаты заметно лучше mBERT на XNLI и немножко лучше на dependency parsing. Абляционные исследования показывают, что инициализация критически важна.
PEGASUS: Pre-training with Extracted Gap-sentences for Abstractive Summarization
Zhang et al. [Google], Jul 2020
arxiv.org/abs/1912.08777
В канале, оказывается, не было обзора PEGASUS. Пришло время наверстать упущенное.
В статье предлагают новый метод предтренировки, специально заточенный под суммаризацию - Gap Sentences Generation (GSC). Идея аналогична MLM/BART и прочим, но вот ключевые отличия: один MASK токен маскирует целое предложение; генерируется только замаскированное предложение, а не весь текст; предложение для маскирования выбирается с учётом функции важности согласно ROUGE1-F1.
Результат: 12 сот
Самая лучшая из моделек в статье обучалась на два objective: MLM и GSC на корпусе из новостных текстов размером в 3.8TB 😮
Из интересных подробностей:
1. Синусоидальные позиционнные эмбеддинги, вместо обучаемых
1. Adafactor вместо ADAM
1. Unigram-токенизация вместо BPE
1. Батч 8129
1. Максимальная длина текста 512 токенов, при этом благодаря синусоидальным эмбеддингам обученная моделька вполне себе раборает с более длинными текстами
Zhang et al. [Google], Jul 2020
arxiv.org/abs/1912.08777
В канале, оказывается, не было обзора PEGASUS. Пришло время наверстать упущенное.
В статье предлагают новый метод предтренировки, специально заточенный под суммаризацию - Gap Sentences Generation (GSC). Идея аналогична MLM/BART и прочим, но вот ключевые отличия: один MASK токен маскирует целое предложение; генерируется только замаскированное предложение, а не весь текст; предложение для маскирования выбирается с учётом функции важности согласно ROUGE1-F1.
Результат: 12 сот
Самая лучшая из моделек в статье обучалась на два objective: MLM и GSC на корпусе из новостных текстов размером в 3.8TB 😮
Из интересных подробностей:
1. Синусоидальные позиционнные эмбеддинги, вместо обучаемых
1. Adafactor вместо ADAM
1. Unigram-токенизация вместо BPE
1. Батч 8129
1. Максимальная длина текста 512 токенов, при этом благодаря синусоидальным эмбеддингам обученная моделька вполне себе раборает с более длинными текстами
Forwarded from DeepPavlov notifications
Всем привет!
Как вы могли знать, команда лаборатории участвовала в конкурсе Amazon Alexa Prize. Сейчас мы готовим аналог SocialBot только со своими графами, классификаторами и т.д. и приглашаем вас пообщаться с нашим ботом. Мы очень хотим услышать 🙏 вашу обратную связь.
Тестировать можно через Telegram или beta website. А оставить фидбек можно в канале private discussion group. Нам важен каждый диалог 🙏
P.s пожалуйста, не делитесь ни с кем ссылкой, потому что это пока бета-релиз.
Как вы могли знать, команда лаборатории участвовала в конкурсе Amazon Alexa Prize. Сейчас мы готовим аналог SocialBot только со своими графами, классификаторами и т.д. и приглашаем вас пообщаться с нашим ботом. Мы очень хотим услышать 🙏 вашу обратную связь.
Тестировать можно через Telegram или beta website. А оставить фидбек можно в канале private discussion group. Нам важен каждый диалог 🙏
P.s пожалуйста, не делитесь ни с кем ссылкой, потому что это пока бета-релиз.
Training BatchNorm and Only BatchNorm: On the Expressivity of Random Features in CNNs
Frankle et al. [FAIR]
arxiv.org/abs/2003.00152
Не совсем про NLP, но довольно безумные результаты, что всегда интересно. Мы все знаем про BatchNorm и что он классый. Что он делает, это меняет среднее и дисперсию своего инпута. Эти два вектора - как изменится средние и дисперсия в каждом канале - тренируемые и лично меня их наличие всегда сбивало с толка.
Теперь они сбивают меня с толка ещё сильнее. В статье показвыают, что если в ResNet тренировать только параметры BatchNorm, она вполне себе неплохо работает. В смысле, конечно, плохо. Но на CIFAR и ImageNet гораздо лучше случайного классификатора. И гораздо лучше, чем если тренировать такое же число каких-то других параметров сети либо если тренировать только финальный линейный слой. Эффект заметнее на более глубоких сетках (>50 слоёв).
Что это означает: рандомные нейросети извлекают не самые плохие фичи, а так же что управлять распределением этих фичей очень важно.
Frankle et al. [FAIR]
arxiv.org/abs/2003.00152
Не совсем про NLP, но довольно безумные результаты, что всегда интересно. Мы все знаем про BatchNorm и что он классый. Что он делает, это меняет среднее и дисперсию своего инпута. Эти два вектора - как изменится средние и дисперсия в каждом канале - тренируемые и лично меня их наличие всегда сбивало с толка.
Теперь они сбивают меня с толка ещё сильнее. В статье показвыают, что если в ResNet тренировать только параметры BatchNorm, она вполне себе неплохо работает. В смысле, конечно, плохо. Но на CIFAR и ImageNet гораздо лучше случайного классификатора. И гораздо лучше, чем если тренировать такое же число каких-то других параметров сети либо если тренировать только финальный линейный слой. Эффект заметнее на более глубоких сетках (>50 слоёв).
Что это означает: рандомные нейросети извлекают не самые плохие фичи, а так же что управлять распределением этих фичей очень важно.
Знаете ли вы как генерируются такие анимации? Допустим у вас есть GAN, она генерит что-то из распределения вашего датасета. Но как это анимировать?
У GAN есть свое латентное пространство, смещение в котором ведет к плавным изменениям картинки. Каким? Зависит от направления в котором сместились. Если знать в какую сторону двигаться, можно менять отдельные свойства (например небо) и достигать желаемых результатов. Все как в жизни 🙃
NLP это здорово, но если вы хотите быть ценным специалистом в ИИ и нейросетях, вам желательно также понимать что происходит и в других областях. Так например Трансформеры были успешно использованы для object detection, просто потому что автор был всесторонне развит. Есть такой канал — эйай ньюз — его ведет Леша из Facebook AI Research, который комментирует главные события в мире ML/AI со своей профессиональной точки зрения. Это как раз тот канал который можно смело советовать всем, кто хочет следить за новыми алгоритмами, и начать понимать чуть-лучше как они работают.
У GAN есть свое латентное пространство, смещение в котором ведет к плавным изменениям картинки. Каким? Зависит от направления в котором сместились. Если знать в какую сторону двигаться, можно менять отдельные свойства (например небо) и достигать желаемых результатов. Все как в жизни 🙃
NLP это здорово, но если вы хотите быть ценным специалистом в ИИ и нейросетях, вам желательно также понимать что происходит и в других областях. Так например Трансформеры были успешно использованы для object detection, просто потому что автор был всесторонне развит. Есть такой канал — эйай ньюз — его ведет Леша из Facebook AI Research, который комментирует главные события в мире ML/AI со своей профессиональной точки зрения. Это как раз тот канал который можно смело советовать всем, кто хочет следить за новыми алгоритмами, и начать понимать чуть-лучше как они работают.
Telegram
эйай ньюз
Тем временем ребята из лабы Лемпицкого (самого мощного исследователя в России, имхо) выпустили генеративную сетку для генерации таймлапсов. Зачем — пока не понятно, но к р а с и в о.
Под капотом там слегка модифицированный StyleGAN. А вот и ссылка на сам…
Под капотом там слегка модифицированный StyleGAN. А вот и ссылка на сам…
Иннополис зовёт на свой виртуальный семинар. Будут говорить про NLPшечку и не только.
Вот что они говорят про себя:
В этот раз будем общаться про технологии обработки естественного языка (NLP), оптимальные ML-решения, узнаем для чего нужна еще одна библиотека машинного обучения NeoML, а также рассмотрим архитектуру бота от DeepPavlov.ai
Наши спикеры:
- Станислав Ангелюк, Team Lead Common Libraries в ABBYY
- Константин Фролов, Machine Learning Engineer в Контур
- Федор Игнатов, Senior Software Engineer в Deeppavlov.ai
Комментарии от экспертов:
- Михаил Бурцев, руководитель проекта в Deeppavlov.ai
- Александр Мазалов, основатель MutuAlies и mITy.law.
- Влад Виноградов, со-основатель и руководитель направления CV в EORA Data Lab
Когда: 3 сентября в 18:00
Регистрация и подробности докладов
Вот что они говорят про себя:
В этот раз будем общаться про технологии обработки естественного языка (NLP), оптимальные ML-решения, узнаем для чего нужна еще одна библиотека машинного обучения NeoML, а также рассмотрим архитектуру бота от DeepPavlov.ai
Наши спикеры:
- Станислав Ангелюк, Team Lead Common Libraries в ABBYY
- Константин Фролов, Machine Learning Engineer в Контур
- Федор Игнатов, Senior Software Engineer в Deeppavlov.ai
Комментарии от экспертов:
- Михаил Бурцев, руководитель проекта в Deeppavlov.ai
- Александр Мазалов, основатель MutuAlies и mITy.law.
- Влад Виноградов, со-основатель и руководитель направления CV в EORA Data Lab
Когда: 3 сентября в 18:00
Регистрация и подробности докладов
Forwarded from Katya Artemova
Всем привет!
Новый сезон семинаров об NLP в Вышке откроет рассказ о RussianSuperGlue.
Аннотация: In this talk, we introduce an advanced Russian general language understanding evaluation benchmark -- RussianGLUE.
Recent advances in the field of universal language models and transformers require the development of a methodology for their broad diagnostics and testing for general intellectual skills - detection of natural language inference, commonsense reasoning, ability to perform simple logical operations regardless of text subject or lexicon. For the first time, a benchmark of nine tasks, collected and organized analogically to the SuperGLUE methodology, was developed from scratch for the Russian language. We provide baselines, human level evaluation, an open-source framework for evaluating models.
Докладчик: Alena Fenogenova
Chief specialist NLP R&D, CDS office, Sberbank
О докладчике:
Alena Fenogenova has a Master degree in Computational linguistics at the Higher School of Economics, Moscow.
She has a number of publications in NLP field. Now Alena works in Sberbank in NLP research team. Her research interests are language understanding, question answering, etc.
Форма регистрации: https://cs.hse.ru/ai/computational-pragmatics/announcements/394600693.html
Алгоритм регистрации: надо заполнить форму, ближе к семинару вам придет письмо с ссылкой на zoom и паролем.
Новый сезон семинаров об NLP в Вышке откроет рассказ о RussianSuperGlue.
Аннотация: In this talk, we introduce an advanced Russian general language understanding evaluation benchmark -- RussianGLUE.
Recent advances in the field of universal language models and transformers require the development of a methodology for their broad diagnostics and testing for general intellectual skills - detection of natural language inference, commonsense reasoning, ability to perform simple logical operations regardless of text subject or lexicon. For the first time, a benchmark of nine tasks, collected and organized analogically to the SuperGLUE methodology, was developed from scratch for the Russian language. We provide baselines, human level evaluation, an open-source framework for evaluating models.
Докладчик: Alena Fenogenova
Chief specialist NLP R&D, CDS office, Sberbank
О докладчике:
Alena Fenogenova has a Master degree in Computational linguistics at the Higher School of Economics, Moscow.
She has a number of publications in NLP field. Now Alena works in Sberbank in NLP research team. Her research interests are language understanding, question answering, etc.
Форма регистрации: https://cs.hse.ru/ai/computational-pragmatics/announcements/394600693.html
Алгоритм регистрации: надо заполнить форму, ближе к семинару вам придет письмо с ссылкой на zoom и паролем.
cs.hse.ru
Семинар НУЛ ММВП "RussianSuperGLUE"
Аннотация: In this talk, we introduce an advanced Russian general language understanding evaluation benchmark -- RussianGLUE.
PyTorch Performance Tuning Guide - Szymon Migacz, NVIDIA
youtube
TL;DR от Andrey Karpaty:
1. Ставьте
1.
1. Используйте максимально возможный batch size, который помещается в память
1. Не забудьте ставить
1. Используйте
1. Выключайте debug API в проде
1. Всегда используйте DistributedDataParallel вместо DataParallel, даже если вы не destributed
1. Если работаете с последовательностями, балансируйте ваши батчи так, чтобы длина последовательности на разных GPU была примерно одинакова. От себя добавлю, что самый простой способ сделать это - использовать gradient accumulation
1. Используйте fused optimizer из apex, вместо дефолтных pytorch оптимизаторов
1. Используйте чекпоинтинг для memory-intensive операций бэкварда (звучит сомнительно)
1. Используйте
youtube
TL;DR от Andrey Karpaty:
1. Ставьте
num_workers > 0
и pin_memory=True
в даталоадерах1.
torch.backends.cudnn.benchmark = True
1. Используйте максимально возможный batch size, который помещается в память
1. Не забудьте ставить
bias=False
в слоях перед BatchNorm1. Используйте
for p in model.parameters(): p.grad = None
вместо model.zero_grad()
. Если я правильно понял, то таким образом градиенты зануляются не на уровне кода pytorch, а на уровне кода GPU.1. Выключайте debug API в проде
1. Всегда используйте DistributedDataParallel вместо DataParallel, даже если вы не destributed
1. Если работаете с последовательностями, балансируйте ваши батчи так, чтобы длина последовательности на разных GPU была примерно одинакова. От себя добавлю, что самый простой способ сделать это - использовать gradient accumulation
1. Используйте fused optimizer из apex, вместо дефолтных pytorch оптимизаторов
1. Используйте чекпоинтинг для memory-intensive операций бэкварда (звучит сомнительно)
1. Используйте
@torch.jit.script
чтобы фьюзить ваши самописные pointwise функции (e.g. GELU)Хороший пост про GPT-3
От себя ещё добавлю ссылочку на обсуждение прайсинга.
Говорят платишь за число токенов, меньше 100к - бесплатно, потом от $100/мес за 2млн токенов и 8с за каждую следующую тысячу.
Конечно с одной стороны это дорого, но с другой стороны OpenAI нужно покрывать стоимость разработки + железа + часть рисёча. Так что неудивительно.
https://twitter.com/hardmaru/status/1301362995356774401
От себя ещё добавлю ссылочку на обсуждение прайсинга.
Говорят платишь за число токенов, меньше 100к - бесплатно, потом от $100/мес за 2млн токенов и 8с за каждую следующую тысячу.
Конечно с одной стороны это дорого, но с другой стороны OpenAI нужно покрывать стоимость разработки + железа + часть рисёча. Так что неудивительно.
https://twitter.com/hardmaru/status/1301362995356774401
Twitter
hardmaru
According to reports, OpenAI announced the pricing scheme for GPT-3's API usage from October. See: https://t.co/IS1sgsb6Ku h/t @gwern @sonnylazuardi
Forwarded from эйай ньюз
Почитал на досуге больше о GPT-3 и только сейчас осознал всю крутость принципа ее работы. Примеры примерами, они не сильно поражают когда знаешь, что с хорошим датасетом современные модели можно натренировать генерировать что-угодно достаточно успешно. Но вот GPT-3 никто не тренирует и не fine-tune'ит. Тренировочные примеры это просто часть инпута который скармливается модели при каждом запуске. В общем, почитайте лучше оригинальную статью, там много иллюстраций.
Еще нашел интересный пост с нюансами ее применения и небольшим срывом покровов:
- The API is slow. This is expected: the model has 175 billion parameters; it's too big to fit on a GPU (the largest GPU in the world has 48 GB of VRAM). There is currently no information about the infrastructure running GPT-3.
- The demos you're seeing around the internet are highly biased. The vast majority of output is of significantly lower quality.
- The author trained GPT-3 on his tweets; he estimates that only 30-40% were usable. This implies a 60-70% failure rate.
- If it takes three tries to generate a usable React component, it's probably more practical to just write the code yourself.
- Everyone is using the same model, so there's no competitive advantage.
- With the wrong prompt, you might get racist or sexist output. (Похуй)
- There is still no information on API pricing/cost.
Еще нашел интересный пост с нюансами ее применения и небольшим срывом покровов:
- The API is slow. This is expected: the model has 175 billion parameters; it's too big to fit on a GPU (the largest GPU in the world has 48 GB of VRAM). There is currently no information about the infrastructure running GPT-3.
- The demos you're seeing around the internet are highly biased. The vast majority of output is of significantly lower quality.
- The author trained GPT-3 on his tweets; he estimates that only 30-40% were usable. This implies a 60-70% failure rate.
- If it takes three tries to generate a usable React component, it's probably more practical to just write the code yourself.
- Everyone is using the same model, so there's no competitive advantage.
- With the wrong prompt, you might get racist or sexist output. (Похуй)
- There is still no information on API pricing/cost.
lambda.ai
GPT-3 A Hitchhiker's Guide
A balanced perspective on OpenAI's GPT-3. We summarize how the A.I. research community is thinking about Open AI's new language model.
REALM: Retrieval-Augmented Language Model Pre-Training
Guu et al. [Google Research]
arxiv.org/abs/2002.08909
TL;DR: добавили retreival-шаг перед MLM в предобучение, хорошо улучшили open domain question answering SOTA
Наконец-то почитал про REALM и оказалось что это ещё более интересная штука, чем я думал изначально. Основная идея простая: давайте помогать MLM дополнительным контекстом. Для этого будем использовать эмбеддинги BERT для поиска релевантных документов по нашему корпусу и использовать их в качестве контекста (см. картинку). При этом в качестве лосса берём взвешенное на предсказанные вероятности релевантности документа среднее по top8 документов. Трансформер делающий MLM и трансформер отвечающий за retreival - это две разные модели, но учатся вместе end-to-end. Зачем это нужно? Потому что это очень близко к ODQA-сетапу, когда мы просто хотим задать вопрос и получить ответ. И это действительно улучшает результаты T5 (которая сильно больше, чем REALM) с 35 до 40 пунктов.
Интересные детали.
1. Иногда дополнительного контекста для MLM не нужно (например, грамматическая конструкция) и для этого среди topk документов всегда есть нулевой документ и его эмбеддинг тоже обучается.
1. Иногда нужные токены содержатся прямо в найденном документе, но мы бы хотели, чтобы моделька сама их предсказала, а не просто скопировала бы свой вход. Для этого все именованные сущности во вспомогательном документе (но не во вохде в MLM) типа дат и имён меняют на generic токены типа имя, дата. Их находят перед началом обучения с помощью готовой модели NER.
1. Иногда самый ближайший к MLM-инпуту документ содержит MLM-инпут, но без маски. Эти документы отсеиваются при ретриве.
1. В самом начале обучения BERT плохо ретривит (там после BERT есть доп линейный слой) и поэтому REALM может начать игнорировать вспомогательные документы. Для этого ретривер немножпо предобучается на задаче, где нужно найти документ по отрывку из этого документа.
Как ускоряли KNN:
KNN на нескольких миллионах документов будет работать очень долго. А нам нужно только top8. Для этого использовали построение индекса и приблизительный поиск.
Но тк моделька ретрива тоже обновляется с каждым батчом, индекс по-идее становится нерелевантным и его нужно обновлять. Вместо того, чтобы обновлять его каждый батч, индекс обновляли каждые 500 итераций да ещё и асинхронно. Тк идея в том, что топ очень сильно не поменяется за 500 батчей.
По железу:
С одной стороны авторы говорят, что вся моделька поместится в 12Гб оперативки. Но с другой стороны они использовали 64 TPU для обучения и 16TPU для построения индекса. Вроде бы сопостовимо с BERT по объёмом, ничего особенно безумного, но кажется про времена, когда 8GPU было большой мощью уже в далёком прошлом.
Guu et al. [Google Research]
arxiv.org/abs/2002.08909
TL;DR: добавили retreival-шаг перед MLM в предобучение, хорошо улучшили open domain question answering SOTA
Наконец-то почитал про REALM и оказалось что это ещё более интересная штука, чем я думал изначально. Основная идея простая: давайте помогать MLM дополнительным контекстом. Для этого будем использовать эмбеддинги BERT для поиска релевантных документов по нашему корпусу и использовать их в качестве контекста (см. картинку). При этом в качестве лосса берём взвешенное на предсказанные вероятности релевантности документа среднее по top8 документов. Трансформер делающий MLM и трансформер отвечающий за retreival - это две разные модели, но учатся вместе end-to-end. Зачем это нужно? Потому что это очень близко к ODQA-сетапу, когда мы просто хотим задать вопрос и получить ответ. И это действительно улучшает результаты T5 (которая сильно больше, чем REALM) с 35 до 40 пунктов.
Интересные детали.
1. Иногда дополнительного контекста для MLM не нужно (например, грамматическая конструкция) и для этого среди topk документов всегда есть нулевой документ и его эмбеддинг тоже обучается.
1. Иногда нужные токены содержатся прямо в найденном документе, но мы бы хотели, чтобы моделька сама их предсказала, а не просто скопировала бы свой вход. Для этого все именованные сущности во вспомогательном документе (но не во вохде в MLM) типа дат и имён меняют на generic токены типа имя, дата. Их находят перед началом обучения с помощью готовой модели NER.
1. Иногда самый ближайший к MLM-инпуту документ содержит MLM-инпут, но без маски. Эти документы отсеиваются при ретриве.
1. В самом начале обучения BERT плохо ретривит (там после BERT есть доп линейный слой) и поэтому REALM может начать игнорировать вспомогательные документы. Для этого ретривер немножпо предобучается на задаче, где нужно найти документ по отрывку из этого документа.
Как ускоряли KNN:
KNN на нескольких миллионах документов будет работать очень долго. А нам нужно только top8. Для этого использовали построение индекса и приблизительный поиск.
Но тк моделька ретрива тоже обновляется с каждым батчом, индекс по-идее становится нерелевантным и его нужно обновлять. Вместо того, чтобы обновлять его каждый батч, индекс обновляли каждые 500 итераций да ещё и асинхронно. Тк идея в том, что топ очень сильно не поменяется за 500 батчей.
По железу:
С одной стороны авторы говорят, что вся моделька поместится в 12Гб оперативки. Но с другой стороны они использовали 64 TPU для обучения и 16TPU для построения индекса. Вроде бы сопостовимо с BERT по объёмом, ничего особенно безумного, но кажется про времена, когда 8GPU было большой мощью уже в далёком прошлом.