Tutorial TRL: Post-Training LLM dengan SFT, DPO, dan Reward Modeling

# Post-Training LLM dengan TRL: SFT, Reward Modeling, dan DPO Setelah sebuah base language model selesai dipretraining, model tersebut masih perlu dibentuk agar berguna dan selaras dengan ekspektasi...

By Ruby Abdullah · · tutorial
TRLLLMDPORLHFFine-TuningPython

Post-Training LLM dengan TRL: SFT, Reward Modeling, dan DPO

Setelah sebuah base language model selesai dipretraining, model tersebut masih perlu dibentuk agar berguna dan selaras dengan ekspektasi manusia. TRL (Transformer Reinforcement Learning) adalah library dari Hugging Face untuk seluruh tahap post-training tersebut, mulai dari supervised fine-tuning sampai preference optimization. Tutorial ini membahas pipeline post-training modern dan menunjukkan cara memakai trainer-trainer TRL secara praktis, dengan Direct Preference Optimization (DPO) sebagai bagian utamanya.

Apa Itu TRL dan Posisinya

TRL adalah library yang berfokus pada langkah-langkah setelah pretraining. Tidak seperti wrapper yang sebagian besar hanya menyederhanakan konfigurasi, TRL menyediakan kelas-kelas trainer konkret untuk seluruh stack alignment: supervised fine-tuning, reward modeling, serta beberapa algoritma preference-optimization dan reinforcement learning.

TRL dibangun langsung di atas ekosistem Hugging Face:

  • Transformers untuk memuat model dan tokenizer.
  • PEFT untuk adapter yang hemat parameter seperti LoRA, sehingga model besar bisa dilatih di perangkat keras yang sederhana.
  • Accelerate untuk pelatihan terdistribusi dan mixed-precision.
  • Datasets untuk memuat dan memproses data.

Karena TRL memakai ulang komponen-komponen ini, semua hal yang sudah Anda ketahui tentang AutoModelForCausalLM, tokenizer, atau konfigurasi LoRA berlaku langsung di sini.

Pipeline Post-Training LLM Modern

Model instruction-following atau chat pada umumnya melewati tiga tahap:

  • Pretraining — prediksi token berikutnya pada korpus sangat besar yang sebagian besar tanpa label. Tahap ini mahal dan biasanya dilakukan oleh penyedia model, bukan pengguna akhir.
  • Supervised Fine-Tuning (SFT) — melatih model pada pasangan prompt/respons terkurasi agar model belajar mengikuti instruksi dan mengadopsi format chat.
  • Preference Optimization — menyesuaikan model agar keluarannya sesuai dengan preferensi manusia (atau AI). Ini bisa dilakukan dengan reward model plus reinforcement learning (RLHF/PPO), atau secara lebih langsung dengan DPO dan metode terkait.
  • TRL mencakup tahap 2 dan 3. Sebagian besar pekerjaan alignment di produksi saat ini menggabungkan satu putaran SFT yang diikuti satu putaran preference-optimization.

    Instalasi

    # Stack inti
    

    pip install trl peft datasets accelerate

    Ekstra yang direkomendasikan

    pip install transformers bitsandbytes

    pip install wandb # pelacakan eksperimen opsional

    Verifikasi instalasi dan pastikan GPU terlihat:

    import torch
    

    import trl

    print("Versi TRL:", trl.version)

    print("CUDA tersedia:", torch.cuda.isavailable())

    Trainer TRL bisa berjalan di CPU untuk eksperimen sangat kecil, tetapi post-training yang realistis membutuhkan GPU.

    Format Dataset di TRL

    TRL menstandarkan beberapa bentuk dataset. Menyiapkan format ini dengan benar adalah sebagian besar pekerjaannya.

    • Format conversational (chat) untuk SFT: kolom messages berisi daftar dictionary {"role", "content"}.
    • Format preference untuk reward modeling dan DPO: kolom bernama prompt, chosen, dan rejected.

    Format conversational terlihat seperti ini:

    example = {
    

    "messages": [

    {"role": "system", "content": "Anda adalah asisten yang membantu."},

    {"role": "user", "content": "Jelaskan apa itu vector database."},

    {"role": "assistant", "content": "Vector database menyimpan embedding..."},

    ]

    }

    Format preference yang dipakai di sepanjang sisa tutorial ini:

    example = {
    

    "prompt": "Jelaskan apa itu vector database.",

    "chosen": "Vector database menyimpan embedding dan mendukung similarity search...",

    "rejected": "Itu cuma database biasa.",

    }

    TRL menerapkan chat template model secara otomatis ketika dataset berbentuk conversational, sehingga Anda jarang perlu memformat string secara manual.

    Artikel Terkait

    Tutorial Axolotl: Fine-Tuning LLM Berbasis Konfigurasi YAML

    Fine-Tuning LLM Berbasis Konfigurasi dengan Axolotl Kebanyakan proyek fine-tuning dimulai dengan cara yang sama: seseora...

    Tutorial Unsloth: Fine-Tuning LLM yang Cepat dan Hemat Memori

    Fine-Tuning LLM Secara Efisien dengan Unsloth Dahulu, melakukan fine-tuning model bahasa besar membutuhkan server multi-...

    Tutorial PydanticAI: Framework Agent LLM yang Type-Safe

    Membangun Agen LLM yang Type-Safe dengan PydanticAI PydanticAI adalah framework agen dari tim di balik Pydantic, diranca...

    AutoGen: Framework Multi-Agent Conversation dari Microsoft

    AutoGen: Framework Multi-Agent Conversation dari Microsoft AutoGen adalah framework open-source dari Microsoft Research ...