Всем привет!
Мы команда NLP Core RnD. Работаем в SberDevices. Занимаемся исследованиями в NLP и PLP (Programming Language Processing). Мы авторы ряда публичных моделей для русского языка: ruBert, ruRoBerta, ruGPТ2, ruGPT3, ruT5, FRED-T5. Более 4-х лет делаем много экспериментов в различных областях NLP (ODQA, chit-chat, NLU) и PLP. На этом канале хотим делиться с вами нашим мнением и результатами исследований, которые можем рассказать. Надеемся получится сделать канал полезным.)
Мы команда 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🎉6❤4
Новая 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.
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👍15❤7
🚀Статья о FRED-T5 уже на Хабре!
FRED-T5. Новая SOTA модель для русского языка от SberDevices
Постарались рассказать основное про наш путь обучения FRED-T5. Вероятно, не всё будет понятно. Вопросы пишите в комментах к этому посту. С радостью ответим по возможности.
Мы продолжаем экспериментировать с моделями.
FRED-T5. Новая SOTA модель для русского языка от SberDevices
Постарались рассказать основное про наш путь обучения FRED-T5. Вероятно, не всё будет понятно. Вопросы пишите в комментах к этому посту. С радостью ответим по возможности.
Мы продолжаем экспериментировать с моделями.
Хабр
FRED-T5. Новая SOTA модель для русского языка от SberDevices
Уже много времени прошло с момента публикации наших последних языковых моделей ruT5, ruRoBERTa, ruGPT-3. За это время много что изменилось в NLP. Наши модели легли в основу множества русскоязычных...
🔥27👍10❤5
NLP Core Team
🚀Статья о FRED-T5 уже на Хабре! FRED-T5. Новая SOTA модель для русского языка от SberDevices Постарались рассказать основное про наш путь обучения FRED-T5. Вероятно, не всё будет понятно. Вопросы пишите в комментах к этому посту. С радостью ответим по возможности.…
Кстати, картинку к статье сгенерировали с помощью Kandinsky 2.1 по запросу: "Transformer learning"
🔥13👍6❤🔥2
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 не докинуло знаний в модель.
Хотим поделиться мыслями по нашим "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👍3❤1👨💻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.
Мы пересмотрели ряд пейперов и нашли несколько интересных фактов, на которые ранее не обращали внимание. В пейпере T5 https://arxiv.org/abs/1910.10683 авторы провели эксперименты с переобучением маленькой модели T5-base (размер модели – около 220М параметров). Для первого эксперимента они обучали модель с нуля и показали ей 34B (миллиарда) токенов из C4. Для второго брали подвыборку из 34B сета в 64 раза меньше и обучали модель так же с нуля на протяжении 64 эпох, в итоге показав модели 34B токенов. Также были проведены аналогичные эксперименты с датасетом, уменьшенным относительно исходного в 256, 1024 и 4096 раз. Напомню, что T5 обучалась на одной задаче денойзинга, а у нас их 7.
👍10❤1🔥1
Вот такие кривые трейн лосса T5-base у них получились для различных вариантов размеров сета. Красная линия от синей едва ли отличается. Вероятно, если бы денойзеров было 7, как у нас, то эти линии были бы ближе друг к другу. Да и желтая рядом. А что с этими линиями было бы на 1T токенов обучения, когда модель пройдет миллионы шагов? Интересный вопрос. Нужно будет проверить это как-нибудь.
🔥8👍1
Есть еще вот такая статья: "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 миллионов слов.
Авторы берут 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 миллионов слов.
🔥5❤2👍1