Gemma2-2b-GEC-v1: A Fine-Tuned Model for Russian Grammatical Error Correction
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.
Model Details & Training
- Base Model:
google/gemma-2-2b(via Unsloth's 4-bit quantized version) - Task: Sequence-to-sequence text generation for error correction.
- Training Data:
p1746-lingua/ru-gec-v1dataset, consisting of approximately 707,000 sentence pairs (erroneous → corrected). - Max Sequence Length: 512 tokens.
- Framework: PyTorch, Hugging Face Transformers, with accelerated training using Unsloth.
Hyperparameters:
| Parameter | Value |
|---|---|
| Batch Size | 32 |
| Learning Rate | 1e-5 |
| Total Epochs | 10,000 |
| Warmup Steps | 100 |
| Optimizer | adamw_bnb_8bit |
How to Use
The model operates in a standard text-to-text way. Here are examples using the Hugging Face transformers pipeline and direct inference.
Inference with Transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
peft_model_id = "p1746-lingua/gemma2-2b-gec-v1"
base_model_id = "unsloth/gemma-2-2b-bnb-4bit"
tokenizer = AutoTokenizer.from_pretrained(peft_model_id)
# Load base model
base_model = AutoModelForCausalLM.from_pretrained(
base_model_id,
torch_dtype=torch.float16,
device_map="auto"
)
model = PeftModel.from_pretrained(base_model, peft_model_id)
examples = [
"Я будуш делать задание завтра.",
"Она купила три яблоки.",
"Это моя лучшая друзья.",
"Мы ходили в кино вчерашний день."
]
def correct_sentence(sentence, max_length=200):
prompt = f"Correct this Russian sentence: {sentence}\nCorrected:"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=max_length,
do_sample=False,
num_return_sequences=1,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id,
)
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
if "Corrected:" in generated_text:
corrected = generated_text.split("Corrected:")[1].strip()
else:
corrected = generated_text.replace(prompt, "").strip()
return corrected
for sentence in examples:
corrected = correct_sentence(sentence)
print(f"Input: {sentence}")
print(f"Output: {corrected}\n")
# Я буду делать задание завтра.
# Она купила три яблока.
# Это моя лучшая подруга.
# Мы ходили в кино вчера.
Disclaimer: This model is a tool to assist with writing. Its output should be reviewed by a human, especially in critical or formal contexts.
Gemma2-2b-GEC-v1: Дообученная модель для исправления грамматических ошибок на русском языке
Модель дообучена на unsloth/gemma-2-2b-bnb-4bit на датасете p1746-lingua/ru-gec-v1. Модель предназначена для исправления грамматических ошибок (GEC) в русских текстах, она генерирует исправленные версии входных предложений с грамматическими, орфографическими и пунктуационными ошибками.
Детали модели
- Базовая модель:
google/gemma-2-2b(4-битная квантизированная версия от Unsloth) - Задача: Генерация текста для исправления ошибок.
- Данные для обучения: Датасет
p1746-lingua/ru-gec-v1, состоящий приблизительно из 707 000 пар предложений (с ошибкой → исправленное). - Максимальная длина последовательности: 512 токенов.
- Фреймворк: PyTorch, Hugging Face Transformers с ускоренным обучением через Unsloth.
Гиперпараметры:
| Параметр | Значение |
|---|---|
| Размер батча | 32 |
| Скорость обучения | 1e-5 |
| Всего эпох | 10 000 |
| Шагов warmup | 100 |
| Оптимизатор | adamw_bnb_8bit |
Как использовать
Модель работает стандартным способом. Ниже приведены примеры использования пайплайна Hugging Face transformers.
С помощью Transformers
from transformers import AutoModelForCausalLM, AutoTokenizer
from peft import PeftModel
import torch
peft_model_id = "p1746-lingua/gemma2-2b-gec-v1"
base_model_id = "unsloth/gemma-2-2b-bnb-4bit"
tokenizer = AutoTokenizer.from_pretrained(peft_model_id)
# Load base model
base_model = AutoModelForCausalLM.from_pretrained(
base_model_id,
torch_dtype=torch.float16,
device_map="auto"
)
model = PeftModel.from_pretrained(base_model, peft_model_id)
examples = [
"Я будуш делать задание завтра.",
"Она купила три яблоки.",
"Это моя лучшая друзья.",
"Мы ходили в кино вчерашний день."
]
def correct_sentence(sentence, max_length=200):
prompt = f"Correct this Russian sentence: {sentence}\nCorrected:"
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
outputs = model.generate(
**inputs,
max_new_tokens=max_length,
do_sample=False,
num_return_sequences=1,
pad_token_id=tokenizer.pad_token_id,
eos_token_id=tokenizer.eos_token_id,
)
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
if "Corrected:" in generated_text:
corrected = generated_text.split("Corrected:")[1].strip()
else:
corrected = generated_text.replace(prompt, "").strip()
return corrected
for sentence in examples:
corrected = correct_sentence(sentence)
print(f"Input: {sentence}")
print(f"Output: {corrected}\n")
# Я буду делать задание завтра.
# Она купила три яблока.
# Это моя лучшая подруга.
# Мы ходили в кино вчера.
Дисклеймер: эта модель является инструментом для помощи в написании текстов. Ее вывод должен проверяться человеком, особенно в критически важных областях.