Cosmos-Math-Gpt2 / README.md
OnurAkyar's picture
Update README.md
8cd81ba verified
---
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}")