Transformers documentation

İnce ayar

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

İnce ayar

İnce ayar, büyük bir önceden eğitilmiş modelin, belirli bir görev veya alana özgü daha küçük bir veri setinde eğitiminin sürdürülmesidir. Örneğin, kodlama örneklerinden oluşan bir veri setinde ince ayar yapmak, modelin kodlama konusunda daha iyi hale gelmesine yardımcı olur. İnce ayar, rastgele ağırlıklarla başlanmaması dışında ön eğitimin aynısıdır. Ayrıca çok daha az hesaplama gücü, veri ve zaman gerektirir.

Aşağıdaki öğretici, Trainer ile büyük bir dil modelinin ince ayarını adım adım anlatır.

İnce ayarını yaptığınız modeli Hub'a göndermek için kullanıcı token'ınızla Hugging Face hesabınıza giriş yapın.

from huggingface_hub import login

login()

Tokenizasyon

Bir veri seti yükleyin ve modelin eğitim göreceği metin sütununu (horoscope) tokenize edin.

Tokenizer, model girdilerini, input_ids ve attention_mask oluşturur. Modelin forward metodu yalnızca input_ids ve attention_mask kabul eder, bu nedenle tokenizasyon sonrası horoscope gibi sütunları düşürmek için remove_columns parametresini ayarlayın.

  • truncation=True değerini ve max_length parametresini ayarlayarak, daha uzun dizileri belirtilen maksimum uzunluğa kısaltın.
  • Modeli değerlendirmek için bir test bölmesi oluşturmak üzere train_test_split yöntemini kullanın.
from datasets import load_dataset
from transformers import AutoTokenizer, DataCollatorForLanguageModeling

model_name = "Qwen/Qwen3-0.6B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
dataset = load_dataset("karthiksagarn/astro_horoscope", split="train")

def tokenize(batch):
    return tokenizer(
        batch["horoscope"],
        truncation=True,
        max_length=512,
    )

dataset = dataset.map(tokenize, batched=True, remove_columns=dataset.column_names)
dataset = dataset.train_test_split(test_size=0.1)

Bir veri toplayıcı (data collator), modelin işlemesi için veri seti örneklerini partilere (batch) dönüştürür. DataCollatorForLanguageModeling, veri setindeki tüm dizileri aynı uzunluğa doldurmak yerine, her partiyi dinamik olarak o partideki en uzun diziye göre doldurur. Bu sayede gereksiz dolgu token'larının hesaplanmasından kaçınılarak hesaplama ve bellek tasarrufu sağlanır.

  • Rastgele token maskelenmesini önlemek için mlm=False olarak ayarlayın.
data_collator = DataCollatorForLanguageModeling(tokenizer, mlm=False)

Bir modelin yüklenmesi

İnce ayar yapmak için önceden eğitilmiş bir kontrol noktası yükleyin (model yükleme hakkında daha fazla ayrıntı için Modelleri yükleme kılavuzuna bakın).

  • Ağırlıkları kaydedildikleri dtype ile yüklemek için dtype="auto" değerini ayarlayın. Bu ayar yapılmadığında PyTorch, ağırlıkları torch.float32 olarak yükler; bu da ağırlıkların başlangıçta torch.bfloat16 olması durumunda bellek kullanımını ikiye katlar.
from transformers import AutoModelForCausalLM, TrainingArguments, Trainer

model_name = "Qwen/Qwen3-0.6B"
model = AutoModelForCausalLM.from_pretrained(model_name, dtype="auto")

Eğitim yapılandırması

TrainingArguments, bir eğitim çalıştırmasını özelleştirmek için tüm seçenekleri sağlar. Burada yalnızca en yaygın kullanılan argümanlar ele alınır. Diğer her şeyin makul varsayılanları vardır veya dağıtık eğitim gibi belirli senaryolara özgüdür. Argümanların tam listesi için TrainingArguments API belgelerine bakın.

eğitim süresi
eğitim optimizasyonları
değerlendirme ve kontrol noktası oluşturma
loglama
  • num_train_epochs ve per_device_train_batch_size, eğitim süresini ve parti boyutunu kontrol eder. learning_rate, optimizör için başlangıç öğrenme oranını belirler.
training_args = TrainingArguments(
    output_dir="qwen3-finetuned",
    num_train_epochs=3,
    per_device_train_batch_size=2,
    gradient_accumulation_steps=8,
    gradient_checkpointing=True,
    gradient_checkpointing_kwargs={"every_n_layers": 4},
    bf16=True,
    learning_rate=2e-5,
    logging_steps=10,
    eval_strategy="epoch",
    save_strategy="epoch",
    load_best_model_at_end=True,
)

Eğitim

Gerekli tüm bileşenlerle bir Trainer örneği oluşturun, ardından başlamak için train() çağrısını yapın.

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

trainer.train()
trainer.push_to_hub()

push_to_hub(), ince ayar yapılmış ağırlıkları, üretim yapılandırmasını, belirteç ayrıştırıcısını ve model yapılandırmasını Hub'a yükler.

Sonraki adımlar

  • Özel kayıp fonksiyonları, bellek verimli değerlendirme, checkpoint oluşturma ve daha fazlası gibi yaygın Trainer özelliklerinin minimal çalışan örnekleri için Trainer özellikleri kılavuzunu okuyun.
  • Yeni ve özel işlevselliği desteklemek için Trainer yöntemlerini nasıl alt sınıflandıracağınızı öğrenmek için Subclassing Trainer methods rehberini okuyun.
  • Eğitim olaylarına kayıt tutma, erken durdurma ve diğer özel davranışlar için nasıl bağlanacağınızı öğrenmek için Callbacks rehberini okuyun.
  • Örneklerin toplu işlemlere nasıl derlendiğini özelleştirmeyi öğrenmek için Veri toplayıcıları rehberini okuyun.
  • Kiralanan bir GPU üzerinde Hugging Face Jobs ile bir eğitim betiği çalıştırın.
  • Farklı metin, ses, görüntü ve çok modlu görevler için ek eğitim örnekleri görmek üzere notebookları veya Resources > Task Recipes bölümünü inceleyin.
Update on GitHub