NLP Core Team
3.37K subscribers
86 photos
4 videos
66 links
Канал команды NLP соre.
Здесь мы делимся нашими результами и мыслями в области NLP/PLP и не только. Мы авторы многих моделей для русского языка: ruBert, ruGPT2, ruGPT3, ruT5, ruRoberta, FRED-T5.
Download Telegram
Channel created
Всем привет!
Мы команда NLP Core RnD. Работаем в SberDevices. Занимаемся исследованиями в NLP и PLP (Programming Language Processing). Мы авторы ряда публичных моделей для русского языка: ruBert, ruRoBerta, ruGPТ2, ruGPT3, ruT5, FRED-T5. Более 4-х лет делаем много экспериментов в различных областях NLP (ODQA, chit-chat, NLU) и PLP. На этом канале хотим делиться с вами нашим мнением и результатами исследований, которые можем рассказать. Надеемся получится сделать канал полезным.)
🔥34🎉64
Новая SOTA модель для русского языка FRED-T5 доступна на HuggingFace. 🚀🚀🚀

FRED-T5-1.7B
FRED-T5-large (820M)

Модель 1.7B показала лучший скор на RussianSuperGLUE и на текущий момент является SOTA для русского языка.
FRED-T5 основана на базе архитектуры T5. Изначально мы целились в ПРОМопригодность модели при выборе архитектуры. Мы использовали bbpe токенайзер от ruGPT3 (до large размера). Модель обучалась на миксе денойзеров. Денойзеры похожие, как в пейпере UL2. Если не слышали про UL2, то можно тут прочитать. Мы использовали равномерное распределение в задачах span corruption при выборе длины спана. И у нас было 7 денойзеров на каждый вариант семплирования (в UL2 было 3). Модель первую часть тренировки обучалась на 3.5Gb данных (чуть больше 1% от всего сета 300Gb). После она была дообучена на всем сете. Всего модель видела 1.5T токенов.
Вот такие денойзеры:
‘<LM>’:(µ = L/4, r = 0.25)
‘<SC1>’:(µ = 3, r = 0.15)
‘<SC2>’:(µ = 8, r = 0.15)
<SC3>’:(µ = 64, r = 0.15)
‘<SC4>’:(µ = 3, r = 0.5)
‘<SC5>’:(µ = 8, r = 0.5)
‘<SC6>’:(µ = 64, r = 0.5)
µ — это средняя длина спана в токенах, а r— это доля удаленных токенов

Ничего не поняли?) Через пару дней выйдет наша статья на Хабре, где мы расскажем детали.

