Update README.md
Browse files
README.md
CHANGED
@@ -34,7 +34,7 @@ Meno-Tiny-0.1 was specifically "Russified" during the fine-tuning stage, but it
|
|
34 |
#### 1. Example of communication in English
|
35 |
|
36 |
```python
|
37 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer
|
38 |
|
39 |
model_name = "bond005/meno-tiny-0.1"
|
40 |
|
@@ -44,6 +44,7 @@ model = AutoModelForCausalLM.from_pretrained(
|
|
44 |
device_map="auto"
|
45 |
)
|
46 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
|
|
47 |
|
48 |
prompt = "Give me a short introduction to large language model." # in English
|
49 |
messages = [
|
@@ -59,7 +60,7 @@ model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
|
|
59 |
|
60 |
generated_ids = model.generate(
|
61 |
**model_inputs,
|
62 |
-
|
63 |
)
|
64 |
generated_ids = [
|
65 |
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
@@ -72,7 +73,7 @@ print(response)
|
|
72 |
#### 2. Example of communication in Russian
|
73 |
|
74 |
```python
|
75 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer
|
76 |
|
77 |
model_name = "bond005/meno-tiny-0.1"
|
78 |
|
@@ -82,6 +83,7 @@ model = AutoModelForCausalLM.from_pretrained(
|
|
82 |
device_map="auto"
|
83 |
)
|
84 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
|
|
85 |
|
86 |
prompt = "Напиши краткое введение в большие языковые модели." # in Russian
|
87 |
messages = [
|
@@ -97,7 +99,7 @@ model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
|
|
97 |
|
98 |
generated_ids = model.generate(
|
99 |
**model_inputs,
|
100 |
-
|
101 |
)
|
102 |
generated_ids = [
|
103 |
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
@@ -109,12 +111,21 @@ print(response)
|
|
109 |
|
110 |
## Abilities of Meno-Tiny-0.1
|
111 |
|
112 |
-
Using Meno-Tiny-0.1 with different system and user prompts allows you to discover its various abilities.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
113 |
|
114 |
#### 1. The answer to the question about the document
|
115 |
|
116 |
```python
|
117 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer
|
118 |
|
119 |
model_name = "bond005/meno-tiny-0.1"
|
120 |
|
@@ -124,6 +135,7 @@ model = AutoModelForCausalLM.from_pretrained(
|
|
124 |
device_map="auto"
|
125 |
)
|
126 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
|
|
127 |
|
128 |
prompt = "Ответь на вопрос по тексту.\n\nВопрос: {question}\n\nТекст: {context}".format(
|
129 |
question="Где живут пингвины?",
|
@@ -142,7 +154,7 @@ model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
|
|
142 |
|
143 |
generated_ids = model.generate(
|
144 |
**model_inputs,
|
145 |
-
|
146 |
)
|
147 |
generated_ids = [
|
148 |
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
@@ -155,7 +167,7 @@ print(response)
|
|
155 |
#### 2. Summarization
|
156 |
|
157 |
```python
|
158 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer
|
159 |
|
160 |
model_name = "bond005/meno-tiny-0.1"
|
161 |
|
@@ -165,6 +177,7 @@ model = AutoModelForCausalLM.from_pretrained(
|
|
165 |
device_map="auto"
|
166 |
)
|
167 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
|
|
168 |
|
169 |
prompt = "Стали известны результаты, полученные открытой системой «Писец» на ежегодной акции «Тотальный диктант», которая состоялась 20 апреля. Напомним, что «Писец» был разработан научным сотрудником Лаборатории прикладных цифровых технологий Международного научно-образовательного математического центра НГУ и сооснователем стартапа «Сибирские нейросети» Иваном Бондаренко. Впервые искусственный интеллект соревновался в грамотности с человеческим в рамках задачи диктанта, и создатель «Писца» предполагал, что положительной оценки тот не получит — скорее всего, система допустит минимум орфографических ошибок, однако с расставлением знаков препинания вряд ли справится. \n\nРазработчикам «Писца» было важно собрать статистику о разнообразии совершаемых им ошибок и неточностей, чтобы в дальнейшем усовершенствовать систему. Результаты оказались неожиданными, но закономерными – «Писец» вполне удовлетворительно расставил запятые и разбил текст на абзацы. Для этого его специально научили улавливать в речи «кодовые фразы» вроде «пишем с красной строки» или «переходим на новый абзац». В этих целях использовалась отдельная нейросеть, обученная на базе Longformer выделять такие «внесюжетные» вставки наподобие системы NER (Named Entity Recognition - распознавание именованных сущностей). Для обучения использовался синтетический текстовый корпус. Сам же «Писец» использовал в своей работе связку Wav2Vec2-Large-Ru-Golos + Whisper-Podlodka (о Wav2Vec2-Large-Ru-Golos мы ранее писали https://www.nsu.ru/n/media/news/nauka/razrabotannuyu-professorom-ngu-model-raspoznavaniya-rechi-nauchili-razlichat-emotsii, а Whisper-Podlodka является новой моделью). Однако галлюцинаций избежать не удалось.\n\nГаллюцинация — это ответ авторегрессионной нейросетевой модели языка, который корректен грамматически, но неверен семантически (не соответствует входному запросу по смыслу)."
|
170 |
messages = [
|
@@ -180,7 +193,7 @@ model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
|
|
180 |
|
181 |
generated_ids = model.generate(
|
182 |
**model_inputs,
|
183 |
-
|
184 |
)
|
185 |
generated_ids = [
|
186 |
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
@@ -193,7 +206,7 @@ print(response)
|
|
193 |
#### 3. Anaphora resolution in dialogue (with few-shot prompting)
|
194 |
|
195 |
```python
|
196 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer
|
197 |
|
198 |
model_name = "bond005/meno-tiny-0.1"
|
199 |
|
@@ -203,6 +216,7 @@ model = AutoModelForCausalLM.from_pretrained(
|
|
203 |
device_map="auto"
|
204 |
)
|
205 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
|
|
206 |
|
207 |
user_prompt = "User: Кто сейчас ректор Новосибирского государственного университета?\nAssistant: Ректором Новосибирского государственного университета является Михаил Петрович Федорук, академик Российской академии наук, доктор физико-математических наук, профессор.\nUser: Какие у него научные интересы?"
|
208 |
few_shots_for_anaphora = [
|
@@ -228,7 +242,7 @@ model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
|
|
228 |
|
229 |
generated_ids = model.generate(
|
230 |
**model_inputs,
|
231 |
-
|
232 |
)
|
233 |
generated_ids = [
|
234 |
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
@@ -241,7 +255,7 @@ print(response)
|
|
241 |
### 4. Correction of speech recognition output (with few-shot prompting)
|
242 |
|
243 |
```python
|
244 |
-
from transformers import AutoModelForCausalLM, AutoTokenizer
|
245 |
|
246 |
model_name = "bond005/meno-tiny-0.1"
|
247 |
|
@@ -251,8 +265,9 @@ model = AutoModelForCausalLM.from_pretrained(
|
|
251 |
device_map="auto"
|
252 |
)
|
253 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
|
|
254 |
|
255 |
-
user_prompt = "то есть мы в каждый момент времени знаем про звук еще и какое то такое распределение частот и связанное это с тем что наше ухо на самом деле примерно также и воспринимать звук то есть мы не просто
|
256 |
few_shots_for_ASR_correction = [
|
257 |
{"role": "user", "content": "вы выборском районе города проводится проверка по факту нападению на квартиру"},
|
258 |
{"role": "assistant", "content": "В Выборгском районе города проводится проверка по факту нападения на квартиру."},
|
@@ -278,7 +293,7 @@ model_inputs = tokenizer([text], return_tensors="pt").to(model.device)
|
|
278 |
|
279 |
generated_ids = model.generate(
|
280 |
**model_inputs,
|
281 |
-
|
282 |
)
|
283 |
generated_ids = [
|
284 |
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
|
|
34 |
#### 1. Example of communication in English
|
35 |
|
36 |
```python
|
37 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
|
38 |
|
39 |
model_name = "bond005/meno-tiny-0.1"
|
40 |
|
|
|
44 |
device_map="auto"
|
45 |
)
|
46 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
47 |
+
gen_config = GenerationConfig.from_pretrained(model_name)
|
48 |
|
49 |
prompt = "Give me a short introduction to large language model." # in English
|
50 |
messages = [
|
|
|
60 |
|
61 |
generated_ids = model.generate(
|
62 |
**model_inputs,
|
63 |
+
generation_config=gen_config
|
64 |
)
|
65 |
generated_ids = [
|
66 |
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
|
|
73 |
#### 2. Example of communication in Russian
|
74 |
|
75 |
```python
|
76 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
|
77 |
|
78 |
model_name = "bond005/meno-tiny-0.1"
|
79 |
|
|
|
83 |
device_map="auto"
|
84 |
)
|
85 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
86 |
+
gen_config = GenerationConfig.from_pretrained(model_name)
|
87 |
|
88 |
prompt = "Напиши краткое введение в большие языковые модели." # in Russian
|
89 |
messages = [
|
|
|
99 |
|
100 |
generated_ids = model.generate(
|
101 |
**model_inputs,
|
102 |
+
generation_config=gen_config
|
103 |
)
|
104 |
generated_ids = [
|
105 |
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
|
|
111 |
|
112 |
## Abilities of Meno-Tiny-0.1
|
113 |
|
114 |
+
Using Meno-Tiny-0.1 with different system and user prompts allows you to discover its various abilities. The main tasks that Meno-Tiny-0.1 can solve, including in the few-shot prompting mode, are:
|
115 |
+
|
116 |
+
- Answering questions about the text;
|
117 |
+
- Summarization;
|
118 |
+
- Determining text toxicity and detoxifying the text;
|
119 |
+
- Anaphora resolution;
|
120 |
+
- Correcting speech recognition errors;
|
121 |
+
- and so on.
|
122 |
+
|
123 |
+
Below are some examples of how to communicate with Meno-Tiny-0.1 in Russian in order to solve a variety of specialized tasks.
|
124 |
|
125 |
#### 1. The answer to the question about the document
|
126 |
|
127 |
```python
|
128 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
|
129 |
|
130 |
model_name = "bond005/meno-tiny-0.1"
|
131 |
|
|
|
135 |
device_map="auto"
|
136 |
)
|
137 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
138 |
+
gen_config = GenerationConfig.from_pretrained(model_name)
|
139 |
|
140 |
prompt = "Ответь на вопрос по тексту.\n\nВопрос: {question}\n\nТекст: {context}".format(
|
141 |
question="Где живут пингвины?",
|
|
|
154 |
|
155 |
generated_ids = model.generate(
|
156 |
**model_inputs,
|
157 |
+
generation_config=gen_config
|
158 |
)
|
159 |
generated_ids = [
|
160 |
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
|
|
167 |
#### 2. Summarization
|
168 |
|
169 |
```python
|
170 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
|
171 |
|
172 |
model_name = "bond005/meno-tiny-0.1"
|
173 |
|
|
|
177 |
device_map="auto"
|
178 |
)
|
179 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
180 |
+
gen_config = GenerationConfig.from_pretrained(model_name)
|
181 |
|
182 |
prompt = "Стали известны результаты, полученные открытой системой «Писец» на ежегодной акции «Тотальный диктант», которая состоялась 20 апреля. Напомним, что «Писец» был разработан научным сотрудником Лаборатории прикладных цифровых технологий Международного научно-образовательного математического центра НГУ и сооснователем стартапа «Сибирские нейросети» Иваном Бондаренко. Впервые искусственный интеллект соревновался в грамотности с человеческим в рамках задачи диктанта, и создатель «Писца» предполагал, что положительной оценки тот не получит — скорее всего, система допустит минимум орфографических ошибок, однако с расставлением знаков препинания вряд ли справится. \n\nРазработчикам «Писца» было важно собрать статистику о разнообразии совершаемых им ошибок и неточностей, чтобы в дальнейшем усовершенствовать систему. Результаты оказались неожиданными, но закономерными – «Писец» вполне удовлетворительно расставил запятые и разбил текст на абзацы. Для этого его специально научили улавливать в речи «кодовые фразы» вроде «пишем с красной строки» или «переходим на новый абзац». В этих целях использовалась отдельная нейросеть, обученная на базе Longformer выделять такие «внесюжетные» вставки наподобие системы NER (Named Entity Recognition - распознавание именованных сущностей). Для обучения использовался синтетический текстовый корпус. Сам же «Писец» использовал в своей работе связку Wav2Vec2-Large-Ru-Golos + Whisper-Podlodka (о Wav2Vec2-Large-Ru-Golos мы ранее писали https://www.nsu.ru/n/media/news/nauka/razrabotannuyu-professorom-ngu-model-raspoznavaniya-rechi-nauchili-razlichat-emotsii, а Whisper-Podlodka является новой моделью). Однако галлюцинаций избежать не удалось.\n\nГаллюцинация — это ответ авторегрессионной нейросетевой модели языка, который корректен грамматически, но неверен семантически (не соответствует входному запросу по смыслу)."
|
183 |
messages = [
|
|
|
193 |
|
194 |
generated_ids = model.generate(
|
195 |
**model_inputs,
|
196 |
+
generation_config=gen_config
|
197 |
)
|
198 |
generated_ids = [
|
199 |
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
|
|
206 |
#### 3. Anaphora resolution in dialogue (with few-shot prompting)
|
207 |
|
208 |
```python
|
209 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
|
210 |
|
211 |
model_name = "bond005/meno-tiny-0.1"
|
212 |
|
|
|
216 |
device_map="auto"
|
217 |
)
|
218 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
219 |
+
gen_config = GenerationConfig.from_pretrained(model_name)
|
220 |
|
221 |
user_prompt = "User: Кто сейчас ректор Новосибирского государственного университета?\nAssistant: Ректором Новосибирского государственного университета является Михаил Петрович Федорук, академик Российской академии наук, доктор физико-математических наук, профессор.\nUser: Какие у него научные интересы?"
|
222 |
few_shots_for_anaphora = [
|
|
|
242 |
|
243 |
generated_ids = model.generate(
|
244 |
**model_inputs,
|
245 |
+
generation_config=gen_config
|
246 |
)
|
247 |
generated_ids = [
|
248 |
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|
|
|
255 |
### 4. Correction of speech recognition output (with few-shot prompting)
|
256 |
|
257 |
```python
|
258 |
+
from transformers import AutoModelForCausalLM, AutoTokenizer, GenerationConfig
|
259 |
|
260 |
model_name = "bond005/meno-tiny-0.1"
|
261 |
|
|
|
265 |
device_map="auto"
|
266 |
)
|
267 |
tokenizer = AutoTokenizer.from_pretrained(model_name)
|
268 |
+
gen_config = GenerationConfig.from_pretrained(model_name)
|
269 |
|
270 |
+
user_prompt = "то есть мы в каждый момент времени знаем про звук еще и какое то такое распределение частот и связанное это с тем что наше ухо на самом деле примерно также и воспринимать звук то есть мы не просто понимаем что вот где то там громче где то тише а наше уху еще понимает что вот этот звук выше этот ниже этот голос боле высокий этот голос низки"
|
271 |
few_shots_for_ASR_correction = [
|
272 |
{"role": "user", "content": "вы выборском районе города проводится проверка по факту нападению на квартиру"},
|
273 |
{"role": "assistant", "content": "В Выборгском районе города проводится проверка по факту нападения на квартиру."},
|
|
|
293 |
|
294 |
generated_ids = model.generate(
|
295 |
**model_inputs,
|
296 |
+
generation_config=gen_config
|
297 |
)
|
298 |
generated_ids = [
|
299 |
output_ids[len(input_ids):] for input_ids, output_ids in zip(model_inputs.input_ids, generated_ids)
|