Модель
ruGPT-3 Large

Современная модель генерации текста для русского языка на основе архитектуры GPT-3 от OpenAI.

Модель ruGPT-3 Large содержит 760 миллионов параметров.

Модель обучалась командой SberDevices с длиной контекста 1024, с помощью библиотеки transformers на корпусе из 80 млрд слов и полностью прошла 3 эпохи. После этого модель была дообучена еще 1 эпоху с длиной контекста 2048.

Общее время обучения составило около 14 дней на 128 GPU для контекста длины 1024 и несколько дней на 16 GPU для контекста длины 2048. Окончательная перплексия на тестовой выборке - 13.6.

Карточка модели на HuggingFace ссылка

Лицензия
Apache 2.0
Размер файлов
2.66 GB
Версия
0.1
Бесплатно
Подключить
Категории
NLPgpt3rugpt3pytorchnatural language generation
Разработчик
SberDevices
Контакты
gpt3support@sber.ru
Описание

Продолжение текста (Generation)

Базовое использование модели подразумевает работу с уже обученной моделью в режиме инференса. Модель умеет продолжать переданный текст, дополняя его. В примерах ниже ответ модели при генерации выделен курсивом:

Диалоговые системы

system: Добрый день! Чем могу помочь?

user: Добрый день! С утра не работает интернет. Тариф 500мбит

system: хорошо, сейчас попробуем исправить. Ждите.

Рекомендательные системы с нуля

"Физик Максим, 28 лет, больше всего любит фильмы: «Улица Сезам», «Матрица».

Тематическая классификация текстов

Новость: В России выведен на полную мощность самый быстрый в мире суперкомпьютер «Кристофари»

Категория: Новости науки, техника и технологии.

Пример запуска генерации

from transformers import GPT2LMHeadModel, GPT2Tokenizer

model_name_or_path = "path/to/model"
tokenizer = GPT2Tokenizer.from_pretrained(model_name_or_path)
model = GPT2LMHeadModel.from_pretrained(model_name_or_path).cuda()
text = "Александр Сергеевич Пушкин родился в "
input_ids = tokenizer.encode(text, return_tensors="pt").cuda()
out = model.generate(input_ids.cuda())
generated_text = list(map(tokenizer.decode, out))[0]
print(generated_text)
# Output should be like this:
# Александр Сергеевич Пушкин родился в \n1799 году. Его отец был крепостным крестьянином, а мать – крепостной крестьянкой. Детство и юность Пушкина прошли в деревне Михайловское под Петербургом. В 1820-х годах семья переехала

Colab-ноутбук с примером генерации

Возможные примеры работы с затравками

  • zero-shot - подается только начало текста (затравка), которое модели нужно продолжить
  • one-shot - подается пример 1 затравки, спецтокен и корректного продолжения, через новую строку - целевая затравка, которую нужно продолжить
  • few-shot - несколько примеров затравок и ихкорректных продолжений, затем целевая затравка.

Совет: чтобы улучшить качество работы систем one-shot и few-shot, ознакомьтесь со спецтокенами модели в словаре токенизатора. Такие токены, как <pad>,<|endoftext|>,<s>,</s>, вы можете использовать для форматирования своих примеров.

Дообучение модели (Fine-tuning)

Дообучение с использованием GPU осмысленно в 4 случаях:

  1. вы работаете с данными в редком формате, модель не могла их увидеть при предобучении. Пример: вы хотите генерировать скрипты на brainfuck
  2. задача требует высокой степени обобщения, в обучающей выборке таких примеров скорее всего не было. Пример: машинный перевод с русского на маратхи
  3. задача требует очень специфических знаний, мало представленных в интернете. Пример: автосоставление документации для сталилитейного завода
  4. вы опробовали все форматы few-shot, и без дообучения ничего не выходит. Как показывает это исследование, качество few-shot сильно зависит от баланса классов в примерах few-shot, порядке следования примеров.

Пример базового дообучения модели с помощью кода из репозитория

!export PYTHONPATH=${PYTHONPATH}: path/to/ru-gpts/
!CUDA_VISIBLE_DEVICES=0 python ru-gpts/pretrain_transformers.py \
    --output_dir=models/essays \
    --model_type=gpt2 \
    --model_name_or_path=sberbank-ai/rugpt3small_based_on_gpt2 \
    --do_train \
    --train_data_file=train.txt \
    --do_eval \
    --eval_data_file=valid.txt \
    --per_gpu_train_batch_size 1 \
    --gradient_accumulation_steps 1 \
    --num_train_epochs 5 \
    --block_size 2048 \
    --overwrite_output_dir

Совет: отформатируйте текстовые данные для дообучения такм образом, чтобы прдать им структуру: используйте переносы строк \n, чтобы отделить разные обучающие примеры друг от друга, используйте спецтокены, чтобы обозначить начало и конец примера, токен-сепаратор, чтобы обозначить конец затравки и начало генерации.

Colab-ноутбук с примером дообучения

Подробнее о ruGPT-3

Демо ruGPT-3 XL с UI

GitHub с примерами кода по использованию модели

vc.ru: рассказываем о применимости для бизнеса

Habr (tutorial): Тестируем ruGPT-3 на новых задачах

Habr, статья про обучение модели: Русскоязычная модель GPT-3 Large с 760 миллионами параметров в открытом доступе

Habr, статья про кейсы применения модели: Всё, что нам нужно — это генерация

Вебинар, спикер Татьяна Шаврина: Разбираем кейсы реального применения ruGPT-3

Вебинар, спикер Татьяна Шаврина: Полный цикл дообучения ruGPT-3 на платформе ML Space и примеры рыночных кейсов

Модель ruGPT-3 обучена и развёрнута с помощью платформы ML Space и суперкомпьютера «Christofari» от Cloud.

Архитектура нейросети ruGPT-3 основывается на решении Generative Pretrained Transformer 3 от OpenAI.

Дисклеймер

При использовании модели ruGPT-3 Large ответы формируются на автоматической основе. ООО «Облачные технологии» не несет ответственности за точность, релевантность, корректность информации, полученной пользователем посредством модели.