Модель
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
ОписаниеХарактеристики

Продолжение текста (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» от SberCloud.

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

Дисклеймер

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

Основные
Размер файлов2.66
Версия0.1
Обновлено11/9/2021