/ Модель

Характеристики

Контекст
2 048 токенов
Лицензия
Unlicense
Архитектура
gpt2 · dense
Опубликована
15 сен 2022

rugpt_chitchat

Генерация текстаТекст → текст3 профессии

Русскоязычная GPT-2-модель для генерации реплик чит-чата, ответов по фактам и здравому смыслу, а также простых арифметических задач.

91скачиваний за 30 дней19лайковвеса обновлены19 окт 2022

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

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

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Текст» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

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

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Модель inkoziev/rugpt_chitchat — русскоязычная GPT-2-модель на 760 млн параметров, разработанная как ядро прототипа диалоговой системы. Она продолжает короткую историю беседы и генерирует реплики для чит-чата, а также формулирует краткие ответы на вопросы по переданным фактам и здравому смыслу.

Модель рассчитана на диалоговые сценарии, где на вход подают от одной до десяти предыдущих реплик. Для ответов по базе знаний ей можно передать до пяти фактов перед вопросом; она способна выбирать релевантные сведения среди лишних и иногда выводить ответ из двух связанных предпосылок. README также сообщает о решении простых арифметических задач с двумя числами уровня начальной школы. Контекст модели — 2048 токенов.

В README приведена точность 0,91 на отложенном наборе простых арифметических задач для версии на базе модели уровня ruGPT3 Large; это не подтверждает такое же качество на других задачах. Модель является прототипом, и качество ответов вне описанных сценариев не охарактеризовано. Лицензия — Unlicense.

Сценарии применения

  • генерация следующей реплики в русскоязычном чате
  • краткие ответы на вопросы по фактам из базы знаний
  • ответы на вопросы с отбором релевантных фактов среди лишних
  • вывод ответа из двух связанных предпосылок
  • решение простых арифметических задач начальной школы

Ограничения

Способности к арифметике описаны только для простых задач с двумя числами уровня начальной школы; приведённая точность 0,91 относится к отдельному тестовому набору. Качество модели за пределами описанных сценариев не охарактеризовано.

Для каких профессий подходит3

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

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

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Russian Chit-chat, Deductive and Common Sense reasoning model

Модель является ядром прототипа диалоговой системы с двумя основными функциями.

Первая функция - генерация реплик чит-чата. В качестве затравки подается история диалога (предшествующие несколько реплик, от 1 до 10).

- Привет, как дела?
- Привет, так себе.
- <<< эту реплику ожидаем от модели >>>

Вторая функция модели - вывод ответа на заданный вопрос, опираясь на дополнительные факты или на "здравый смысл". Предполагается, что релевантные факты извлекаются из стороннего хранилища (базы знаний) с помощью другой модели, например sbert_pq. Используя указанный факт(ы) и текст вопроса, модель построит грамматичный и максимально краткий ответ, как это сделал бы человек в подобной коммуникативной ситуации. Релевантные факты следует указывать перед текстом заданного вопроса так, будто сам собеседник сказал их:

- Сегодня 15 сентября. Какой сейчас у нас месяц?
- Сентябрь

Модель не ожидает, что все найденные и добавленные в контекст диалога факты действительно имеют отношение к заданному вопросу. Поэтому модель, извлекающая из базы знаний информацию, может жертвовать точностью в пользу полноте и добавлять что-то лишнее. Модель читчата в этом случае сама выберет среди добавленных в контекст фактов необходимую фактуру и проигнорирует лишнее. Текущая версия модели допускает до 5 фактов перед вопросом. Например:

- Стасу 16 лет. Стас живет в Подольске. У Стаса нет своей машины. Где живет Стас?
- в Подольске

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

- Смертен ли Аристофан, если он был греческим философом, а все философы смертны?
- Да

Как можно видеть из приведенных примеров, формат подаваемой на вход модели фактической информации для выполнения вывода предельно естественный и свободный.

Кроме логического вывода, модель также умеет решать простые арифметические задачи в рамках 1-2 классов начальной школы, с двумя числовыми аргументами:

- Чему равно 2+8?
- 10

Варианты модели и метрики

Выложенная на данный момент модель имеет 760 млн. параметров, т.е. уровня sberbank-ai/rugpt3large_based_on_gpt2. Далее приводится результат замера точности решения арифметических задач на отложенном тестовом наборе сэмплов:

base modelarith. accuracy
sberbank-ai/rugpt3large_based_on_gpt20.91
sberbank-ai/rugpt3medium_based_on_gpt20.70
sberbank-ai/rugpt3small_based_on_gpt20.58
tinkoff-ai/ruDialoGPT-small0.44
tinkoff-ai/ruDialoGPT-medium0.69

Цифра 0.91 в столбце "arith. accuracy" означает, что 91% тестовых задач решено полностью верно. Любое отклонение сгенерированного ответа от эталонного рассматривается как ошибка. Например, выдача ответа "120" вместо "119" тоже фиксируется как ошибка.

Пример использования

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM


device = "cuda" if torch.cuda.is_available() else "cpu"
model_name = "inkoziev/rugpt_chitchat"
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.add_special_tokens({'bos_token': '<s>', 'eos_token': '</s>', 'pad_token': '<pad>'})
model = AutoModelForCausalLM.from_pretrained(model_name)
model.to(device)
model.eval()

# На вход модели подаем последние 2-3 реплики диалога. Каждая реплика на отдельной строке, начинается с символа "-"
input_text = """<s>- Привет! Что делаешь?
- Привет :) В такси еду
-"""

encoded_prompt = tokenizer.encode(input_text, add_special_tokens=False, return_tensors="pt").to(device)

output_sequences = model.generate(input_ids=encoded_prompt, max_length=100, num_return_sequences=1, pad_token_id=tokenizer.pad_token_id)

text = tokenizer.decode(output_sequences[0].tolist(), clean_up_tokenization_spaces=True)[len(input_text)+1:]
text = text[: text.find('</s>')]
print(text)

Контакты

Если у Вас есть какие-то вопросы по использованию этой модели, или предложения по ее улучшению - пишите мне mentalcomputing@gmail.com

Citation:

@MISC{rugpt_chitchat,
    author  = {Ilya Koziev},
    title   = {Russian Chit-chat with Common sence Reasoning},
    url     = {https://huggingface.co/inkoziev/rugpt_chitchat},
    year    = 2022
}

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм

Можно запустить

Подбираем GPU…

Класс архитектуры
GPT2LMHeadModel
Ревизия весов
3b18811

0 моделей