Views
No views yet
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.google/gemma-2-2b (via Unsloth's 4-bit quantized version)p1746-lingua/ru-gec-v1 dataset, consisting of approximately 707,000 sentence pairs (erroneous → corrected).| Parameter | Value |
|---|---|
| Batch Size | 32 |
| Learning Rate | 1e-5 |
| Total Epochs | 10,000 |
| Warmup Steps | 100 |
| Optimizer | adamw_bnb_8bit |
transformers pipeline and direct inference.1from transformers import AutoModelForCausalLM, AutoTokenizer
2from peft import PeftModel
3import torch
4
5peft_model_id = "p1746-lingua/gemma2-2b-gec-v1"
6base_model_id = "unsloth/gemma-2-2b-bnb-4bit"
7
8tokenizer = AutoTokenizer.from_pretrained(peft_model_id)
9
10# Load base model
11base_model = AutoModelForCausalLM.from_pretrained(
12 base_model_id,
13 torch_dtype=torch.float16,
14 device_map="auto"
15)
16
17model = PeftModel.from_pretrained(base_model, peft_model_id)
18
19examples = [
20 "Я будуш делать задание завтра.",
21 "Она купила три яблоки.",
22 "Это моя лучшая друзья.",
23 "Мы ходили в кино вчерашний день."
24]
25
26def correct_sentence(sentence, max_length=200):
27 prompt = f"Correct this Russian sentence: {sentence}\nCorrected:"
28
29 inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
30
31 with torch.no_grad():
32 outputs = model.generate(
33 **inputs,
34 max_new_tokens=max_length,
35 do_sample=False,
36 num_return_sequences=1,
37 pad_token_id=tokenizer.pad_token_id,
38 eos_token_id=tokenizer.eos_token_id,
39 )
40
41 generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
42
43 if "Corrected:" in generated_text:
44 corrected = generated_text.split("Corrected:")[1].strip()
45 else:
46 corrected = generated_text.replace(prompt, "").strip()
47
48 return corrected
49
50for sentence in examples:
51 corrected = correct_sentence(sentence)
52 print(f"Input: {sentence}")
53 print(f"Output: {corrected}\n")
54
55# Я буду делать задание завтра.
56# Она купила три яблока.
57# Это моя лучшая подруга.
58# Мы ходили в кино вчера.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 пар предложений (с ошибкой → исправленное).| Параметр | Значение |
|---|---|
| Размер батча | 32 |
| Скорость обучения | 1e-5 |
| Всего эпох | 10 000 |
| Шагов warmup | 100 |
| Оптимизатор | adamw_bnb_8bit |
transformers.1from transformers import AutoModelForCausalLM, AutoTokenizer
2from peft import PeftModel
3import torch
4
5peft_model_id = "p1746-lingua/gemma2-2b-gec-v1"
6base_model_id = "unsloth/gemma-2-2b-bnb-4bit"
7
8tokenizer = AutoTokenizer.from_pretrained(peft_model_id)
9
10# Load base model
11base_model = AutoModelForCausalLM.from_pretrained(
12 base_model_id,
13 torch_dtype=torch.float16,
14 device_map="auto"
15)
16
17model = PeftModel.from_pretrained(base_model, peft_model_id)
18
19examples = [
20 "Я будуш делать задание завтра.",
21 "Она купила три яблоки.",
22 "Это моя лучшая друзья.",
23 "Мы ходили в кино вчерашний день."
24]
25
26def correct_sentence(sentence, max_length=200):
27 prompt = f"Correct this Russian sentence: {sentence}\nCorrected:"
28
29 inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
30
31 with torch.no_grad():
32 outputs = model.generate(
33 **inputs,
34 max_new_tokens=max_length,
35 do_sample=False,
36 num_return_sequences=1,
37 pad_token_id=tokenizer.pad_token_id,
38 eos_token_id=tokenizer.eos_token_id,
39 )
40
41 generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
42
43 if "Corrected:" in generated_text:
44 corrected = generated_text.split("Corrected:")[1].strip()
45 else:
46 corrected = generated_text.replace(prompt, "").strip()
47
48 return corrected
49
50for sentence in examples:
51 corrected = correct_sentence(sentence)
52 print(f"Input: {sentence}")
53 print(f"Output: {corrected}\n")
54
55# Я буду делать задание завтра.
56# Она купила три яблока.
57# Это моя лучшая подруга.
58# Мы ходили в кино вчера.