ruGPT-3 XL-image

ruGPT-3 XL
Бесплатно

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

Модель ruGPT-3 XL содержит 1,3 миллиарда параметров.

Длина контекста модели составляет 2048 токенов + используется реализация разреженного внимания из DeepSpeed

Онлайн-демо c UI: ссылка

Модель была обучена с длиной контекста 512 с использованием кода Deepspeed и Megatron на датасете 80B токенов за 4 эпохи. После этого модель была дообучена на 1 эпохе с длиной контекста 2048.

  • Примечание! У модели есть блоки sparse attention

Общее время обучения составило около 10 дней на 256 GPU. Окончательная перплексия на тестовой выборке 12.05.

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

Лицензия

Apache 2.0

Размер файлов

2.66 GB

Версия

0.1

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

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

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

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

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

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

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

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

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

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

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

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

from src.xl_wrapper import RuGPT3XL
gpt = RuGPT3XL.from_pretrained("sberbank-ai/rugpt3xl", seq_len=512)

def filter_resuls(nr):
    return [x[:x.find("<|endoftext|>")] for x in nr]

filter_resuls(gpt.generate(
    "Кто был президентом США в 2020? ",
    max_length=50,
    no_repeat_ngram_size=3,
    repetition_penalty=2.,
))

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

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

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

Совет: рассчитывайте количество примеров в few-shot таким образом, чтобы не выйти за максимальную длину последовательности контеката - 2048 токенов.

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

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

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

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

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

#! /bin/bash

NUM_GPUS_PER_WORKER=1

gpt_options=" \
       --train-data-path /path/2/train/data/files.list \
       --max-files-per-process 20000 \
       --logging-dir=/path/2/log/dir \
       --load-huggingface sberbank-ai/rugpt3xl \
       --save /path/2/save/model \
       --tokenizer-path sberbank-ai/rugpt3xl \
       --cache-prefix p5 \
       --save-interval 500 \
       --no-load-optim \
       --finetune \
       --log-interval 100 \
       --model-parallel-size 1 \
       --num-layers 24 \
       --hidden-size 2048 \
       --num-attention-heads 16 \
       --batch-size 2 \
       --seq-length 2048 \
       --max-position-embeddings 2048 \
       --train-iters 20000 \
       --distributed-backend nccl \
       --lr 0.000015 \
       --warmup 0.0 \
       --lr-decay-style constant \
       --weight-decay 1e-2 \
       --fp16 \
       --sparse-mode alternating \
       --checkpoint-activations \
       --deepspeed-activation-checkpointing \
       --deepspeed \
       --deepspeed_config ../src/deepspeed_config/gpt3_xl_sparse_2048.json \
"

run_cmd="USE_DEEPSPEED=1 mpirun --np ${NUM_GPUS_PER_WORKER} python ../pretrain_gpt3.py $@ ${gpt_options}"
echo ${run_cmd}
eval ${run_cmd}

set +x

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

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

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

Демо ruGPT-3 XL с UI

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

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

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

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

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

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

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

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

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

Дисклеймер

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

Обратная связь

Круглосуточная поддержка по телефону 8 800 444-24-99, почте support@cloud.ru и в Telegram