Подвезли GPT-3
175 B параметров!
завтра подробно разберём
twitter.com/arankomatsuzaki/status/1266172138773307392
175 B параметров!
завтра подробно разберём
twitter.com/arankomatsuzaki/status/1266172138773307392
Twitter
Aran Komatsuzaki
Language Models are Few-Shot Learners - GPT 3 (175B params) causal LM - matches with sota fine-tuned performance with few-shot learning on various tasks - can write indistinguishable news articles https://t.co/0wZ036lnMn
Language Models are Few-Shot Learners
Brown, Mann, Ryder, Subbiah et al. [OpenAI]
arxiv.org/abs/2005.14165
Очевидный результат, про который все и так будут говорить - натренировали модель в 175B параметров. Для сравнения, в BERT large 340M, а в GPT2 - 1.5B. Генерит ещё более правдоподобные тексты, которые люди уже не могут отличить от настоящих (accuracy 52%), даже не смотря на то, что они тратят больше времени на ответ, чем с маленькими моделями (на ~20% больше относительно 1B).
А теперь про неочевидные результаты. Мы знаем, что языковые модели могут решать прикладные задачи без обучения. Однако для адекватного качества нужны очень большие модели (возможно, в тысячи раз больше GPT-3). Новые результаты показывают, что в few-shot сеттинге метрика от размера модели растёт несколько быстрее. Получается, LM с увеличеннием размера (модели и датасета) не только учат common sence, но и учатся быстрее генерализовывать по нескольким примерам. Также интересно то, что в статье имеется в виду под few-shot - это не обучение/файнтюнинг модели, в том виде, как мы привыкли. Это просто подача текста вида "x1 : y1, x2:y2, x3: ", где вся небольшая "обучающая выборка" подаётся на вход модели и она должна продолжить её. Такой подход позволил получить SOTA на TriviaQA (настоящий SOTA, в сравнении с моделями обученными на всём датасете) и в срееднем результаты не хуже зафайтнюненого BERT Large.
Но есть одно но. 175B параметров - это 700Гб (350Гб в fp16), так что скорее всего она не поместится в твою *080Ti ещё лет так 5.
Статья очень большая и интересная, советую заглянуть в секцию results, чтобы посмотреть на них подробнее или хотя бы глянуть графики.
Также зарилизили репозиторий, но в нём ничего полезного нет
Brown, Mann, Ryder, Subbiah et al. [OpenAI]
arxiv.org/abs/2005.14165
Очевидный результат, про который все и так будут говорить - натренировали модель в 175B параметров. Для сравнения, в BERT large 340M, а в GPT2 - 1.5B. Генерит ещё более правдоподобные тексты, которые люди уже не могут отличить от настоящих (accuracy 52%), даже не смотря на то, что они тратят больше времени на ответ, чем с маленькими моделями (на ~20% больше относительно 1B).
А теперь про неочевидные результаты. Мы знаем, что языковые модели могут решать прикладные задачи без обучения. Однако для адекватного качества нужны очень большие модели (возможно, в тысячи раз больше GPT-3). Новые результаты показывают, что в few-shot сеттинге метрика от размера модели растёт несколько быстрее. Получается, LM с увеличеннием размера (модели и датасета) не только учат common sence, но и учатся быстрее генерализовывать по нескольким примерам. Также интересно то, что в статье имеется в виду под few-shot - это не обучение/файнтюнинг модели, в том виде, как мы привыкли. Это просто подача текста вида "x1 : y1, x2:y2, x3: ", где вся небольшая "обучающая выборка" подаётся на вход модели и она должна продолжить её. Такой подход позволил получить SOTA на TriviaQA (настоящий SOTA, в сравнении с моделями обученными на всём датасете) и в срееднем результаты не хуже зафайтнюненого BERT Large.
Но есть одно но. 175B параметров - это 700Гб (350Гб в fp16), так что скорее всего она не поместится в твою *080Ti ещё лет так 5.
Статья очень большая и интересная, советую заглянуть в секцию results, чтобы посмотреть на них подробнее или хотя бы глянуть графики.
Также зарилизили репозиторий, но в нём ничего полезного нет
GitHub
GitHub - openai/gpt-3: GPT-3: Language Models are Few-Shot Learners
GPT-3: Language Models are Few-Shot Learners. Contribute to openai/gpt-3 development by creating an account on GitHub.
Новый релиз 🤗, теперь с лонгформером
https://github.com/huggingface/transformers/releases/tag/v2.11.0
https://github.com/huggingface/transformers/releases/tag/v2.11.0
GitHub
Release Longformer · huggingface/transformers
Longformer
Longformer (@ibeltagy)
Longformer for QA (@patil-suraj + @patrickvonplaten)
Longformer fast tokenizer (@patil-suraj)
Longformer for sequence classification (@patil-suraj)
Longformer for...
Longformer (@ibeltagy)
Longformer for QA (@patil-suraj + @patrickvonplaten)
Longformer fast tokenizer (@patil-suraj)
Longformer for sequence classification (@patil-suraj)
Longformer for...
Cascaded Text Generation with Markov Transformers
Deng and Ruch [Harvard and Cornell]
arxiv.org/abs/2006.01112
Интересная статья про альтернативу Beam Search для генерации текста. Cascaded decoding можно видеть как что-то обобщающее неавторегрессионные и авторегрессионные модели. Генерация происходит в несколько шагов: в начале вы считаете скоры слов как для неавторегресионной модели (предсказываете весь перевод целеком) и отбрасываете совсем маловероятные слова. После чего для оставшихся слов вы считаете скоры для двуграм (авторегресионно внутри каждой двуграммы) и отбрасываете самые маловероятные, потом для 3-gram итд, пока не успокоитесь.
Для того, чтобы эффективно считать скоры для n-gram авторы также предлогают Markov Transformer. По сути вы просто запрещаете биграммам смотреть друг на друга. Думаю, что это можно написатть следующим образом
Результаты: сравнимо с beam search по качеству (если добавить pseudolabelling с поомщью регрессионной модели), но в 3 раза быстрее.
зарелижен код
Deng and Ruch [Harvard and Cornell]
arxiv.org/abs/2006.01112
Интересная статья про альтернативу Beam Search для генерации текста. Cascaded decoding можно видеть как что-то обобщающее неавторегрессионные и авторегрессионные модели. Генерация происходит в несколько шагов: в начале вы считаете скоры слов как для неавторегресионной модели (предсказываете весь перевод целеком) и отбрасываете совсем маловероятные слова. После чего для оставшихся слов вы считаете скоры для двуграм (авторегресионно внутри каждой двуграммы) и отбрасываете самые маловероятные, потом для 3-gram итд, пока не успокоитесь.
Для того, чтобы эффективно считать скоры для n-gram авторы также предлогают Markov Transformer. По сути вы просто запрещаете биграммам смотреть друг на друга. Думаю, что это можно написатть следующим образом
rearrange(input, "bs (n_gram n) hid -> (bs n_gram) n hid", n_gram=4) без модификаций в архитектуре.Результаты: сравнимо с beam search по качеству (если добавить pseudolabelling с поомщью регрессионной модели), но в 3 раза быстрее.
зарелижен код
GitHub
GitHub - harvardnlp/cascaded-generation: Cascaded Text Generation with Markov Transformers
Cascaded Text Generation with Markov Transformers. Contribute to harvardnlp/cascaded-generation development by creating an account on GitHub.
А теперь хочется добавить критики и высказать свою боль по поводу зарелиженного кода.
Всё больше статей используют фреймворки не как фреймворки, а как часть кода. То есть, когда вы видете
В таком формате может быть нормально проверять свои гипотезы и разрабатывать ранние версии моделей. Но релизить такой код - это как-то невежливо и некрасиво по отношению к комьюнити. Потратье пару дней после сабмита статьи на то, чтобы причесать ваш код и сделать его минимальным. Тот же fairseq можно не модифицировать, а расширять - просто дописывать свои классы в своих файлах, а потом подключать к ванильному fairseq с помощью параметра
Если вы изобрели новую модель, которая делает что-то лучше остальных - позвольте другим использовать её простым и понятным образом. Это увеличит ваш impact, а impact - это ведь одна из главных причин, почему мы вообще занимаемся исследованями.
Помните, что вы пишете код один раз, а читаете его - десятки, а может быть и сотни раз. И не только вы.
Всё больше статей используют фреймворки не как фреймворки, а как часть кода. То есть, когда вы видете
import fairseq это не тот fairseq, который можно получить по pip install, это папка fairseq в конкретно этом проекте, где изменены 3 файла. Какие именно? Смотри по коммитам. А fairseq весьма большой, так что удачи. И это становится ещё хуже - иногда так добавлен не один фреймфорк, а несколько. В результате зарелиженный код может быть и добавляет статье воспроизводимости, но reusability остаётся нулевой.В таком формате может быть нормально проверять свои гипотезы и разрабатывать ранние версии моделей. Но релизить такой код - это как-то невежливо и некрасиво по отношению к комьюнити. Потратье пару дней после сабмита статьи на то, чтобы причесать ваш код и сделать его минимальным. Тот же fairseq можно не модифицировать, а расширять - просто дописывать свои классы в своих файлах, а потом подключать к ванильному fairseq с помощью параметра
--user-dir. В результате размер вашего репозитория уменьшается в сотни раз, позволяя проще модифицировать и переиспользовать ваш код.Если вы изобрели новую модель, которая делает что-то лучше остальных - позвольте другим использовать её простым и понятным образом. Это увеличит ваш impact, а impact - это ведь одна из главных причин, почему мы вообще занимаемся исследованями.
Помните, что вы пишете код один раз, а читаете его - десятки, а может быть и сотни раз. И не только вы.
И ссылочка на тред Thomas Wolf по этой же теме.
http://twitter.com/Thom_Wolf/status/1216990543533821952
http://twitter.com/Thom_Wolf/status/1216990543533821952
Twitter
Thomas Wolf
I often meet research scientists interested in open-sourcing their code/research and asking for advice. Here is a thread for you. First: why should you open-source models along with your paper? Because science is a virtuous circle of knowledge sharing not…
When Can Self-Attention Be Replaced by Feed Forward Layers?
Zhang et al. [University of Edinburgh]
arxiv.org/abs/2005.13895
Авторы тестировались на задачке speech-to-text, так что результат не факт, что обобщается на тексты, но по их наблюденям, можно просто выкинуть attention из последних 1-2 слоёв и не только прибавить в скорости, но и получить небольшой буст в метриках. В качестве бейзлайна сравнились с уменьшение количества слоёв.
Моей первой мыслью было попробовать запустить машинный перевод и посмотреть, как оно зайдёт. Но если внимательнее посмотреть на результаты статьи, они не такие убедительные. Ошибка падает с 9 до 8.9 на одном датасете и 3.5 до 3.4 на другом. Плюс, недавно я узнал, что BERT (по крайней мере 🤗) при обучении (MLM) использует не просто Linear для предсказания слов, a Linear->activation->LayerNorm->Linear. Так что в некотором смысле результаты этой статьи уже известны.
Zhang et al. [University of Edinburgh]
arxiv.org/abs/2005.13895
Авторы тестировались на задачке speech-to-text, так что результат не факт, что обобщается на тексты, но по их наблюденям, можно просто выкинуть attention из последних 1-2 слоёв и не только прибавить в скорости, но и получить небольшой буст в метриках. В качестве бейзлайна сравнились с уменьшение количества слоёв.
Моей первой мыслью было попробовать запустить машинный перевод и посмотреть, как оно зайдёт. Но если внимательнее посмотреть на результаты статьи, они не такие убедительные. Ошибка падает с 9 до 8.9 на одном датасете и 3.5 до 3.4 на другом. Плюс, недавно я узнал, что BERT (по крайней мере 🤗) при обучении (MLM) использует не просто Linear для предсказания слов, a Linear->activation->LayerNorm->Linear. Так что в некотором смысле результаты этой статьи уже известны.
Моделька, которая переводит ваш код с одного языка программирования на другой (C++ <=> Java <=> Python). Без параллельной разметки для обучения. Использовали те же самые алгоритмы, которые применяются для unsupervised перевода в человеческих языках и они неплохо работают.
Забавно как сделали тестсет - набрали примеры алгоритмов на geeksforgeeks, там есть примеры имплементаций на разных языках.
подробнее в треде
twitter.com/GuillaumeLample/status/1269982022413570048
Забавно как сделали тестсет - набрали примеры алгоритмов на geeksforgeeks, там есть примеры имплементаций на разных языках.
подробнее в треде
twitter.com/GuillaumeLample/status/1269982022413570048
Twitter
Guillaume Lample
Unsupervised Translation of Programming Languages. Feed a model with Python, C++, and Java source code from GitHub, and it automatically learns to translate between the 3 languages in a fully unsupervised way. https://t.co/FpUL886KS7 with @MaLachaux @b_roziere…
Forwarded from Ridvan
Сдую пыль со старого поста про неумение в гит в ДС.
Пожалуй лучшее что видел на этот счет это видео Глеба Михайлова https://www.youtube.com/watch?v=0cGIiA0AjNw&t=1s
Совершенно годный контент, на мой взгляд, да еще и на русском
Пожалуй лучшее что видел на этот счет это видео Глеба Михайлова https://www.youtube.com/watch?v=0cGIiA0AjNw&t=1s
Совершенно годный контент, на мой взгляд, да еще и на русском
YouTube
GIT для Дата Саентиста
Мой курс по SQL: https://glebmikhaylov.com/sql
------------------------------------------------------
Посмотри видос и впиши git в свою жизнь. И в резюме).
ПОДДЕРЖАТЬ СОЗДАНИЕ ВИДОСОВ: https://www.glebmikhaylov.com/donate
0:07 Зачем учить git?
1:13 Интуитивное…
------------------------------------------------------
Посмотри видос и впиши git в свою жизнь. И в резюме).
ПОДДЕРЖАТЬ СОЗДАНИЕ ВИДОСОВ: https://www.glebmikhaylov.com/donate
0:07 Зачем учить git?
1:13 Интуитивное…
Forwarded from Data Science by ODS.ai 🦜
Linformer: Self-Attention with Linear Complexity
The authors prove that self-attention can be approximated by a low-rank matrix. This idea made it possible to develop a new self-attention architecture, which reduces the complexity of
Authors decompose the original scaled dot-product attention into multiple smaller attentions through linear projections, such that the combination of these operations forms a low-rank factorization of the original attention.
Also, they suggest a number of additional efficiency techniques:
– Parameter sharing between projections: Headwise, layerwise or key-value sharing
– Nonuniform projected dimension. It could be efficient to set lower projection dimension for higher levels
– General projections. Some different kind of projection instead of linear - pooling or convolution with kernel
For experiments, they use RoBERTa and train it on 64 Tesla V100 GPUs with 250k updates.
Authors show that models reach almost the same validation perplexity as in a transformer, while inference is much faster and requires less memory.
Paper: https://arxiv.org/abs/2006.04768
#deeplearning #attention #transformer #efficience #memoryoptimization #inferencespeed
The authors prove that self-attention can be approximated by a low-rank matrix. This idea made it possible to develop a new self-attention architecture, which reduces the complexity of
O(N^2) to O(N) in both time and space.Authors decompose the original scaled dot-product attention into multiple smaller attentions through linear projections, such that the combination of these operations forms a low-rank factorization of the original attention.
Also, they suggest a number of additional efficiency techniques:
– Parameter sharing between projections: Headwise, layerwise or key-value sharing
– Nonuniform projected dimension. It could be efficient to set lower projection dimension for higher levels
– General projections. Some different kind of projection instead of linear - pooling or convolution with kernel
n and stride kFor experiments, they use RoBERTa and train it on 64 Tesla V100 GPUs with 250k updates.
Authors show that models reach almost the same validation perplexity as in a transformer, while inference is much faster and requires less memory.
Paper: https://arxiv.org/abs/2006.04768
#deeplearning #attention #transformer #efficience #memoryoptimization #inferencespeed