Transformers documentation

İnce ayar

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.

Agent prompt

Kullanıcının görevi için bir ince ayar çalışması planlamasına yardımcı olun. Bir yapılandırma önermeden önce, görevi, önceden eğitilmiş modeli ve revizyonunu, veri seti alanlarını, değerlendirme verilerini, Transformers sürümünü, donanımı ve kullanılabilir belleği belirleyin. Bu öğreticiyi, durumlarına uygulanan veri hazırlama, model yükleme ve Trainer kurulumunu kontrol etmek için kullanın. Örnek veri setinin veya modelin farklı bir göreve uygun olduğunu varsaymayın.

  1. Modeli, ön işleme veya eğitim kurulumunu değiştirebilecek eksik ayrıntıları sorun. Varsayımlarınızı belirtin.
  2. Değerlendirme örneklerini eğitim verisinden ayrı tutun. Görev için bir model ve tokenizer seçin, modelin beklenen girdilerini ve etiketlerini hazırlayın ve bu girdilerle eşleşen bir veri toplayıcı (data collator) seçin.
  3. TrainingArguments değerlerini kullanıcının donanımına ve hedeflerine uygun şekilde ayarlayın. Kullanıcı ihtiyaç duyduğunda değerlendirme ve checkpoint kaydetme işlemlerini yapılandırın. Tam bir eğitim görevinden önce küçük bir test çalıştırın ve modelin beklenen girdileri aldığını, kaybın sonlu olduğunu ve değerlendirmenin tamamlandığını kontrol edin.
  4. Kullanıcı istemedikçe tam bir eğitim çalıştırmayı başlatmayın veya artefakt yüklemeyin. Önerilen yapılandırmayı, herhangi bir testten elde edilen kanıtları, beklenen kaynak ödünleşimlerini ve doğrulanamayan her şeyi raporlayın.

İ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