--- library_name: transformers tags: - turkish - continue-pre-training license: apache-2.0 datasets: - Alaeddin/wikipedia-turkish language: - tr metrics: - perplexity base_model: - facebook/xglm-564M pipeline_tag: text-generation --- 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](https://huggingface.co/emre/xglm-564M-turkish) - **Makale:** [arXiv:1910.09700](https://arxiv.org/abs/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: ```python 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. #### Ö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](https://huggingface.co/emre) ü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: ```python # 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)) ``` """