Новая 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.