The Lottery Ticket Hypothesis for Pre-trained BERT Networks
Chen et al.
arxiv.org/abs/2007.12223
TL;DR
BERT-инициализация упрощает нахождение билетов (вплоть до 90% sparsity), при этом билеты для одних задач обычно не работают для других. Исключение составляет MLM.
Подробнее:
Lottery ticket hypothesis - это очень интересная штука, которая заключается в том, что в инициализации большой нейросетки содержится маленькая подсеть, которая тренируема до качества всей сети. Другим языком - гипотетически, можно натренировать GPT-3 не с 160B параметров, а с, условно 16B (уменьшение параметров на 90%). Вопрос лишь в том, как инициализировать. Подсеть и инициализация, которые достигает качества полной сети называются winning ticket.
На данный момент эту гипотезу уже неплохо протестировали в задачах CV (sparsity 80%), но в NLP и конкретно в трансформерах результаты пока не такие впечатляющие (sparsity 20-40%).
В новой статье авторы исследуют эту гипотезу с BERT-инициализацией. Основные результаты такие: на каждой отдельной таске находят winning tickets с разреженностью от 40% (SQUAD) до 90% (QQP и WNLI). При этом эти билеты не трансферятся между прикладными задачами (нельзя использовать билет SQUAD для QQP и наоборот). Но winning ticket для MLM (70% sparsity) работает на многих задачах.
Статья не самая простая, но там очень много интересных вещей, которые сложно запихать в короткий обзор. Советую почитать.
Chen et al.
arxiv.org/abs/2007.12223
TL;DR
BERT-инициализация упрощает нахождение билетов (вплоть до 90% sparsity), при этом билеты для одних задач обычно не работают для других. Исключение составляет MLM.
Подробнее:
Lottery ticket hypothesis - это очень интересная штука, которая заключается в том, что в инициализации большой нейросетки содержится маленькая подсеть, которая тренируема до качества всей сети. Другим языком - гипотетически, можно натренировать GPT-3 не с 160B параметров, а с, условно 16B (уменьшение параметров на 90%). Вопрос лишь в том, как инициализировать. Подсеть и инициализация, которые достигает качества полной сети называются winning ticket.
На данный момент эту гипотезу уже неплохо протестировали в задачах CV (sparsity 80%), но в NLP и конкретно в трансформерах результаты пока не такие впечатляющие (sparsity 20-40%).
В новой статье авторы исследуют эту гипотезу с BERT-инициализацией. Основные результаты такие: на каждой отдельной таске находят winning tickets с разреженностью от 40% (SQUAD) до 90% (QQP и WNLI). При этом эти билеты не трансферятся между прикладными задачами (нельзя использовать билет SQUAD для QQP и наоборот). Но winning ticket для MLM (70% sparsity) работает на многих задачах.
Статья не самая простая, но там очень много интересных вещей, которые сложно запихать в короткий обзор. Советую почитать.
В 🤗 добавили zero-shot classifier на основе обученной на MNLI модели.
Идея взята из статьи Yin et al. и заключается в том, что вы задаёте модельке вопросы вида "эта статья очень интересная", "позитивный отзыв" и она должна выдать согласуются эти два утверждения или нет. Чем мне этот подход нравится это то, что вы сами можете явно указать сет ваших ожидаемых классов, а не как в кластеризации / LDA.
Из статьи я не понял, насколько хорошо этот подход работает, но чего-то что можно запихать даже в маленький прод я бы не ожидал. Но для личных проектов или для какой-то первоначальной грязной разметки на которой вы предтренируете модель, после чего файнтюните её на своих supervised-данных почему бы и нет? Тем более это работает в 3 строчки кода:
Ссылки:
1. Блог
1. Демо
1. Колаб
Идея взята из статьи Yin et al. и заключается в том, что вы задаёте модельке вопросы вида "эта статья очень интересная", "позитивный отзыв" и она должна выдать согласуются эти два утверждения или нет. Чем мне этот подход нравится это то, что вы сами можете явно указать сет ваших ожидаемых классов, а не как в кластеризации / LDA.
Из статьи я не понял, насколько хорошо этот подход работает, но чего-то что можно запихать даже в маленький прод я бы не ожидал. Но для личных проектов или для какой-то первоначальной грязной разметки на которой вы предтренируете модель, после чего файнтюните её на своих supervised-данных почему бы и нет? Тем более это работает в 3 строчки кода:
from transformers import pipeline
clf = pipeline('zero-shot-classification')
prediction = clf(sequences="zero-shot is awesome!", candidate_labels=["positive", "negative"])
Ссылки:
1. Блог
1. Демо
1. Колаб
Twitter
Hugging Face
No labeled data? No problem. The 🤗 Transformers master branch now includes a built-in pipeline for zero-shot text classification, to be included in the next release. Try it out in the notebook here: https://t.co/31Z6LR1NjK https://t.co/IugPUj3sa1
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)