Transformers documentation
Hızlı Başlangıç
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.
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()huggingface_hub[cli] paketinin yüklendiğinden emin olun ve aşağıdaki komutu çalıştırın. Giriş yapmak için istendiğinde Kullanıcı Erişim Belirtecinizi yapıştırın.
hf auth login
PyTorch'u yükleyin.
# remove ! if installing from the CLI
!pip install torchArdı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 timmAjan 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.
/plugin marketplace add huggingface/skills /plugin install hf-cli@huggingface/skills
codex plugin marketplace add huggingface/skills
Ardından Codex'te /plugins komutunu çalıştırın ve huggingface/skills deposundan bir beceri yükleyin.
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ıf | Açıklama |
|---|---|
| PreTrainedConfig | Dikkat başlarının sayısı veya sözlük boyutu gibi bir modelin özelliklerini belirleyen dosya. |
| PreTrainedModel | Yapı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şleyici | Ham 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.float32olarak 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.
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'}]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
pipeline = pipeline("image-segmentation", model="facebook/detr-resnet-50-panoptic", device=device)Bir görüntüyü - görüntünün URL'si veya yerel yolu - Pipeline'a iletin.

segments = pipeline("https://huggingface.co/datasets/Narsil/image_dummy/raw/main/parrots.png")
segments[0]["label"]
'bird'
segments[1]["label"]
'bird'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
pipeline = pipeline("automatic-speech-recognition", model="openai/whisper-large-v3", device=device)Bir ses dosyasını Pipeline nesnesine iletin.
pipeline("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/1.flac")
{'text': ' He hoped there would be stew for dinner, turnips and carrots and bruised potatoes and fat mutton pieces to be ladled out in thick, peppered flour-fatten sauce.'}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!