Bu model, facebook/xglm-564M
temel alınarak Türkçe diline devam ön eğitimi yapılmış bir metin üretim modelidir. Türkçe Wikipedia verileri üzerinde eğitilmiştir ve Türkçe metin üretiminde daha iyi performans göstermek için optimize edilmiştir.
Model Detayları
Model Açıklaması
Bu model, Türkçe diline özgü metin üretimi için geliştirilmiş bir transformers modelidir. Türkçe Wikipedia verileriyle eğitilmiş olup, doğal dil işleme (NLP) задачи için kullanılabilir.
- Geliştiren: Emre Taşar
- Model Türü: Dil Modeli (Causal Language Model)
- Dil(ler): Türkçe
- Lisans: Apache 2.0 (XGLM-564M temel modelinin lisansı)
- İnce Ayar Yapılan Model:
facebook/xglm-564M
- Model Kaynakları:
- Depo: https://huggingface.co/emre/xglm-564M-turkish
- Makale: arXiv:1910.09700 (XGLM'nin orijinal makalesi)
Kullanım
Direkt Kullanım
Bu model, Türkçe metin üretimi için kullanılabilir. Aşağıdaki kod ile modele başlayabilirsiniz:
from transformers import AutoTokenizer, AutoModelForCausalLM
#Modeli ve tokenizer'ı yükle
tokenizer = AutoTokenizer.from_pretrained("emre/xglm-564M-turkish")
model = AutoModelForCausalLM.from_pretrained("emre/xglm-564M-turkish")
#Metin üretimi
prompt = "Bir varmış, bir yokmuş."
inputs = tokenizer(prompt, return_tensors="pt")
outputs = model.generate(
**inputs,
max_length=100,
do_sample=True,
top_p=0.95,
top_k=50,
temperature=0.7
)
print(tokenizer.decode(outputs[0], skip_special_tokens=True))
Alt Kullanım (Downstream Use)
Model, Türkçe doğal dil işleme görevleri (örneğin, metin tamamlama, sohbet sistemleri) için ince ayar yapılabilir.
Kapsam Dışı Kullanım
Model, Wikipedia verileriyle eğitildiği için yaratıcı yazım (örneğin masallar) veya çok özel alanlar (örneğin tıbbi metinler) için sınırlı performans gösterebilir.
Bias, Riskler ve Sınırlamalar
Model, Türkçe Wikipedia verileriyle eğitildiği için bu verilerdeki olası önyargıları yansıtabilir. Ayrıca, eğitim sonrası perplexity değeri (51.81) nispeten yüksektir, bu da modelin Türkçe dilini tam anlamıyla öğrenmediğini gösterir.
Öneriler
Kullanıcılar, modelin sınırlamalarını ve potansiyel önyargılarını dikkate almalıdır. Daha iyi performans için ek veri veya epoch ile ince ayar önerilir.
Eğitim Detayları
Eğitim Verisi
Model, Türkçe Wikipedia'dan alınan 20.000 makale üzerinde eğitilmiştir. Doğrulama için 2.000 makale kullanılmıştır.
Eğitim Süreci
Ön İşleme
Veriler, max_length=512
ile tokenizasyon işleminden geçirilmiş ve gereksiz sütunlar ("title", "id", "paragraph") kaldırılmıştır.
Eğitim Hiperparametreleri
- Eğitim Rejimi: FP16 (mixed precision)
- Batch Size: 4 (eğitim ve değerlendirme için)
- Epoch Sayısı: 2
- Learning Rate: 1e-5
- Scheduler: Yok
- Warmup Steps: Yok
- Optimizer: AdamW (varsayılan)
Hızlar, Boyutlar, Süreler
- Eğitim Süresi: 2 saat 10 dakika
- Donanım: Google Colab T4 GPU
- Adım Sayısı: 10.000
Değerlendirme
Test Verisi, Faktörler ve Metrikler
Test Verisi
Doğrulama için Türkçe Wikipedia'dan rastgele seçilen 2.000 makale kullanılmıştır. Perplexity testi için ise 100 örneklik bir alt küme alınmıştır.
Faktörler
- Modelin Türkçe diline adaptasyonu
- Metin üretiminde akıcılık ve anlam bütünlüğü
Metrikler
- Perplexity: Modelin tahmin doğruluğunu ölçer (düşük değer daha iyidir).
- Qualitative Çıktı Analizi: Prompt bazlı metin üretimi.
Sonuçlar
- Perplexity: 51.81 (Eğitim sonrası)
- Eğitim Kayıpları:
- Epoch 1: Training Loss: 3.5180, Validation Loss: 3.4951
- Epoch 2: Training Loss: 3.4280, Validation Loss: 3.4797
- Örnek Çıktılar:
- Prompt: "Bir varmış, bir yokmuş."
- Eğitim Öncesi: "Bir varmış, bir yokmuş."
- Eğitim Sonrası: "Bir varmış, bir yokmuş. Ama ne var ne yokmuş. Bu iki varış arasında çok değişkenlik vardır..."
- Not: Eğitim sonrası çıktılar daha uzun, ancak bazen anlamsız veya tekrarlayıcı olabiliyor.
- Prompt: "Bir varmış, bir yokmuş."
Özet
Model, Türkçe Wikipedia verileriyle temel bir adaptasyon sağlamış, ancak perplexity değeri (51.81) ve çıktılar, daha fazla eğitim veya veri gerektiğini gösteriyor.
Çevresel Etki
Karbon emisyonları, Lacoste et al. (2019) tarafından sunulan Machine Learning Impact calculator kullanılarak tahmin edilebilir.
- Donanım Türü: Google Colab T4 GPU
- Kullanılan Saat: 2 saat 10 dakika
- Bulut Sağlayıcı: Google Cloud
- Hesaplama Bölgesi: Bilinmiyor
- Karbon Emisyonu: Tahmin edilmedi (hesaplama için ek bilgi gerekli)
Teknik Özellikler
Model Mimarisi ve Amaç
- Mimari: XGLM (Transformer tabanlı dil modeli)
- Amaç: Türkçe metin üretimi
- Parametre Sayısı: 564 milyon
- Tensor Türü: F32
Hesaplama Altyapısı
- Donanım: Google Colab T4 GPU
- Yazılım: Transformers (Hugging Face), PyTorch
Citation
BibTeX (XGLM makalesi): @article{lin2021few, title={Few-shot Learning with Multilingual Language Models}, author={Lin, Xi Victoria and Mihalcea, Rada and others}, journal={arXiv preprint arXiv:1910.09700}, year={2019} }
Model Kartı Yazarları
- Emre Taşar
Model Kartı İletişim
Sorularınız için Hugging Face profilim üzerinden bana ulaşabilirsiniz.
Daha Fazla Bilgi
Modelin performansını artırmak için daha fazla veri, epoch veya LoRA gibi yöntemler önerilir.
Eğitim için kullanılan kod örneği:
# Gerekli kütüphaneleri yükle
!pip install transformers datasets -q
# Gerekli kütüphaneleri içe aktar
from transformers import AutoTokenizer, AutoModelForCausalLM, TrainingArguments, Trainer, DataCollatorForLanguageModeling
from datasets import load_dataset
import torch
# Model ve tokenizer tanımlamaları
model_name = "facebook/xglm-564M"
tokenizer = AutoTokenizer.from_pretrained(model_name)
original_model = AutoModelForCausalLM.from_pretrained(model_name) # Eğitim öncesi model
model = AutoModelForCausalLM.from_pretrained(model_name) # Eğitim için kullanılacak model
# Türkçe Wikipedia veri setini yükle
dataset = load_dataset("Alaeddin/wikipedia-turkish", split="train[:20000]") # İlk 20.000 makale
val_dataset = load_dataset("Alaeddin/wikipedia-turkish", split="train[20000:22000]") # Doğrulama için 2.000 makale
# Tokenization fonksiyonu
def tokenize_function(examples):
return tokenizer(examples["paragraph"], truncation=True, max_length=512, padding="max_length")
# Veri setini tokenize et
train_dataset = dataset.map(tokenize_function, batched=True, remove_columns=["title", "id", "paragraph"])
val_dataset = val_dataset.map(tokenize_function, batched=True, remove_columns=["title", "id", "paragraph"])
# Veri kollektörünü tanımla
data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=False)
# Eğitim argümanlarını ayarla
training_args = TrainingArguments(
output_dir="/content/model_save",
per_device_train_batch_size=4,
per_device_eval_batch_size=4,
num_train_epochs=2,
learning_rate=1e-5,
fp16=True, # Bellek kullanımını optimize et
eval_strategy="epoch",
save_strategy="epoch",
load_best_model_at_end=True,
remove_unused_columns=False,
logging_steps=500, # Daha sık log için (isteğe bağlı)
report_to="wandb", # Wandb kullanmak istemiyorsanız bunu kaldırabilirsiniz
)
# Trainer ile eğitimi başlat
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=val_dataset,
data_collator=data_collator,
)
# Eğitimi gerçekleştir
trainer.train()
# Eğitilmiş modeli kaydet
trainer.save_model("/content/final_model")
tokenizer.save_pretrained("/content/final_model")
# Metin üretimi fonksiyonu (iyileştirilmiş)
def generate_text(prompt, model, tokenizer, max_length=100):
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
outputs = model.generate(
**inputs,
max_length=max_length,
num_return_sequences=1,
do_sample=True,
top_p=0.95,
top_k=50, # Daha iyi kelime seçimi için
temperature=0.7, # Daha tutarlı metin için
)
generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
return generated_text
# Türkçe performansını test et
prompt = "Bir varmış, bir yokmuş."
print("Eğitim Öncesi Model Çıktısı:", generate_text(prompt, original_model, tokenizer))
print("Eğitim Sonrası Model Çıktısı:", generate_text(prompt, model, tokenizer))
"""
- Downloads last month
- 2
Model tree for emre/xglm-564M-turkish
Base model
facebook/xglm-564M