XBFDI commited on
Commit
ae15ee7
·
verified ·
1 Parent(s): 5206615

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +141 -1
README.md CHANGED
@@ -1,5 +1,145 @@
 
1
  ---
 
 
2
  license: mit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
  ---
4
 
5
- Модель сделана на базе моего трансформера EasyFormer
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+
2
  ---
3
+ language:
4
+ - ru
5
  license: mit
6
+ library_name: transformers
7
+ pipeline_tag: text-generation
8
+ tags:
9
+ - text-generation
10
+ - chat
11
+ - russian
12
+ - transformer
13
+ - pytorch
14
+ - easyformer
15
+ - custom_code
16
+ - conversational
17
+ datasets:
18
+ - custom
19
+ model_type: transformer
20
+ base_model: OpenRussianAI/andrey
21
  ---
22
 
23
+ # Andrey — EasyFormer 1M
24
+
25
+ Лёгкий русскоязычный чат-бот на архитектуре EasyFormer.
26
+ Упрощённый decoder-only Transformer, ~1.5M параметров.
27
+
28
+ ## О модели
29
+
30
+ Andrey — компактный русскоязычный чат-бот на собственной архитектуре EasyFormer.
31
+ Снаружи — классический decoder-only Transformer, внутри — упрощения для скорости:
32
+ single-head attention, RMSNorm, FFN×2, weight tying.
33
+
34
+ Модель обучается за минуты на CPU, помещается в 6 MB, работает на любом устройстве.
35
+
36
+ ## Архитектура
37
+
38
+ | Параметр | Значение |
39
+ |---|---|
40
+ | Тип | decoder-only Transformer |
41
+ | Параметров | ~1.5M |
42
+ | Слоёв | 5 |
43
+ | d_model | 192 |
44
+ | Голов | 1 (single-head) |
45
+ | FFN | ×2, ReLU |
46
+ | Нормализация | RMSNorm |
47
+ | Контекст | 128 токенов |
48
+ | Токенизатор | char-level, 64 символа |
49
+ | Weight tying | lm_head ↔ tok_emb |
50
+
51
+ ## Быстрый старт
52
+
53
+ ```bash
54
+ pip install transformers torch huggingface_hub
55
+ ```
56
+
57
+ ```python
58
+ import json, torch
59
+ from transformers import AutoModelForCausalLM
60
+ from huggingface_hub import hf_hub_download
61
+
62
+ REPO = "OpenRussianAI/andrey"
63
+
64
+ model = AutoModelForCausalLM.from_pretrained(
65
+ REPO,
66
+ trust_remote_code=True,
67
+ dtype=torch.float32,
68
+ ).eval()
69
+
70
+ d = json.load(open(hf_hub_download(REPO, "tokenizer.json"), encoding="utf-8"))
71
+ stoi, itos = d["stoi"], {int(k): v for k, v in d["itos"].items()}
72
+ enc = lambda s: [stoi[c] for c in s if c in stoi]
73
+ dec = lambda ids: "".join(itos[i] for i in ids)
74
+
75
+ def ask(q, max_new=40, temp=0.6, top_k=20):
76
+ ids = torch.tensor([enc(f"User: {q}\nBot:")], dtype=torch.long)
77
+ out = model.generate(ids, max_new_tokens=max_new, do_sample=True,
78
+ temperature=temp, top_k=top_k)
79
+ text = dec(out[0].tolist())
80
+ return text.split("Bot:", 1)[-1].split("User:", 1)[0].strip()
81
+
82
+ print(ask("привет"))
83
+ ```
84
+
85
+ ## Примеры диалогов
86
+
87
+ ```
88
+ User: привет
89
+ Bot: привет, рад тебя видеть
90
+
91
+ User: как дела
92
+ Bot: хорошо, готов помочь
93
+
94
+ User: кто ты
95
+ Bot: я лёгкий чат-бот на EasyFormer
96
+
97
+ User: что умеешь
98
+ Bot: поддерживать простой разговор
99
+
100
+ User: ты работаешь на цп
101
+ Bot: да, я работаю на процессоре
102
+
103
+ User: сколько у тебя параметров
104
+ Bot: около миллиона
105
+
106
+ User: пока
107
+ Bot: до встречи
108
+ ```
109
+
110
+ ## Обучение
111
+
112
+ | Параметр | Значение |
113
+ |---|---|
114
+ | Диалогов | 162 |
115
+ | Токенов | ~7 000 |
116
+ | Эпох | 100 |
117
+ | Батч | 32 |
118
+ | Оптимизатор | AdamW, lr=3e-3 |
119
+ | Устройство | Tesla T4 (CUDA) |
120
+ | Время | ~8.5 минут |
121
+ | Финальный loss | 0.056 |
122
+
123
+ ## Структура репо
124
+
125
+ ```
126
+ OpenRussianAI/andrey/
127
+ ├── README.md
128
+ ├── config.json
129
+ ├── configuration_easyformer.py
130
+ ├── modeling_easyformer.py
131
+ ├── pytorch_model.bin
132
+ └── tokenizer.json
133
+ ```
134
+
135
+ ## Ограничения
136
+
137
+ - Шаблонные ответы — модель знает только 162 фразы из датасета.
138
+ - Char-level — возможны опечатки на незнакомых словах.
139
+ - Не умеет: считать, переводить, писать код, рассуждать.
140
+ - Контекст 128 токенов — помнит только последнюю реплику.
141
+ - Нет истории — каждый запрос независим.
142
+
143
+ ## Лицензия
144
+
145
+ MIT