Transformers documentation
İnce ayar
İ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=Truedeğerini vemax_lengthparametresini 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_splityö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=Falseolarak 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.float32olarak yükler; bu da ağırlıkların başlangıçtatorch.bfloat16olması 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.
num_train_epochsveper_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.
- Donanımınız destekliyorsa (Ampere+ GPU'lar) hızlı karma hassasiyetli eğitim için
bf16=Trueolarak ayarlayın. Aksi takdirde, daha eski donanımlardafp16=Truedeğerine geri dönün. gradient_accumulation_steps, ağırlıkların güncellenmesinden önce birden çok ileri geçiş boyunca gradyanları biriktirerek daha büyük bir etkili batch boyutunu simüle eder.gradient_checkpointing, ara aktivasyonları saklamak yerine geriye yayılım sırasında yeniden hesaplayarak hesaplama gücünü bellek karşılığında takas eder. Bellek ve hız arasında bir denge için kısmi checkpointing bölümüne bakın.gradient_checkpointing=Trueolduğunda, uzun diziler için GPU bellek kullanımını azaltmak ve kaydedilen aktivasyonları sabitlenmiş ana bellekte tutmak içingradient_checkpointing_kwargs={"offload": True}ayarlayın. Bu ödünleşim için kaydedilen aktivasyonların dışa aktarılması bölümüne bakın.- Benzer uzunluklardaki örnekleri gruplayarak padding'i azaltmak için
train_sampling_strategy="group_by_length"değerini ayarlayın. İşleyici tabanlı çok modlu veri kümeleri ve önceden hesaplanmış uzunluklar için uzunluğa göre örnek gruplama bölümüne bakın.
eval_strategyvesave_strategy, eğitim sırasında modelin ne zaman değerlendirileceğini ve bir kontrol noktasının ne zaman kaydedileceğini belirler.load_best_model_at_end, eğitim bittiğinde en iyi kontrol noktasını yükler. Bunun içineval_strategyayarlanmış olmalıdır.
logging_steps, eğitim sırasında kaybın ne sıklıkla güncelleneceğini ve döndürüleceğini kontrol eder.
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.