ruT5, ruRoBERTa, ruBERT: как мы обучили серию моделей для русского языка

image-loader.svg

В зоопарке русскоязычных моделей прибавление: в открытом доступе появилась модель text2text-генерации ruT5 и модели-энкодеры ruRoBERTa и ruBERT, формирующие семантическое пространство текста. Модели можно использовать для создания классификаторов текстов, кластеризации, извлечения информации, суммаризации и многих других NLP-задач.

Ещё в начале пути создания виртуальных ассистентов Салют мы, команда NLP R&D SberDevices, поняли, что нужно обучать базовые языковые модели для русского языка, ориентируясь на успешные модели для английского. Опыта в этом, надо сказать, у нас было немного. Прошло два года, и сейчас мы обучили множество моделей, которыми хотим поделиться с вами.

С нашими «гптшками» вы уже знакомы, и про них мы уже рассказывали. Сейчас мы решили расширить наш открытый зоопарк и остальными моделями. Их все легко дообучать и использовать в проме на одной GPU, в том числе в Colab. Мы надеемся, что эти модели будут полезны русскому NLP-сообществу и помогут родиться многим интересным решениям.

В этой статье мы поделимся общими характеристиками и результатами замеров моделей на разных задачах.

Все модели размещены в формате PyTorch-Transformers. Вы можете скачать их в HF transformers.

Colab с примерами.

Что нового?


Модели ruT5 — ruBERT — ruRoBERTa для нашего зоопарка русскоязычных архитектур:  

  • sequence2sequence модель (ruT5);  
  • и два encoder«а (ruBERT, ruRoBERTa) в добавление к decoder«у (ruGPT-2, ruGPT-3).


Модели представлены в разных вариациях: base и large. Для ruRoBERTa — только large.

image-loader.svg

Детали обучения


ruBERT


2019 год, начало эры больших предобученных моделей: RuBERT-base стала первой моделью на базе трансформеров, за которую мы принялись. Мы обучали модель совместно с коллегами из DeepPavlov, так как у них уже была хорошая компетенция в этом вопросе. На тот момент ребята выложили свою модель ruBERT-base, обученную на восьми P100 16GB. Наша идея была в том, чтобы обучить модель с полноценным размером батча и без всяких ограничений, которые накладывали GPU. Тогда в Сбере появились первые DGX-2 с 16 V100 32GB. Мы вместе с Юрой Куратовым из DeepPavlov подготовили датасет, код и запустили обучение на 16 V100. За основу был взят оригинальный код от Google. Училась модель тогда около 7—8 дней. 

  • Детали: ruBERT-base имеет BPE-токенизатор со словарём 120 тыс токенов. В модели 178M весов. 
  • Данные: 30 GB русского текста, в котором была Википедия, новости, часть корпуса Taiga и немного книг. 


На момент обучения русских сетов для скоринга языковых моделей было немного. Основным из них был SberSQUAD. На нём модель показала результаты, близкие к результатам модели коллег из DeepPavlov. Позднее, на RussianSuperGLUE, она показала себя чуть лучше.

Следующей на очереди стояла модель размера «large». Словарь и обучающие данные те же, что и у base-модели. Модель имеет 427M параметров. Мы поменяли конфигурацию модели и запустили обучение на 16 V100: модели large для обучения потребовалось уже 17—20 дней. В последствии эта модель легла в основу модели SBERT наших коллег из смежной команды SberDevices, которую они выложили в открытый доступ.

image-loader.svg

ruRoBERTa


После обучения ruBERT мы занялись ruRoBERTa. Архитектурно это тот же BERT, обученный на большом корпусе текста, только на задачу восстановления маскированных токенов, на большом батч-сайзе и с токенизатором BBPE от ruGPT-2. 

  • Детали: немного переделали код для обучения из библиотеки Transformers. Обучали мы в итоге модель на 64 GPU Tesla V100 три недели.
  • Данные: мы взяли сет, который использовали для ruGPT-3, и удалили оттуда английский, а также убрали часть грязного Common Crawl. Получилось 250GB текста.


