File size: 2,515 Bytes
0e0bb7a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8cd81ba
0e0bb7a
 
 
 
 
 
8cd81ba
0e0bb7a
 
 
 
8cd81ba
0e0bb7a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
---
language:
- tr
license: mit
library_name: transformers
tags:
- mathematics
- gsm8k
- turkish
- text-generation
- sft
- dpo
base_model: ytu-ce-cosmos/turkish-gpt2-medium
datasets:
- malhajar/gsm8k-tr
---

# Cosmos-Math-Gpt2 (Türkçe Matematik Modeli)

Bu model, Türkçe matematik problemlerini adım adım mantık yürüterek (Chain of Thought) çözmek için geliştirilmiştir. Model ilk olarak next token prediction ile pre-training yapılmıştır.
2.adım olarak Sft uygulanmış ve son olarak Dpo algoritması uygulanarak fine-tuning işlemleri yapılmıştır.

**ytu-ce-cosmos/turkish-gpt2-medium** taban modeli üzerine inşa edilmiş olup, önce **SFT (Supervised Fine-Tuning)** ardından **DPO (Direct Preference Optimization)** yöntemleri ile **GSM8K-TR** veri seti üzerinde eğitilmiştir.

##  Model Yetenekleri
- İlkokul ve ortaokul seviyesindeki matematik problemlerini çözer.
- Problemi parçalara ayırır ve adım adım anlatır.
- Sonucu `#### [Cevap]` formatında verir.

##  Nasıl Kullanılır?

Modeli kullanmak için aşağıdaki Python kodunu çalıştırabilirsiniz. Model **"### Soru:"** ve **"### Cevap:"** formatına duyarlıdır.

```python
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch

# 1. Modeli Yükle
model_name = "KullaniciAdin/Cosmos-TR-Math-v1"  # Burayı kendi kullanıcı adınla değiştir
device = "cuda" if torch.cuda.is_available() else "cpu"

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    device_map="auto"
)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# 2. Tahmin Fonksiyonu
def solve_math_problem(question):
    # Prompt formatı eğitimdeki gibi olmalı
    prompt = f"### Soru: {question}\n### Cevap:"
    
    inputs = tokenizer(prompt, return_tensors="pt").to(device)
    
    with torch.no_grad():
        outputs = model.generate(
            **inputs,
            max_new_tokens=256,      # Cevap uzunluğu
            do_sample=False,         # Deterministik (Daha tutarlı cevaplar için)
            temperature=0.0,
            pad_token_id=tokenizer.eos_token_id
        )
    
    # Sadece cevabı al
    full_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
    return full_text.split("### Cevap:")[-1].strip()

# 3. Örnek Kullanım
soru = "Ali'nin 50 lirası var. Tanesi 5 lira olan kalemlerden 3 tane alırsa geriye kaç lirası kalır?"
cevap = solve_math_problem(soru)

print(f"SORU: {soru}")
print("-" * 30)
print(f"CEVAP:\n{cevap}")