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-v1 dataset, 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")

# Я буду делать задание завтра.
# Она купила три яблока.
# Это моя лучшая подруга.
# Мы ходили в кино вчера.

Дисклеймер: эта модель является инструментом для помощи в написании текстов. Ее вывод должен проверяться человеком, особенно в критически важных областях.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for p1746-lingua/gemma2-2b-gec-v1

Base model

google/gemma-2-2b
Finetuned
(234)
this model

Dataset used to train p1746-lingua/gemma2-2b-gec-v1