Интересно видеть много новых работ в которых пытаются предсказать гиперпараметры и перфоманс больших моделей. Постфактум абсолютно очевидно, что сейчас многие беспокоятся об этом, тк хотелось бы скейлить моедли эффективно.
Статья про µTransfer даёт нам очень интересный и теоретически подкреплённый взгляд на то как выбирать lr, beta1, beta2 и параметры инициализации (к сожалению только эти гиперпараметры) для моделей. С учётом того что метод очень легко имплементировать (см картинку), ожидаю что через пару лет он будет дефолтом во всех фреймворках.
В пару дней назад DeepMind опубликовал статью, где они исследовали tradeoff между размером модели, датасета и FLOPS. Главное их заключение в том, что вообще говоря при фиксированном компьюте мы должны делать модели чуть-чуть поменьше и давать им больше данных, чем мы делаем сейчас. Для того чтобы это продемонстировать они тренируют модель Chinchilla 70B, которая показывает себя лучше чем Gopher 280B. Однако тут все не так чисто, тк сетап заметно отличается от Gopher: используют AdamW, другую токенизацию и float32 для параметров оптимизатора.
Вангую что в этом году будет 2-3 статьи-ревью исследований по скейлингу моделей.
Статья про µTransfer даёт нам очень интересный и теоретически подкреплённый взгляд на то как выбирать lr, beta1, beta2 и параметры инициализации (к сожалению только эти гиперпараметры) для моделей. С учётом того что метод очень легко имплементировать (см картинку), ожидаю что через пару лет он будет дефолтом во всех фреймворках.
В пару дней назад DeepMind опубликовал статью, где они исследовали tradeoff между размером модели, датасета и FLOPS. Главное их заключение в том, что вообще говоря при фиксированном компьюте мы должны делать модели чуть-чуть поменьше и давать им больше данных, чем мы делаем сейчас. Для того чтобы это продемонстировать они тренируют модель Chinchilla 70B, которая показывает себя лучше чем Gopher 280B. Однако тут все не так чисто, тк сетап заметно отличается от Gopher: используют AdamW, другую токенизацию и float32 для параметров оптимизатора.
Вангую что в этом году будет 2-3 статьи-ревью исследований по скейлингу моделей.
👍2
OpenAI выпустил DALL-E 2
openai.com/dall-e-2
vimeo.com/692375454
Основная идея: использовать эмбеддинги CLIP для генерации вектора текста, обсуславливаться на этот эмбеддинг при генерации изображения. Для генерации используют не языковую модель на VAE-токенах а диффузию (GLIDE).
Судя по промо-материалам, модель будет доступна по API.
openai.com/dall-e-2
vimeo.com/692375454
Основная идея: использовать эмбеддинги CLIP для генерации вектора текста, обсуславливаться на этот эмбеддинг при генерации изображения. Для генерации используют не языковую модель на VAE-токенах а диффузию (GLIDE).
Судя по промо-материалам, модель будет доступна по API.
Openai
DALL·E 2
DALL·E 2 is an AI system that can create realistic images and art from a description in natural language.
👍5
Advances toward ubiquitous neural information retrieval
ai.facebook.com/blog/-advances-toward-ubiquitous-neural-information-retrieval
Кажется что до сих пор все продакшн-системы поиска (IR) используют вариацию BM25 как первый шаг ранжирования. Причин много: неплохое качество поиска, много инфраструктуры заточенно под разреженные представления текстов, а также они довольно хорошо ищут редкие термины.
Нейронные системы поиска при этом могут гораздо лучше понимать смысл текста, синонымы, парафразы итд. Принципиально, нейронный IR может очень сильно изменить то как мы ищем информацию и, самое главное — формируем запросы. Сейчас как правило нейросети используют уже после BM25 для того чтобы переранжировать условные несколько сотен найденных документов, но до замены BM25 ещё далеко.
Meta AI активно движется в эту сторону. Пару лет назад мы увидели DPR, который заменил BM25 в QA системах (по крайней мере для рисёчеров). А сейчас можно увидеть как такие подходы всё ближе движутся в сторону прода.
Например DrBoost (реверанс в сторону DrQa и бустинга) обучает целый ансамбль ранжирующих моделей, где каждая следующая модель пытается исправить ошибки предыдущей. При инференсе все представления этих моделей конкатенируются в один вектор. Зачем это надо? Позволяет сделать размеры векторов в 4 раза меньше, а также делает их более устойчивыми для квантизации, что позволяет уменьшить latency поиска ещё в 4 раза.
Multi-task retreival заметно улучшает генерализацию на узкие домены и редкие термины без какого-либо domain-specific и task-specific файнтюнинга. Основная идея подхода проста: мы обучаем модель одновременно на различных IR задачах: QA, fact checking, entity linking, dialogue, ... Для улучшения качества использовали несколько фаз получения hard negatives — в начале от BM25, а потом от предыдущей натренированной модели.
И ещё одна интересная статья рассказывает о том, что почему-то увеличение размера IR датасетов не сильно помогает получить более хорошие модели, что очень нетипично для диплёрнинга. В качетсве решения они предлагают сделать новый метод претренинга IR систем, где автоматическая система генерации вопросов делает огромный датасет (65 миллионов QA-пар) на котором ранжировщик и обучается.
ai.facebook.com/blog/-advances-toward-ubiquitous-neural-information-retrieval
Кажется что до сих пор все продакшн-системы поиска (IR) используют вариацию BM25 как первый шаг ранжирования. Причин много: неплохое качество поиска, много инфраструктуры заточенно под разреженные представления текстов, а также они довольно хорошо ищут редкие термины.
Нейронные системы поиска при этом могут гораздо лучше понимать смысл текста, синонымы, парафразы итд. Принципиально, нейронный IR может очень сильно изменить то как мы ищем информацию и, самое главное — формируем запросы. Сейчас как правило нейросети используют уже после BM25 для того чтобы переранжировать условные несколько сотен найденных документов, но до замены BM25 ещё далеко.
Meta AI активно движется в эту сторону. Пару лет назад мы увидели DPR, который заменил BM25 в QA системах (по крайней мере для рисёчеров). А сейчас можно увидеть как такие подходы всё ближе движутся в сторону прода.
Например DrBoost (реверанс в сторону DrQa и бустинга) обучает целый ансамбль ранжирующих моделей, где каждая следующая модель пытается исправить ошибки предыдущей. При инференсе все представления этих моделей конкатенируются в один вектор. Зачем это надо? Позволяет сделать размеры векторов в 4 раза меньше, а также делает их более устойчивыми для квантизации, что позволяет уменьшить latency поиска ещё в 4 раза.
Multi-task retreival заметно улучшает генерализацию на узкие домены и редкие термины без какого-либо domain-specific и task-specific файнтюнинга. Основная идея подхода проста: мы обучаем модель одновременно на различных IR задачах: QA, fact checking, entity linking, dialogue, ... Для улучшения качества использовали несколько фаз получения hard negatives — в начале от BM25, а потом от предыдущей натренированной модели.
И ещё одна интересная статья рассказывает о том, что почему-то увеличение размера IR датасетов не сильно помогает получить более хорошие модели, что очень нетипично для диплёрнинга. В качетсве решения они предлагают сделать новый метод претренинга IR систем, где автоматическая система генерации вопросов делает огромный датасет (65 миллионов QA-пар) на котором ранжировщик и обучается.
Facebook
Advances toward ubiquitous neural information retrieval
Today, we’re sharing cutting-edge dense retrieval models that will help pave the way for ubiquitous neural information retrieval. This work will not only improve search as we currently use it, but also enable smarter AI agents of the future.
🔥7👍3
The evolution of API for running cutting edge AI:
- run it on your own machine
- run it in the cloud
- apply pay for and query an api endpoint
- pretty please ask one of the authors to run it for you on Twitter
🥲
Какая же это жиза
twitter.com/karpathy/status/1512117132716355590
- run it on your own machine
- run it in the cloud
- apply pay for and query an api endpoint
- pretty please ask one of the authors to run it for you on Twitter
🥲
Какая же это жиза
twitter.com/karpathy/status/1512117132716355590
Twitter
Andrej Karpathy
The evolution of API for running cutting edge AI: - run it on your own machine - run it in the cloud - apply pay for and query an api endpoint - pretty please ask one of the authors to run it for you on Twitter 🥲
😢8👏2😁1
В Optimum добавили очень простой способ квантизовывать модели из Transformers.
Вообще интересно как квантизация будет жить вместе с большими моделями. Вокруг себя вижу сильный рост интереса попробовать модели в 1B параметров и больше на различных задачах, но эти модели даже при переводе в fp16 зачастую перестают работать.
huggingface.co/docs/optimum/main/en/quickstart
Вообще интересно как квантизация будет жить вместе с большими моделями. Вокруг себя вижу сильный рост интереса попробовать модели в 1B параметров и больше на различных задачах, но эти модели даже при переводе в fp16 зачастую перестают работать.
huggingface.co/docs/optimum/main/en/quickstart
👍13
⚡️A Case of Plagarism in Machine Learning Research
nicholas.carlini.com/writing/2022/a-case-of-plagarism-in-machine-learning.html
Пару недель назад Beijing Academy of Artificial Intelligence опубликовала статью на архиве, в которой описывался их подход и стратегия по тренировке больших моделей. Nicholas Carlini заметил, что несколько параграфов из этой статьи практически дословно копируют статью Deduplicating Training Data Makes Language Models Better (которая кстати о копировании данных лол). Интересно, какие будут последствия. Кто-то говорит о том, что авторы могут быть забанены на Arxiv, но с другой стороны их около сотни и это очень жёсткая мера, тк не все авторы могли знать о копировании. Очень неприятно видеть такое в нашей области. Не плагиатьте пожалуйста.
nicholas.carlini.com/writing/2022/a-case-of-plagarism-in-machine-learning.html
Пару недель назад Beijing Academy of Artificial Intelligence опубликовала статью на архиве, в которой описывался их подход и стратегия по тренировке больших моделей. Nicholas Carlini заметил, что несколько параграфов из этой статьи практически дословно копируют статью Deduplicating Training Data Makes Language Models Better (которая кстати о копировании данных лол). Интересно, какие будут последствия. Кто-то говорит о том, что авторы могут быть забанены на Arxiv, но с другой стороны их около сотни и это очень жёсткая мера, тк не все авторы могли знать о копировании. Очень неприятно видеть такое в нашей области. Не плагиатьте пожалуйста.
👎11🤮6❤1👍1
Сейчас идет онлайн-конференция Data Fusion 2022.
В программе — доклады о распределенных моделях оптимизации, графовой аналитике и федеративных моделях, трендах NLP, сomputer vision и MLOps. Среди спикеров — Константин Воронцов, Евгений Бурнаев, Андрей Райгородский, Иван Оселедец, Дмитрий Ветров, Виктор Кантор, Петр Ермаков, Павел Мягких и другие эксперты в data science.
После докладов начинаются Q&A сессии в SpatialChat — это виртуальные комнаты, в которых можно лично пообщаться со спикером и обсудить проекты. Подключайтесь и задавайте вопросы.
Конференцию организуют «Сколково» при поддержке ВТБ.
Участие бесплатно, а программу можно посмотреть по ссылке: https://bit.ly/3rmGFg8
#промо
В программе — доклады о распределенных моделях оптимизации, графовой аналитике и федеративных моделях, трендах NLP, сomputer vision и MLOps. Среди спикеров — Константин Воронцов, Евгений Бурнаев, Андрей Райгородский, Иван Оселедец, Дмитрий Ветров, Виктор Кантор, Петр Ермаков, Павел Мягких и другие эксперты в data science.
После докладов начинаются Q&A сессии в SpatialChat — это виртуальные комнаты, в которых можно лично пообщаться со спикером и обсудить проекты. Подключайтесь и задавайте вопросы.
Конференцию организуют «Сколково» при поддержке ВТБ.
Участие бесплатно, а программу можно посмотреть по ссылке: https://bit.ly/3rmGFg8
#промо
app.spatial.chat
SpatialChat
Virtual space platform to help remote teams collaborate.
👍10👎4❤1
Linearizing Transformer with Key-Value Memory Bank
Zhang and Cai
arxiv.org/abs/2203.12644
Интересный заход на длинные трансформеры с прицелом именно на длинную генерацию. В предложенной модели, MemSizer, attention модифицируется следущим образом. Q остаётся примерно как есть, K становится латентным и число ваших ключей — гиперпараметр. В статье работают с 8-128 ключами, что на удивление мало, я бы ожидал каких-то безумных значений типа тысяч или десятков тысяч по аналогии с Large Memory Layers.
С values делают пожалуй самое дикое преобразование. Если в обычном attention они выглядят как
Все эти хаки сделанны для одной вещи: чтобы время генерации уменьшилось с O(MN) до O(Mk + N), а память стала константной вместо O(MN). В языковом моделировании (Wikitext-103, длина 512 токенов) MemSizer сопоставим с другими длинными трансформерами в смысле перплекии, но заметно быстрее. По сравнению с обычным трансформером MemSizer хуже по перплексии (20.2 вместо 17.9), но более чем в полтора раза быстрее и ест в 6 раз меньше памяти при генерации. В машинном переводе (WMT En-FR) чуть-чуть обходит всех по BLEU, но на треть бстрее трансформера. Правда стоит сказать что число параметров у него на 20% меньше, так что ну такое.
Будет интересно как будет развиваться эта идея изначально заложенная в статье Transformers are RNNs.
Zhang and Cai
arxiv.org/abs/2203.12644
Интересный заход на длинные трансформеры с прицелом именно на длинную генерацию. В предложенной модели, MemSizer, attention модифицируется следущим образом. Q остаётся примерно как есть, K становится латентным и число ваших ключей — гиперпараметр. В статье работают с 8-128 ключами, что на удивление мало, я бы ожидал каких-то безумных значений типа тысяч или десятков тысяч по аналогии с Large Memory Layers.
С values делают пожалуй самое дикое преобразование. Если в обычном attention они выглядят как
X W_v
, то в MemSizer это W_l X X^T W_r
, где левая матрица мапит X на ключи K. А после этого делают ещё один трюк, который позволяет вычислять V_i (где i - шаг генерации) реккурентно и с постоянной памятью.Все эти хаки сделанны для одной вещи: чтобы время генерации уменьшилось с O(MN) до O(Mk + N), а память стала константной вместо O(MN). В языковом моделировании (Wikitext-103, длина 512 токенов) MemSizer сопоставим с другими длинными трансформерами в смысле перплекии, но заметно быстрее. По сравнению с обычным трансформером MemSizer хуже по перплексии (20.2 вместо 17.9), но более чем в полтора раза быстрее и ест в 6 раз меньше памяти при генерации. В машинном переводе (WMT En-FR) чуть-чуть обходит всех по BLEU, но на треть бстрее трансформера. Правда стоит сказать что число параметров у него на 20% меньше, так что ну такое.
Будет интересно как будет развиваться эта идея изначально заложенная в статье Transformers are RNNs.
🔥8👍2
Есть очень классная статья — Understanding Back-translation at Scale. Всем её рекомендую кто занимается переводом. Там исследовали различные способы семплирования переводов и выяснили, что самым лучшим является добавлять шум в результаты beam search (NoisedBT).
Так вот сейчас случайно нашёл статью, которая утверждает, что это улучшает систему которая натрнирована на этих сгенерированных переводах не из-за того, что сгенерированный датасет более разнообразный, а из-за того, что такая система учится различать синтетические переводы от естественных.
Объясняют это так: мы с помощью backtranslation и существующих target предлоежний генерируем source предложения. Таким образом есть три сигнала, которые система может выучить: strong supervision от target, weak supervision от cross-lingual и различные biases системы перевода. Если системе при обучении каким-то образом сообщают о том, что source ненастоящие (например добавляя в них шум), то ей проще отделить одно от другого и сконцентрироваться на выучивании strong supervision от target-текстов.
Для проверки натренировали систему которой указывали что данный перевод является результатом backtranslation и она показала более высокое качество, чем NoisedBT. Интересно, что когда оба метода попытались объединить вместе, качество снова упало, что намекает на то, что действительно важно не разнообразие которое создаёт NoisedBT, а просто факт того что модель может проще отличить настоящие предложения от сгенеренных.
Так вот сейчас случайно нашёл статью, которая утверждает, что это улучшает систему которая натрнирована на этих сгенерированных переводах не из-за того, что сгенерированный датасет более разнообразный, а из-за того, что такая система учится различать синтетические переводы от естественных.
Объясняют это так: мы с помощью backtranslation и существующих target предлоежний генерируем source предложения. Таким образом есть три сигнала, которые система может выучить: strong supervision от target, weak supervision от cross-lingual и различные biases системы перевода. Если системе при обучении каким-то образом сообщают о том, что source ненастоящие (например добавляя в них шум), то ей проще отделить одно от другого и сконцентрироваться на выучивании strong supervision от target-текстов.
Для проверки натренировали систему которой указывали что данный перевод является результатом backtranslation и она показала более высокое качество, чем NoisedBT. Интересно, что когда оба метода попытались объединить вместе, качество снова упало, что намекает на то, что действительно важно не разнообразие которое создаёт NoisedBT, а просто факт того что модель может проще отличить настоящие предложения от сгенеренных.
👍15
Кстати я тут пару недель назад попытался перейти с iTerm на Warp.
Очень забавный терминал и к идее блоков команд привыкаешь очень быстро. Хорошо работает с bash и zsh, но oh-my-zsh игнорирует почти полностью. Блоки работают как локально так и через ssh (разрабы говорят это было нелегко сделать). Если бы была поддержка tmux, аналогичная той что в iTerm думаю я на нём бы и остался.
Из прикольных фишек:
1. Есть command pallet вызываемая по
1. Можно попросить Codex написать за вас команду. Для этого тыкаете
1. Ещё есть какая-то коллекция сниппетов, но ни разу ей не пользовался.
Codex оказался на удивление полезным. Например я постоянно забываю как удалить conda env и на скриншоте можно увидеть как это работает. Или например узнать размеры всех скрытых директорий. Обычно такие штуки бы пытался вспомнить/угадать, потом шёл бы в гугл, а Codex позволяет устранить несколько шагов.
Очень забавный терминал и к идее блоков команд привыкаешь очень быстро. Хорошо работает с bash и zsh, но oh-my-zsh игнорирует почти полностью. Блоки работают как локально так и через ssh (разрабы говорят это было нелегко сделать). Если бы была поддержка tmux, аналогичная той что в iTerm думаю я на нём бы и остался.
Из прикольных фишек:
1. Есть command pallet вызываемая по
CMD+P
, аналогичная такой в VSCode и других редакторах1. Можно попросить Codex написать за вас команду. Для этого тыкаете
ALT+`
и пишете что хотите сделать на естественном языке.1. Ещё есть какая-то коллекция сниппетов, но ни разу ей не пользовался.
Codex оказался на удивление полезным. Например я постоянно забываю как удалить conda env и на скриншоте можно увидеть как это работает. Или например узнать размеры всех скрытых директорий. Обычно такие штуки бы пытался вспомнить/угадать, потом шёл бы в гугл, а Codex позволяет устранить несколько шагов.
👍20🔥7💩2
Learning to Prompt for Continual Learning
Wang et al, [Google]
arxiv.org/abs/2112.08654
блогпост: тык
Интересная идея использовать continuous prompt для задач continual learning, где тебе нужно последовательно учить несколько тасок.
Основная проблема CL это catastrophic forgetting — то, что модель забывает старые задачи, когда мы её учим новым задачам. Чтобы разрешить её, LTP не обновляет параметры модели вообще, а обучает только векторы промтов и их ключи. Работает это так: на основе входных данных строится query которая сравнивается с обучаемыми ключами промтов и top-k найденных промтов присоединяются ко входу в трансформер.
Почему это полезно — очень простая и эффективная по памяти имплементация по сравнению со стандартными методами CL типа EWC.
Wang et al, [Google]
arxiv.org/abs/2112.08654
блогпост: тык
Интересная идея использовать continuous prompt для задач continual learning, где тебе нужно последовательно учить несколько тасок.
Основная проблема CL это catastrophic forgetting — то, что модель забывает старые задачи, когда мы её учим новым задачам. Чтобы разрешить её, LTP не обновляет параметры модели вообще, а обучает только векторы промтов и их ключи. Работает это так: на основе входных данных строится query которая сравнивается с обучаемыми ключами промтов и top-k найденных промтов присоединяются ко входу в трансформер.
Почему это полезно — очень простая и эффективная по памяти имплементация по сравнению со стандартными методами CL типа EWC.
👍7
🤗 запускает курс по RL
Syllabus: https://github.com/huggingface/deep-rl-class
Регистрация: тык
Обещают научить работать со stable baselines, RLlib, RL Baselines3 Zoo. Также будут не только заезженные Space Invaders но и новые environments, включая работающие на Unity.
Кроме классических топиков (Q learning, policy gradients, PPO) будут также offline RL и decision transformers.
Заучит классно, мне давно пора подтянуть свои RL скилы.
Syllabus: https://github.com/huggingface/deep-rl-class
Регистрация: тык
Обещают научить работать со stable baselines, RLlib, RL Baselines3 Zoo. Также будут не только заезженные Space Invaders но и новые environments, включая работающие на Unity.
Кроме классических топиков (Q learning, policy gradients, PPO) будут также offline RL и decision transformers.
Заучит классно, мне давно пора подтянуть свои RL скилы.
GitHub
GitHub - huggingface/deep-rl-class: This repo contains the Hugging Face Deep Reinforcement Learning Course.
This repo contains the Hugging Face Deep Reinforcement Learning Course. - huggingface/deep-rl-class
🔥22👍19
Forwarded from Градиент обреченный
MASSIVE — новый мультиязыковой NLU датасет от Amazon
🌗 Amazon запустил соревнование по NLU (natural language understanding) и, в связи с этим, расшарил параллельный датасет.
• 51 язык
• Всего порядка 1 миллиона строк.
🌗 Посмотрел на него, — похоже, что это всё команды для голосового помощника alex'ы.
• Есть разметка типа "можешь создать событие [time : в ночь] на [date : пятницу] с [person : аллой пугачёвой] и [person : киркоровым]"
• Почти все тексты короткие, до 20 слов.
• Попадаются различия в переводе названий. Русский — "включи игру танки онлайн", немецкий "lass uns ein trivia spiel spielen".
Что ж, появился новый параллельный корпус на 51 язык, хотя и немного специфичный. И то хорошо.
GitHub
🌗 Amazon запустил соревнование по NLU (natural language understanding) и, в связи с этим, расшарил параллельный датасет.
• 51 язык
• Всего порядка 1 миллиона строк.
🌗 Посмотрел на него, — похоже, что это всё команды для голосового помощника alex'ы.
• Есть разметка типа "можешь создать событие [time : в ночь] на [date : пятницу] с [person : аллой пугачёвой] и [person : киркоровым]"
• Почти все тексты короткие, до 20 слов.
• Попадаются различия в переводе названий. Русский — "включи игру танки онлайн", немецкий "lass uns ein trivia spiel spielen".
Что ж, появился новый параллельный корпус на 51 язык, хотя и немного специфичный. И то хорошо.
GitHub
🔥19👍5