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

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}")