File size: 3,136 Bytes
37ae05c
 
 
 
 
 
 
 
 
 
 
 
43227e5
 
 
 
 
 
8ba58e3
43227e5
 
8ba58e3
43227e5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8ba58e3
1bdbe37
8ba58e3
1bdbe37
 
0c97014
 
 
 
 
 
1bdbe37
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
---
datasets:
- kuznetsoffandrey/sberquad
language:
- ru
metrics:
- bleu
- chrf
base_model:
- ai-forever/ruT5-base
pipeline_tag: question-answering
library_name: transformers
---


# Проект: Чат-бот с использованием модели ruT5-base для ответов на вопросы

## Описание
Этот проект представляет собой систему, которая использует предобученную модель **ruT5-base** для генерации ответов на вопросы, основанных на предоставленном контексте. Я дообучаю модель на датасете SberQUAD, адаптируя её для задач вопросно-ответного взаимодействия на русском языке.

## Датасет
Я использую датасет [SberQUAD](https://huggingface.co/datasets/kuznetsoffandrey/sberquad), который содержит примеры вопросов и ответов на них в контексте различных текстов. Датасет разбит на тренировочные, валидационные и тестовые части.

## Архитектура модели
В качестве базовой модели используется [ruT5-base](https://huggingface.co/ai-forever/ruT5-base) — Encoder-Decoder модель, оптимизированная для задач на русском языке. Модель была дополнительно дообучена на кастомных данных для улучшения генерации ответов на основе предоставленного контекста.

## Параметры обучения

Для обучения использовались следующие параметры:

```python
output_dir="./models",
optim="adafactor",
num_train_epochs=1, # в идеале 2 эпохи
do_train=True,
gradient_checkpointing=True,
bf16=True,
per_device_train_batch_size=8,
per_device_eval_batch_size=12,
gradient_accumulation_steps=4,
logging_dir="./logs",
report_to="wandb",
logging_steps=10,
save_strategy="steps",
save_steps=5000,
evaluation_strategy="steps",
eval_steps=300,
learning_rate=3e-5,
predict_with_generate=False,
generation_max_length=64
```

К сожалению, мне не хватило вычислительного времени на Google Collab, поэтому модель была обучена только на одной эпохе с ~1416 шагами.
## Результаты обучения

| Шаг | Loss на валидации | Sbleu | Chr F | Rouge1 | Rouge2 | Rougel |
|-----|-------------------|-------|-------|--------|--------|--------|
| 300 | 1.025008          | 18.206400 | 62.316300 | 0.110400 | 0.035200 | 0.109800 |
| 600 | 1.007530          | 18.523100 | 62.564700 | 0.113300 | 0.036500 | 0.112800 |
| 900 | 0.959073          | 18.869000 | 63.001700 | 0.115100 | 0.035600 | 0.114600 |
| 1200| 0.944776          | 18.656300 | 62.819800 | 0.115400 | 0.035800 | 0.115000 |