Transformers documentation
Fine-tuning
Fine-tuning
Fine-tuning melanjutkan pelatihan model pretrained besar pada dataset yang lebih kecil dan spesifik untuk tugas atau domain tertentu. Misalnya, fine-tuning pada dataset contoh coding membantu model menjadi lebih baik dalam coding. Fine-tuning identik dengan pretraining, kecuali Anda tidak memulai dengan bobot acak. Hal ini juga membutuhkan komputasi, data, dan waktu yang jauh lebih sedikit.
Tutorial di bawah ini menjelaskan cara melakukan fine-tuning pada large language model menggunakan Trainer.
Masuk ke akun Hugging Face Anda dengan user token untuk mendorong model yang telah Anda fine-tune ke Hub.
from huggingface_hub import login
login()Tokenisasi
Muat dataset dan tokenize kolom teks yang digunakan model untuk pelatihan (horoscope pada dataset di bawah).
Tokenizer membuat input model, yaitu input_ids dan attention_mask. Metode forward model hanya menerima input_ids dan attention_mask, sehingga atur remove_columns untuk membuang kolom seperti horoscope setelah tokenisasi.
- Setel
truncation=Truedanmax_lengthuntuk memotong sekuens yang lebih panjang menjadi panjang maksimum yang ditentukan. - Gunakan metode
train_test_splituntuk membuat split pengujian guna mengevaluasi model.
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)Data collator merangkai sampel dataset menjadi batch untuk diproses oleh model. DataCollatorForLanguageModeling melakukan padding dinamis pada setiap batch hingga panjang urutan terpanjang di batch tersebut, alih-alih melakukan padding pada semua urutan dalam dataset hingga panjang yang sama. Hal ini menghemat komputasi dan memori dengan menghindari perhitungan token padding yang tidak diperlukan.
- Setel
mlm=Falseuntuk menghindari masking token secara acak.
data_collator = DataCollatorForLanguageModeling(tokenizer, mlm=False)Memuat model
Muat checkpoint pretrained untuk fine-tuning (lihat panduan Memuat model untuk detail lebih lanjut tentang cara memuat model).
- Setel
dtype="auto"untuk memuat bobot dalam dtype yang tersimpan. Tanpa pengaturan ini, PyTorch akan memuat bobot dalamtorch.float32, yang menggandakan penggunaan memori jika bobot aslinya adalahtorch.bfloat16.
from transformers import AutoModelForCausalLM, TrainingArguments, Trainer
model_name = "Qwen/Qwen3-0.6B"
model = AutoModelForCausalLM.from_pretrained(model_name, dtype="auto")Konfigurasi pelatihan
TrainingArguments menyediakan semua opsi untuk menyesuaikan jalannya pelatihan. Hanya argumen yang paling umum yang dibahas di sini. Sisanya memiliki nilai default yang wajar atau hanya relevan untuk skenario tertentu seperti pelatihan terdistribusi. Lihat dokumentasi API TrainingArguments untuk daftar lengkap argumen.
num_train_epochsdanper_device_train_batch_sizemengontrol durasi pelatihan dan ukuran batch.learning_ratemengatur learning rate awal untuk optimizer.
- Setel
bf16=Trueuntuk pelatihan presisi campuran yang cepat jika perangkat keras Anda mendukungnya (GPU Ampere+). Jika tidak, gunakanfp16=Truepada perangkat keras yang lebih lama. gradient_accumulation_stepsmensimulasikan ukuran batch efektif yang lebih besar dengan mengakumulasi gradien selama beberapa langkah forward sebelum memperbarui bobot.gradient_checkpointingmenukar komputasi dengan memori dengan cara menghitung ulang aktivasi perantara selama backward pass alih-alih menyimpannya. Untuk kompromi antara memori dan kecepatan, lihat partial checkpointing.- Saat
gradient_checkpointing=True, aturgradient_checkpointing_kwargs={"offload": True}untuk menyimpan aktivasi yang disimpan di memori host yang di-pin dan mengurangi penggunaan memori GPU untuk urutan panjang. Lihat offloading the saved activations untuk trade-off-nya. - Setel
train_sampling_strategy="group_by_length"untuk mengelompokkan contoh dengan panjang serupa dan mengurangi padding. Lihat group samples by length untuk dataset multimodal berbasis processor dan panjang yang sudah dihitung sebelumnya.
eval_strategydansave_strategymenentukan kapan model dievaluasi selama pelatihan dan kapan checkpoint disimpan.load_best_model_at_endmemuat checkpoint terbaik saat pelatihan selesai. Parameter ini membutuhkaneval_strategyyang telah diatur.
logging_stepsmengontrol seberapa sering loss diperbarui dan dikembalikan selama pelatihan.
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,
)Pelatihan
Buat instance Trainer dengan semua komponen yang diperlukan, lalu panggil train() untuk memulai.
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() mengunggah bobot hasil fine-tuning, konfigurasi generasi, tokenizer, dan konfigurasi model ke Hub.
Langkah selanjutnya
- Baca panduan Fitur Trainer untuk contoh kerja minimal dari fitur Trainer umum seperti fungsi loss kustom, evaluasi hemat memori, checkpointing, dan lainnya.
- Baca panduan Subclassing Trainer methods untuk mempelajari cara melakukan subclass pada metode Trainer guna mendukung fungsionalitas baru dan kustom.
- Baca panduan Callbacks untuk mempelajari cara mengaitkan diri ke peristiwa pelatihan untuk pencatatan, penghentian dini, dan perilaku kustom lainnya.
- Baca panduan Data collators untuk mempelajari cara menyesuaikan cara sampel dirakit menjadi batch.
- Jalankan skrip pelatihan pada GPU yang disewa dengan Hugging Face Jobs.
- Jelajahi notebook atau bagian Resources > Task Recipes untuk contoh pelatihan tambahan pada berbagai tugas teks, audio, visi, dan multimodal.