Как можно юзать модель?
Берем токенизатор GPT2 и модель T5 из HF.
tokenizer = GPT2Tokenizer.from_pretrained('ai-forever/FRED-T5-1.7B',eos_token='</s>')
model = T5ForConditionalGeneration.from_pretrained(('ai-forever/FRED-T5-1.7B')
Не забывайте руками добавлять ‘</s>’ если он нужен вам. GPT2Tokenizer не делает это по умолчанию.

Советы по файнтюну.
При файнтюне модели можно использовать префиксы денойзеров, которые использовались при обучении ‘<LM>’, ‘<SC1>’,...’<SC6>’. Добавляете в начале текста, подаваемого на энкодер. Если задача LM, то лучше использовать префикс ‘<LM>’, в остальных случаях можно без префикса. При файнтюне на RSG мы не увидели значимых различий в предиктах в зависимости от префикса и без его использования. Если ваша задача похожа на одну из задач денойзинга, то конечно стоит попробовать взять соответствующий префикс. Мы часто при файнтюне используем оптимизатор Adafactor c постоянным lr=0.001. Он чаще дает лучшие результаты чем AdamW.
🔥34👍157
🚀Статья о FRED-T5 уже на Хабре!

FRED-T5. Новая SOTA модель для русского языка от SberDevices
Постарались рассказать основное про наш путь обучения FRED-T5. Вероятно, не всё будет понятно. Вопросы пишите в комментах к этому посту. С радостью ответим по возможности.
Мы продолжаем экспериментировать с моделями.
🔥27👍105
3.5GB is all you need!? 🧐🤔
Хотим поделиться мыслями по нашим "3.5GB is all you need". Напомню, что FRED-T5 1.7B 2/3 шагов училась на одних и тех же данных, чуть более 1% всего сета (весь сет – 300GB). Так вышло случайно, в результате нашей ошибки при обучении, когда дебажили код. Забыли убрать загрузку одного и того же сета на каждую гпу. Потом модель обучалась на полном сете. Увидев 3.5GB сета более 200 раз модель не переобучилась. Это подтверждается тем, что трейн лосс существенно не изменился, после того, как было запущено обучение модели на всем сете. Более того, она стала решать задачи RussianSuperGLUE (RSG) на 0.759. Тогда как финальный чекпойнт показал 0.762, где мы более внимательно файнтюнили на RSG. По сути, дообучение на всем сете с точки зрения решения RSG не докинуло знаний в модель.
🔥17🤔8👍31👨‍💻1
График трейн лосса FRED-T5 1.7B. До красной вертикальной линии модель обучалась на 3.5GB данных.
🤔5🔥3👍1
Почему модель не переобучилась? Вероятно, если бы мы показывали 200 раз сет в режиме одной задачи LM, то мы бы увидели скачок кривой лосса при переключении на весь сет. Но так как у нас 7 денойзеров и каждый сиквенс нарезался семь раз по разному, то модели сложнее его запомнить, и мы не увидели этого скачка. 3.5GB – это около 0.5B токенов.

Мы пересмотрели ряд пейперов и нашли несколько интересных фактов, на которые ранее не обращали внимание. В пейпере T5 https://arxiv.org/abs/1910.10683 авторы провели эксперименты с переобучением маленькой модели T5-base (размер модели – около 220М параметров). Для первого эксперимента они обучали модель с нуля и показали ей 34B (миллиарда) токенов из C4. Для второго брали подвыборку из 34B сета в 64 раза меньше и обучали модель так же с нуля на протяжении 64 эпох, в итоге показав модели 34B токенов. Также были проведены аналогичные эксперименты с датасетом, уменьшенным относительно исходного в 256, 1024 и 4096 раз. Напомню, что T5 обучалась на одной задаче денойзинга, а у нас их 7.
👍101🔥1
Вот такие кривые трейн лосса T5-base у них получились для различных вариантов размеров сета. Красная линия от синей едва ли отличается. Вероятно, если бы денойзеров было 7, как у нас, то эти линии были бы ближе друг к другу. Да и желтая рядом. А что с этими линиями было бы на 1T токенов обучения, когда модель пройдет миллионы шагов? Интересный вопрос. Нужно будет проверить это как-нибудь.
🔥8👍1
А вот замеры на различных задачах получившихся моделей. Обратите внимание на замер на SGLUE (SuperGLUE). Для модели, которая видела 64 эпохи 1/64 часть сета, скор выше чем у модели, которая видела 1 эпоху полный сет в 34B токенов: 71.36 против 72.03
🔥3
Есть еще вот такая статья: "Trained on 100 million words and still in shape: BERT meets British National Corpus" https://arxiv.org/abs/2303.09859.
Авторы берут Bert-base c некоторыми модификациями и обучают его на корпусе из British National Corpus (100M words). Обучают, показывая модели столько же токенов, сколько и для обычного Bert-base, который учился на Wikipedia + BookCorpus (3000M words). Еще авторы перебирают различные параметры MLM таски и включения задачи NSP. Они демонстрируют, что их LTG-BERT не уступает Bert-base, а в некоторых тасках и выигрывает. Если же взять MLM на уровне спанов слов (span masking), то и вовсе уверенно обходит Bert-base на GLUE. Разница в размерах сетов огромная: 3000 против 100 миллионов слов.
🔥52👍1
Замеры из статьи "Trained on 100 million words and still in shape: BERT meets British National"
🔥3
Все это указывает на то, что для того чтобы решать задачи RSG и различные другие задачи, на которые мы обычно тюним модели, то не обязательно обучать модель на огромном корпусе данных. Можно взять 10 Gb наиболее чистых и актуальных данных и на них обучать модель.
Следует сказать, что если ваша задача состоит в том, чтобы модель максимально больше запомнила фактов из выборки для того, чтобы потом на инференсе могла их воспроизводить, то конечно модели нужно показывать большой сет.
👍8🔥4
А что если существует некоторая статистика или закономерность языка, которую модель обычно аппроксимирует на последних частях обучения, когда перплексия выходит "в полку"? Ну т.е. модель сначала пытается запомнить многообразия словосочетаний, предложений, абзацев а после, когда ей уже не хватает возможности запомнить, она аппроксимирует эту статистику языка. И именно аппроксимация этой статистики ей нужна для решения сложных задач RSG или других задач NLP. В своих экспериментах с претрейном мы несколько раз замечали, что модели на последних шагах обучения “в полку”, когда лосс едва снижался, сильно прибавляли в решении RSG или других задач.
👍12🔥7🥰2