alexanderpl commited on
Commit
b05d483
·
verified ·
1 Parent(s): d74537e

Update README.md

Browse files
Files changed (1) hide show
  1. README.md +207 -3
README.md CHANGED
@@ -1,3 +1,207 @@
1
- ---
2
- license: apache-2.0
3
- ---
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ---
2
+ license: apache-2.0
3
+ datasets:
4
+ - alexanderpl/ru_gec_v1
5
+ language:
6
+ - ru
7
+ metrics:
8
+ - accuracy
9
+ base_model:
10
+ - unsloth/gemma-2-2b-bnb-4bit
11
+ pipeline_tag: text-generation
12
+ tags:
13
+ - language
14
+ ---
15
+ ## **Gemma2-2b-GEC-v1: A Fine-Tuned Model for Russian Grammatical Error Correction**
16
+
17
+ This model is a fine-tuned version of `unsloth/gemma-2-2b-bnb-4bit` on the `p1746-lingua/ru-gec-v1` dataset. It is designed for **Grammatical Error Correction (GEC)** for Russian texts, generating corrected versions of input sentences with grammatical, spelling, and punctuation errors.
18
+
19
+ ---
20
+
21
+ ### **Model Details & Training**
22
+
23
+ * **Base Model:** `google/gemma-2-2b` (via Unsloth's 4-bit quantized version)
24
+ * **Task:** Sequence-to-sequence text generation for error correction.
25
+ * **Training Data:** `p1746-lingua/ru-gec-v1` dataset, consisting of approximately 707,000 sentence pairs (erroneous → corrected).
26
+ * **Max Sequence Length:** 512 tokens.
27
+ * **Framework:** PyTorch, Hugging Face Transformers, with accelerated training using Unsloth.
28
+
29
+ #### **Hyperparameters:**
30
+
31
+ | Parameter | Value |
32
+ | :--- | :--- |
33
+ | **Batch Size** | 32 |
34
+ | **Learning Rate** | 1e-5 |
35
+ | **Total Epochs** | 10,000 |
36
+ | **Warmup Steps** | 100 |
37
+ | **Optimizer** | adamw_bnb_8bit |
38
+
39
+ ---
40
+
41
+ ### **How to Use**
42
+
43
+ The model operates in a standard text-to-text way. Here are examples using the Hugging Face `transformers` pipeline and direct inference.
44
+
45
+ #### **Inference with Transformers**
46
+
47
+ ```python
48
+ from transformers import AutoModelForCausalLM, AutoTokenizer
49
+ from peft import PeftModel
50
+ import torch
51
+
52
+ peft_model_id = "p1746-lingua/gemma2-2b-gec-v1"
53
+ base_model_id = "unsloth/gemma-2-2b-bnb-4bit"
54
+
55
+ tokenizer = AutoTokenizer.from_pretrained(peft_model_id)
56
+
57
+ # Load base model
58
+ base_model = AutoModelForCausalLM.from_pretrained(
59
+ base_model_id,
60
+ torch_dtype=torch.float16,
61
+ device_map="auto"
62
+ )
63
+
64
+ model = PeftModel.from_pretrained(base_model, peft_model_id)
65
+
66
+ examples = [
67
+ "Я будуш делать задание завтра.",
68
+ "Она купила три яблоки.",
69
+ "Это моя лучшая друзья.",
70
+ "Мы ходили в кино вчерашний день."
71
+ ]
72
+
73
+ def correct_sentence(sentence, max_length=200):
74
+ prompt = f"Correct this Russian sentence: {sentence}\nCorrected:"
75
+
76
+ inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
77
+
78
+ with torch.no_grad():
79
+ outputs = model.generate(
80
+ **inputs,
81
+ max_new_tokens=max_length,
82
+ do_sample=False,
83
+ num_return_sequences=1,
84
+ pad_token_id=tokenizer.pad_token_id,
85
+ eos_token_id=tokenizer.eos_token_id,
86
+ )
87
+
88
+ generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
89
+
90
+ if "Corrected:" in generated_text:
91
+ corrected = generated_text.split("Corrected:")[1].strip()
92
+ else:
93
+ corrected = generated_text.replace(prompt, "").strip()
94
+
95
+ return corrected
96
+
97
+ for sentence in examples:
98
+ corrected = correct_sentence(sentence)
99
+ print(f"Input: {sentence}")
100
+ print(f"Output: {corrected}\n")
101
+
102
+ # Я буду делать задание завтра.
103
+ # Она купила три яблока.
104
+ # Это моя лучшая подруга.
105
+ # Мы ходили в кино вчера.
106
+ ```
107
+
108
+ **Disclaimer:** This model is a tool to assist with writing. Its output should be reviewed by a human, especially in critical or formal contexts.
109
+
110
+
111
+ ---
112
+
113
+
114
+ ## **Gemma2-2b-GEC-v1: Дообученная модель для исправления грамматических ошибок на русском языке**
115
+
116
+ Модель дообучена на `unsloth/gemma-2-2b-bnb-4bit` на датасете `p1746-lingua/ru-gec-v1`. Модель предназначена для **исправления грамматических ошибок (GEC)** в русских текстах, она генерирует исправленные версии входных предложений с грамматическими, орфографическими и пунктуационными ошибками.
117
+
118
+ ---
119
+
120
+ ### **Детали модели**
121
+
122
+ * **Базовая модель:** `google/gemma-2-2b` (4-битная квантизированная версия от Unsloth)
123
+ * **Задача:** Генерация текста для исправления ошибок.
124
+ * **Данные для обучения:** Датасет `p1746-lingua/ru-gec-v1`, состоящий приблизительно из 707 000 пар предложений (с ошибкой → исправленное).
125
+ * **Максимальная длина последовательности:** 512 токенов.
126
+ * **Фреймворк:** PyTorch, Hugging Face Transformers с ускоренным обучением через Unsloth.
127
+
128
+ #### **Гиперпараметры:**
129
+
130
+ | Параметр | Значение |
131
+ | :--- | :--- |
132
+ | **Размер батча** | 32 |
133
+ | **Скорость обучения** | 1e-5 |
134
+ | **Всего эпох** | 10 000 |
135
+ | **Шагов warmup** | 100 |
136
+ | **Оптимизатор** | adamw_bnb_8bit |
137
+
138
+ ---
139
+
140
+ ### **Как использовать**
141
+
142
+ Модель работает стандартным способом. Ниже приведены примеры использования пайплайна Hugging Face `transformers`.
143
+
144
+ #### **С помощью Transformers**
145
+
146
+ ```python
147
+ from transformers import AutoModelForCausalLM, AutoTokenizer
148
+ from peft import PeftModel
149
+ import torch
150
+
151
+ peft_model_id = "p1746-lingua/gemma2-2b-gec-v1"
152
+ base_model_id = "unsloth/gemma-2-2b-bnb-4bit"
153
+
154
+ tokenizer = AutoTokenizer.from_pretrained(peft_model_id)
155
+
156
+ # Load base model
157
+ base_model = AutoModelForCausalLM.from_pretrained(
158
+ base_model_id,
159
+ torch_dtype=torch.float16,
160
+ device_map="auto"
161
+ )
162
+
163
+ model = PeftModel.from_pretrained(base_model, peft_model_id)
164
+
165
+ examples = [
166
+ "Я будуш делать задание завтра.",
167
+ "Она купила три яблоки.",
168
+ "Это моя лучшая друзья.",
169
+ "Мы ходили в кино вчерашний день."
170
+ ]
171
+
172
+ def correct_sentence(sentence, max_length=200):
173
+ prompt = f"Correct this Russian sentence: {sentence}\nCorrected:"
174
+
175
+ inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
176
+
177
+ with torch.no_grad():
178
+ outputs = model.generate(
179
+ **inputs,
180
+ max_new_tokens=max_length,
181
+ do_sample=False,
182
+ num_return_sequences=1,
183
+ pad_token_id=tokenizer.pad_token_id,
184
+ eos_token_id=tokenizer.eos_token_id,
185
+ )
186
+
187
+ generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
188
+
189
+ if "Corrected:" in generated_text:
190
+ corrected = generated_text.split("Corrected:")[1].strip()
191
+ else:
192
+ corrected = generated_text.replace(prompt, "").strip()
193
+
194
+ return corrected
195
+
196
+ for sentence in examples:
197
+ corrected = correct_sentence(sentence)
198
+ print(f"Input: {sentence}")
199
+ print(f"Output: {corrected}\n")
200
+
201
+ # Я буду делать задание завтра.
202
+ # Она купила три яблока.
203
+ # Это моя лучшая подруга.
204
+ # Мы ходили в кино вчера.
205
+ ```
206
+
207
+ **Дисклеймер:** эта модель является инструментом для помощи в написании текстов. Ее вывод должен проверяться человеком, особенно в критически важных областях.