image-loader.svg

ruT5


К концу 2020 года в нашем зоопарке уже были модели, являющиеся энкодером (ruBERT и ruRoBERTa) и декодером (ruGPT-2, ruGPT-3). Но полноценного трансформера у нас не было, т.е. энкодер + декодер архитектуры в классическом понимании трансформера. 

Выбор пал на модель T5. Оригинальный код для T5 был написан на TensorFlow, и, чтобы обучать модель на нашем кластере, нужно было его переписать. Мы решили сделать свою реализацию denoising-задачи для T5 и обучать на Transformers. Размер словаря сделали таким же, как в оригинальной английской модели. Обучали на всём русском корпусе, что у нас был для ruGPT-3 (Википедия, книги, новости, русский Common Crawl и т. д.). Base-модель обучали на 32 GPU две недели, а large — на 64 GPU три недели.

image-loader.svg

Оценка моделей


Все наши модели проходят скоринг на стандартных задачах и бенчмарках. В частности, для ruT5, ruRoBERTa и ruBERT мы выбрали RussianSuperGLUE (набор из 9 задач на понимание текста и классификацию) и SberSQUAD (задача ответа на вопрос по тексту). 

На RSG модель ruT5 мы тюнили сразу на все задачи, предварительно их объединив и добавив в начало каждого примера название задания:

  • 'muserc: (1) Американского рэпера Басту Раймса обвинили в умышленном причинении вреда здоровью человека, передает Associated Press…
  • 'rucos: Премьер-министр Украины Алексей Гончарук никогда не …
  • 'danetqa: Главным среди джучидских государств формально продолжала считаться…


После первого этапа тюнинга — дообучения на трейне сразу всех заданий — мы получили N чекпойнтов. После для каждой задачи мы взяли лучший чекпойнт из N и продолжили тюнить его на трейне этой задачи до наилучшего валидационного скора. Этот способ описан в оригинальной статье по T5. 

Для ruBERT/ruRoBERTa дообучали уже без изысков, как обычно, для каждой задачи отдельно.

В рейтинге RSG лучшей моделью оказалась ruT5-large, а на втором месте — ruRoBERTa-large. Эти скоры были получены в результате одной попытки обучения для T5 и для ruRoBERTa — см. таблицу ниже.

image-loader.svg
RussianSuperGLUE

Golden Transformer — это решение, основанное на ансамбле (в основном, английских моделей). Коллеги брали задания, переводили их на английский, а затем использовали лучшие английские модели, затюненные на соответствующую задачу на английском SuperGLUE. Предикт этих моделей использовали как признак в модели градиентного бустинга.

Думаем, что можно добиться и более высоких значений, если провести дополнительные эксперименты. На разных заданиях топовые метрики далеко не только у ruT5-large: лучшие single-model решения также есть у ruRoBERTa-large (задача TERRa и DaNetQA). А на некоторых заданиях лучших результатов удалось достичь на few-shot, т. е. без дообучения модели (задача RCB и RuCoS, YaLM от Яндекса). Возможно, дело в необходимости более тонкой подстройки параметров обучения при дообучении. Надеюсь, после публикации наших моделей найдутся коллеги, которые затюнят наши модели по-своему. Мы также продолжаем эксперименты.

Для решения задачи SberSQUAD мы использовали стандартный код из библиотеки Transformers. Прогнали по разу каждую модель с одинаковыми параметрами и получили следующие результаты:
image-loader.svg
SberSQUAD

Лучший результат показывает модель mT5-large от Google, опередив ruT5-large. Возможно, объяснение здесь в том, что эта модель больше видела разнообразных текстов Википедии, чем наша русская модель. 

  • Уже давно замеченный нами факт: если затюнить модель на бОльшем объёме текстов Википедии, то метрики SberSQUAD растут. 

Все наши модели можно найти в ModelHub HuggingFace Transformers:


Репозиторий с примерами: https://github.com/sberbank-ai/model-zoo. 

И, конечно, stay tuned!

© Habrahabr.ru