
## Russian Chit-chat, Deductive and Common Sense reasoning model

Модель является ядром прототипа [диалоговой системы](https://github.com/Koziev/chatbot) с двумя основными функциями.

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

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

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


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

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

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

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

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

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

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

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


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

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

| base model                              | arith. accuracy |
| --------------------------------------- | --------------- |
| sberbank-ai/rugpt3large_based_on_gpt2   |  0.91           |
| sberbank-ai/rugpt3medium_based_on_gpt2  |  0.70           |
| sberbank-ai/rugpt3small_based_on_gpt2   |  0.58           |
| tinkoff-ai/ruDialoGPT-small             |  0.44           |
| tinkoff-ai/ruDialoGPT-medium            |  0.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
}
```


{"language": "ru", "license": "unlicense", "tags": ["PyTorch", "Transformers", "gpt2"], "pipeline_tag": "text-generation", "widget": [{"text": "- \u0423 \u0414\u0436\u0443\u043b\u044c\u0435\u0442\u0442\u044b \u0431\u044b\u043b\u043e 7 \u043f\u043e\u043d\u0447\u0438\u043a\u043e\u0432, \u0430 \u043f\u043e\u0442\u043e\u043c \u043e\u043d\u0430 3 \u0441\u044a\u0435\u043b\u0430. \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0443 \u043d\u0435\u0435 \u043e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u043d\u0447\u0438\u043a\u043e\u0432? -"}, {"text": "- \u041f\u043e\u0433\u043b\u0430\u0436\u0435\u043d\u043e 4 \u043c\u0430\u043d\u0443\u043b\u0430. \u041e\u0441\u0442\u0430\u043b\u043e\u0441\u044c \u043f\u043e\u0433\u043b\u0430\u0434\u0438\u0442\u044c 6. \u0421\u043a\u043e\u043b\u044c\u043a\u043e \u0432\u0441\u0435\u0433\u043e \u043c\u0430\u043d\u0443\u043b\u043e\u0432 \u043d\u0430\u0434\u043e \u043f\u043e\u0433\u043b\u0430\u0434\u0438\u0442\u044c? -"}, {"text": "- \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u0441\u043a\u0430\u0436\u0438, \u0447\u0435\u043c\u0443 \u0440\u0430\u0432\u043d\u043e \u043f\u044f\u0442\u044c\u044e \u0434\u0435\u0432\u044f\u0442\u044c? -"}, {"text": "- \u0442\u044b \u0447\u0451 \u0442\u0430\u043a\u043e\u0439 \u0431\u043e\u0440\u0437\u044b\u0439? -"}, {"text": "- \u041f\u0440\u0438\u0432\u0435\u0442! \u041a\u0430\u043a \u0432\u0430\u0448\u0435 \u043d\u0438\u0447\u0435\u0433\u043e? -"}]}
transformers pytorch gpt2 text-generation PyTorch Transformers ru license:unlicense autotrain_compatible endpoints_compatible has_space text-generation-inference region:us
TAGS
#transformers #pytorch #gpt2 #text-generation #PyTorch #Transformers #ru #license-unlicense #autotrain_compatible #endpoints_compatible #has_space #text-generation-inference #region-us 

Russian Chit-chat, Deductive and Common Sense reasoning model
-------------------------------------------------------------


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


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


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


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


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


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


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


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


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



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


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


### Контакты


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


:



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


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



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


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


:
TAGS
#transformers #pytorch #gpt2 #text-generation #PyTorch #Transformers #ru #license-unlicense #autotrain_compatible #endpoints_compatible #has_space #text-generation-inference #region-us 
 ### Варианты модели и метрики


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



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


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


:
passage: TAGS
#transformers #pytorch #gpt2 #text-generation #PyTorch #Transformers #ru #license-unlicense #autotrain_compatible #endpoints_compatible #has_space #text-generation-inference #region-us 
### Варианты модели и метрики


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



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


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


: