Transformers documentation

Hızlı Başlangıç

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Hızlı Başlangıç

Transformers, herkesin transformer modelleriyle öğrenmeye veya geliştirme yapmaya başlayabilmesi için hızlı ve kullanımı kolay olacak şekilde tasarlanmıştır.

Kullanıcıya yönelik soyutlamaların sayısı, bir modelin örneklenmesi için yalnızca üç sınıfa ve çıkarım veya eğitim için iki API'ye sınırlıdır. Bu hızlı başlangıç, Transformers'ın ana özelliklerini tanıtıyor ve şunları nasıl yapacağınızı gösteriyor:

  • önceden eğitilmiş bir model yükleyin
  • Pipeline ile çıkarım çalıştırın
  • Trainer ile bir model ince ayarı yapın

Kurulum

Başlamak için, bir Hugging Face hesabı oluştirmanızı öneririz. Bir hesap, Hugging Face Hub'da sürüm kontrolü altındaki modelleri, veri kümelerini ve Spaces'leri barındırmanıza ve bunlara erişmenizi sağlar; Hub, keşif ve geliştirme için işbirlikçi bir platformdur.

User Access Token oluşturun ve hesabınıza giriş yapın.

notebook
CLI

Giriş yapmanız istendiğinde, Kullanıcı Erişim Token'ınızı notebook_login içine yapıştırın.

from huggingface_hub import notebook_login

notebook_login()

PyTorch'u yükleyin.

# remove ! if installing from the CLI
!pip install torch

Ardından, veri setlerine ve görme modellerine erişmek, eğitimi değerlendirmek ve büyük modeller için eğitimi optimize etmek amacıyla Hugging Face ekosisteminden bazı ek kütüphanelerle birlikte güncel bir Transformers sürümünü yükleyin.

# remove ! if installing from the CLI
!pip install -U transformers datasets evaluate accelerate timm

Ajan becerileri

Hugging Face Skills, kodlama ajanınızın Transformers ile nasıl çalışacağını öğretir. Kendi eğitim script'inizi yazmak yerine, ajanınızdan bir görme modelini ince ayar yapmasını isteyin ve skill'in onu yönlendirmesine izin verin.

Claude Code
Codex
/plugin marketplace add huggingface/skills
/plugin install hf-cli@huggingface/skills

Cursor ve Gemini gibi daha fazla desteklenen platform için Yükleme kılavuzuna bakın.

Bir beceri yüklendikten sonra, kodlama ajanınıza verdiğiniz talimatlara dahil edin.

Use the HF Trainer skill to fine-tune RT-DETRv2 on [Lekim89/sportsmot](https://huggingface.co/datasets/Lekim89/sportsmot) for basketball player tracking.

Ön eğitilmiş modeller

Her önceden eğitilmiş model, üç temel sınıftan devralır.

SınıfAçıklama
PreTrainedConfigDikkat başlarının sayısı veya sözlük boyutu gibi bir modelin özelliklerini belirleyen dosya.
PreTrainedModelYapılandırma dosyasındaki model öznitelikleri tarafından tanımlanan bir model (veya mimari). Ön eğitilmiş bir model yalnızca ham gizli durumları (raw hidden states) döndürür. Belirli bir görev için, ham gizli durumları anlamlı bir sonuca dönüştürmek üzere uygun model başlığını kullanın (örneğin, LlamaModel ile LlamaForCausalLM).
ÖnişleyiciHam girdileri (metin, görüntü, ses, çok modlu) modele sayısal girdilere dönüştürmek için bir sınıf. Örneğin, PreTrainedTokenizer metni tensörlere dönüştürür ve ImageProcessingMixin pikselleri tensörlere dönüştürür.

Model ve ön işleyicileri yüklemek için AutoClass API'sini kullanmanızı öneririz; çünkü bu API, önceden eğitilmiş ağırlıkların ve yapılandırma dosyasının adını veya yolunu temel alarak her görev ve makine öğrenimi çerçevesi için uygun mimariyi otomatik olarak çıkarır.

Model ve ön işleyici sınıflarına Hub'dan ağırlıkları ve yapılandırma dosyasını yüklemek için from_pretrained() kullanın.

Bir model yüklediğinizde, modelin en iyi şekilde yüklenmesini sağlamak için aşağıdaki parametreleri yapılandırın.

  • device_map="auto", model ağırlıklarını en hızlı cihazınızdan başlayarak otomatik olarak tahsis eder.
  • dtype="auto", model ağırlıklarını doğrudan saklandıkları veri türünde başlatır; bu, ağırlıkların iki kez yüklenmesini önlemeye yardımcı olabilir (PyTorch varsayılan olarak ağırlıkları torch.float32 olarak yükler).
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf", dtype="auto", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")

Metni tokenizer ile işleyin ve PyTorch tensörlerini döndürün. Modelin bu girdileri işleyebilmesi için çıkarım (inference) çalıştırılmadan önce, tokenize edilmiş girdileri modelin bulunduğu cihazla aynı cihaza taşıyın.

model_inputs = tokenizer(["The secret to baking a good cake is "], return_tensors="pt").to(model.device)

Model artık çıkarım veya eğitim için hazır.

Çıkarım için, tokenize edilmiş girdileri metin üretmek üzere generate() fonksiyonuna iletin. Token kimliklerini batch_decode() ile metne geri dönüştürün.

generated_ids = model.generate(**model_inputs, max_length=30)
tokenizer.batch_decode(generated_ids)[0]
'<s> The secret to baking a good cake is 100% in the preparation. There are so many recipes out there,'

Modeli ince ayar yapmayı öğrenmek için Trainer bölümüne atlayın.

Pipeline

Pipeline sınıfı, önceden eğitilmiş bir modelle çıkarım yapmanın en pratik yoludur. Metin üretimi, görüntü segmentasyonu, otomatik konuşma tanıma, belge soru-cevap gibi birçok görevi destekler.

Mevcut görevlerin tam listesi için Pipeline API referansına bakın.

Bir Pipeline nesnesi oluşturun ve bir görev seçin. Varsayılan olarak Pipeline, verilen görev için varsayılan bir önceden eğitilmiş modeli indirir ve önbelleğe alır. Belirli bir model seçmek için model adını model parametresine iletin.

metin üretimi
görsel segmentasyonu
otomatik konuşma tanıma

Mevcut bir hızlandırıcıyı çıkarım için otomatik olarak algılamak için Accelerator kullanın.

from transformers import pipeline
from accelerate import Accelerator

device = Accelerator().device

pipe = pipeline("text-generation", model="meta-llama/Llama-2-7b-hf", device=device)

Daha fazla metin üretmek için bazı başlangıç metniyle Pipeline'ı tetikleyin.

pipe("The secret to baking a good cake is ", max_length=50)
[{'generated_text': 'The secret to baking a good cake is 100% in the batter. The secret to a great cake is the icing.\nThis is why we’ve created the best buttercream frosting reci'}]

Trainer

Trainer, PyTorch modelleri için eksiksiz bir eğitim ve değerlendirme döngüsüdür. Manuel olarak bir eğitim döngüsü yazarken genellikle karşılaşılan çok fazla şablon kodunu soyutlayarak daha hızlı eğitim başlamanızı ve eğitim tasarım tercihlerine odaklanmanızı sağlar. Veri setinden veri topları oluşturmak için yalnızca bir model, veri seti, bir ön işleyici ve bir veri toplayıcıya ihtiyacınız vardır.

Eğitim sürecini özelleştirmek için TrainingArguments sınıfını kullanın. Bu sınıf, eğitim, değerlendirme ve daha fazlası için birçok seçenek sunar. Eğitim ihtiyaçlarınızı karşılamak için batch size, learning rate, mixed precision, torch.compile gibi eğitim hiperparametreleri ve özellikleriyle deneyler yapabilirsiniz. Ayrıca, hızlı bir baz çizgisi oluşturmak için varsayılan eğitim parametrelerini de kullanabilirsiniz.

Eğitim için bir model, tokenizer ve veri seti yükleyin.

from transformers import AutoModelForSequenceClassification, AutoTokenizer
from datasets import load_dataset

model = AutoModelForSequenceClassification.from_pretrained("distilbert/distilbert-base-uncased")
tokenizer = AutoTokenizer.from_pretrained("distilbert/distilbert-base-uncased")
dataset = load_dataset("cornell-movie-review-data/rotten_tomatoes")

Metni belirteçlere ayıran ve PyTorch tensörlerine dönüştüren bir fonksiyon oluşturun. Bu fonksiyonu map yöntemiyle tüm veri setine uygulayın.

def tokenize_dataset(dataset):
    return tokenizer(dataset["text"])
dataset = dataset.map(tokenize_dataset, batched=True)

Veri toplama birimini (data collator) yükleyerek veri toplamları (batch) oluşturun ve tokenizasyonu ona iletin.

from transformers import DataCollatorWithPadding

data_collator = DataCollatorWithPadding(tokenizer=tokenizer)

Ardından, eğitim özelliklerini ve hiperparametrelerini içerecek şekilde TrainingArguments yapılandırmasını yapın.

from transformers import TrainingArguments

training_args = TrainingArguments(
    output_dir="distilbert-rotten-tomatoes",
    learning_rate=2e-5,
    per_device_train_batch_size=8,
    per_device_eval_batch_size=8,
    num_train_epochs=2,
    push_to_hub=True,
)

Son olarak, bu ayrı bileşenlerin tümünü Trainer sınıfına iletin ve başlatmak için train() fonksiyonunu çağırın.

from transformers import Trainer

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=dataset["train"],
    eval_dataset=dataset["test"],
    processing_class=tokenizer,
    data_collator=data_collator,
)

trainer.train()

Modelinizi ve tokenizer'ınızı push_to_hub() ile Hub'a paylaşın.

trainer.push_to_hub()

Tebrikler, Transformers ile ilk modelinizi eğittiniz!

Sonraki adımlar

Artık Transformers'ı ve sunduğu olanakları daha iyi anladığınıza göre, en çok ilginizi çeken konuları keşfetmeye ve öğrenmeye devam etme zamanı.

  • Temel sınıflar: Yapılandırma, model ve işlemci sınıfları hakkında daha fazla bilgi edinin. Bu, modelleri nasıl oluşturup özelleştireceğinizi, farklı girdi türlerini (ses, görüntü, çok modlu) nasıl ön işleyeceğinizi ve modelinizi nasıl paylaşacağınızı anlamanıza yardımcı olacaktır.
  • Çıkarım: Pipeline bileşenini daha ayrıntılı inceleyin; LLM'lerle çıkarım ve sohbet, ajanlar ve çıkarımı makine öğrenimi çerçeveniz ve donanımınızla nasıl optimize edeceğinizi öğrenin.
  • Eğitim: Trainer'ı daha ayrıntılı inceleyin; ayrıca dağıtık eğitimi ve belirli donanımlarda eğitimi optimize etmeyi öğrenin.
  • Kantizasyon: Ağırlıkları daha az bit ile temsil ederek bellek ve depolama gereksinimlerini azaltır ve çıkarımı hızlandırır.
  • Kaynaklar: Belirli bir görev için bir modeli eğitmek ve çıkarım yapmak için uçtan uca tarifler mi arıyorsunuz? Görev tariflerine göz atın!
Update on GitHub