Transformers documentation

Fine-tuning

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

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=True dan max_length untuk memotong sekuens yang lebih panjang menjadi panjang maksimum yang ditentukan.
  • Gunakan metode train_test_split untuk 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=False untuk 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 dalam torch.float32, yang menggandakan penggunaan memori jika bobot aslinya adalah torch.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.

durasi pelatihan
optimasi pelatihan
evaluasi dan checkpointing
logging
  • num_train_epochs dan per_device_train_batch_size mengontrol durasi pelatihan dan ukuran batch. learning_rate mengatur learning rate awal untuk optimizer.
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.
Update on GitHub