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 случаях:
- вы работаете с данными в редком формате, модель не могла их увидеть при предобучении. Пример: вы хотите генерировать скрипты на brainfuck
- задача требует высокой степени обобщения, в обучающей выборке таких примеров скорее всего не было. Пример: машинный перевод с русского на маратхи
- задача требует очень специфических знаний, мало представленных в интернете. Пример: автосоставление документации для сталилитейного завода
- вы опробовали все форматы 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