T5-Gemma-2-4B-4B-Instruct-Chat-Indo-v4 (Unsloth)

Model ini merupakan fine-tuned merged model dari google/t5gemma-2-4b-4b yang dilatih secara berurutan (sequential):

  1. Phase 1: Supervised Fine-Tuning (SFT) menggunakan LoRA dengan framework Unsloth pada dataset multi-task.
  2. Phase 2: Odds Ratio Preference Optimization (ORPO) langsung di atas checkpoint SFT terbaik (Step 1000).

Model ini dioptimalkan khusus untuk pemahaman instruksi, kemampuan dialog multi-turn, serta pemecahan masalah secara natural dalam Bahasa Indonesia dan Bahasa Inggris.

Catatan Penting: Ini adalah model encoder-decoder (Seq2Seq), bukan decoder-only. Model dilengkapi dengan subfolder khusus untuk model utuh hasil penggabungan presisi penuh (merged_bf16) dan model ringan terkuantisasi (quantized_4bit).


📈 Hasil Evaluasi & Grafik Training Komprehensif

Proses pelatihan dilakukan dalam dua tahap terpisah secara berurutan:

  1. Phase 1: SFT (Supervised Fine-Tuning) berjalan selama 4 epoch (~1232 step). Performa puncak metrik text generation dicapai pada Step 1000 (ditandai ikon bintang kuning).
  2. Phase 2: ORPO (Odds Ratio Preference Optimization) dijalankan di atas SFT Checkpoint 1000 selama 2 epoch (~16 step) untuk menyelaraskan model dengan preferensi manusia.

Berikut adalah grafik komparasi lengkap dari fase SFT, jalur overfitting SFT (step 1000 ke 1200 - garis abu-abu putus-putus), serta cabang peningkatan optimal setelah ORPO step 16 (garis warna orange/merah):

1. Grafik Evaluasi Loss & Perplexity (PPL)

Grafik di bawah ini membandingkan penurunan Loss dan Perplexity (PPL) antara SFT dan ORPO:

Loss & Perplexity Chart

2. Grafik Evaluasi Kualitas Generasi Teks (NLG Metrics)

Grafik di bawah ini membandingkan metrik kualitas generasi (ROUGE-L, ROUGE-1, dan Exact Match) antara SFT dan ORPO:

NLG Metrics Chart

Nilai Metrik Evaluasi pada Setiap Tahap:

  • SFT Peak (Step 1000):
    • ROUGE-L: 55.51%
    • Exact Match (EM): 27.33%
    • Perplexity (PPL): 17.54
  • SFT End (Step 1200 - Overfitted/Rejected):
    • ROUGE-L: 55.09% (Turun -0.42%)
    • Exact Match (EM): 25.91% (Turun -1.42%)
  • Final ORPO (Step 16 - Promoted Model):
    • ROUGE-L: 55.56% (Meningkat dibanding SFT Peak)
    • Exact Match (EM): 27.37% (Meningkat dibanding SFT Peak)
    • Perplexity (PPL): 3.62 (Turun fantastis, tingkat keyakinan token sangat tinggi)
    • ORPO Eval Loss: 1.2870

✨ Fitur Utama

  • 🔄 Encoder-Decoder Architecture: Memetakan konteks input secara dua arah (bidirectional) pada encoder untuk menghasilkan response terarah secara autoregresif pada decoder.
  • 💬 Custom Chat Template: Dilengkapi Jinja2 chat template (chat_template.jinja) yang mendukung pemanggilan tokenizer.apply_chat_template() secara langsung.
  • 🇮🇩 Bilingual (ID/EN): Memiliki performa natural dalam percakapan Bahasa Indonesia maupun interaksi Bahasa Inggris.
  • 🎯 Preference Aligned (ORPO): Meminimalkan kecenderungan jawaban yang berulang atau berhalusinasi dengan menekan probabilitas respons yang tidak diinginkan secara matematis.
  • 🛡️ Logit Masking: Menekan probabilitas unused tokens dan vision tokens pada lm_head agar tidak merusak struktur teks keluaran.

📋 Cara Penggunaan (Inference)

Repositori ini menyimpan model yang telah di-merge ke dalam dua subfolder:

  1. merged_bf16: Model presisi bfloat16 utuh (~15 GB)
  2. quantized_4bit: Model ringan terkuantisasi NF4 (~5 GB)

Cara 1: Menggunakan Model Kuantisasi 4-bit (NF4 - Direkomendasikan untuk Hemat VRAM)

import torch
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

model_id = "daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth"

# Muat tokenizer dan model dari subfolder quantized_4bit
tokenizer = AutoTokenizer.from_pretrained(model_id, subfolder="quantized_4bit")
model = AutoModelForSeq2SeqLM.from_pretrained(
    model_id, 
    subfolder="quantized_4bit", 
    device_map="auto"
)

messages = [
    {"role": "system", "content": "Kamu adalah asisten AI yang helpful, santai, dan ramah. Gunakan Bahasa Indonesia sebagai bahasa utama."},
    {"role": "user", "content": "Tolong berikan tips singkat untuk menanam tomat di rumah."}
]

prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
inputs = tokenizer(prompt, return_tensors="pt", add_special_tokens=False).to(model.device)

with torch.no_grad():
    outputs = model.generate(
        **inputs,
        max_new_tokens=512,
        temperature=0.7,
        do_sample=True,
        repetition_penalty=1.2,
        eos_token_id=[
            tokenizer.convert_tokens_to_ids("<end_of_turn>"),
            tokenizer.eos_token_id
        ]
    )

response = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(response.strip())

Cara 2: Menggunakan Model Presisi Penuh (bfloat16)

import torch
from transformers import AutoModelForSeq2SeqLM, AutoTokenizer

model_id = "daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth"

# Muat dari subfolder merged_bf16
tokenizer = AutoTokenizer.from_pretrained(model_id, subfolder="merged_bf16")
model = AutoModelForSeq2SeqLM.from_pretrained(
    model_id, 
    subfolder="merged_bf16",
    torch_dtype=torch.bfloat16,
    device_map="auto"
)
# ... jalankan generate seperti pada Cara 1 ...

🔧 Format Chat Template

Template percakapan ini disesuaikan dengan keluarga model Gemma-2 untuk arsitektur Seq2Seq:

<bos><start_of_turn>user
{system_prompt}

{user_message}<end_of_turn>
<start_of_turn>model
{model_response}<end_of_turn>
<start_of_turn>user
{next_user_message}<end_of_turn>
<start_of_turn>model

📊 Spesifikasi & Hyperparameter Pelatihan (V6 Pipeline)

Parameter Nilai Fase SFT Nilai Fase ORPO
Base Model google/t5gemma-2-4b-4b SFT Checkpoint 1000
Dataset Config chat_sft + indoqa_sft chat_orpo
LoRA Rank (r) 256 256
LoRA Alpha (α) 512 512
Target Modules q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj q_proj, k_proj, v_proj, o_proj, gate_proj, up_proj, down_proj
LoRA Dropout 0.2 0.2
Epochs 4 2
Optimizer GrokAdEMAMix GrokAdEMAMix
Learning Rate 1e-5 (Cosine decay, 200 warmup steps) 1e-5 (Cosine decay, 200 warmup steps)
Batch Size 2 per device × 64 grad accumulation 2 per device × 64 grad accumulation
Label Smoothing 0.1 0.0
NEFTune Alpha 5.0 5.0
ORPO Beta (β) - 0.1
Max Context Length Source: 16384 / Target: 2048 Source: 16384 / Target: 2048

🏗️ Arsitektur T5Gemma-2

Model ini menggunakan arsitektur encoder-decoder (Seq2Seq) yang efisien:

┌─────────────────────┐    ┌─────────────────────┐
│      ENCODER        │    │      DECODER        │
│                     │    │                     │
│  Conversation       │───▶│  Response           │
│  Context + System   │    │  Generation         │
│  Prompt             │    │  (Autoregressive)   │
│                     │    │                     │
│  (Bidirectional     │    │  (Causal            │
│   Attention)        │    │   Attention)        │
└─────────────────────┘    └─────────────────────┘

⚠️ Batasan & Lisensi

  • Lisensi: Mengikuti regulasi Gemma License Agreement dari Google.
  • Keterbatasan:
    • Performa terfokus pada Bahasa Indonesia dan Bahasa Inggris.
    • Pada versi repositori ini, model belum di-tuning untuk kemampuan pemrosesan gambar (vision). Namun, model hasil penggabungan pada repositori ini akan digunakan sebagai basis untuk tahapan penyempurnaan berikutnya dalam melatih kemampuan multimodal/vision.

📚 Referensi & Publikasi Ilmiah

Makalah Rujukan Utama

  1. T5Gemma 2: Seeing, Reading, and Understanding Longer

  2. ORPO: Easy Harmless Alignment with Odds Ratio Preference Optimization

  3. Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (T5)

  4. Return of the Encoder: Maximizing Parameter Efficiency for SLMs

  5. The AdEMAMix Optimizer: Better, Faster, Older

    • Matteo Pagliardini, Pierre Ablin, and David Grangier (2024).
    • arXiv: arXiv:2409.03137
  6. Gemma 3 Technical Report

  7. Cendol: Open Instruction-tuned Generative Large Language Models for Indonesian Languages

Sitasi BibTeX

@article{zhang2025t5gemma2,
  title={T5Gemma 2: Seeing, Reading, and Understanding Longer},
  author={Zhang, Biao and others},
  journal={arXiv preprint arXiv:2512.14856},
  year={2025}
}

@article{hong2024orpo,
  title={ORPO: Easy Harmless Alignment with Odds Ratio Preference Optimization},
  author={Hong, Hongye and others},
  journal={arXiv preprint arXiv:2403.07691},
  year={2024}
}

@article{raffel2020t5,
  title={Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer},
  author={Raffel, Colin and Shazeer, Noam and Roberts, Adam and Lee, Katherine and Narang, Sharan and Matena, Michael and Zhou, Yanqi and Li, Wei},
  journal={Journal of Machine Learning Research},
  volume={21},
  number={140},
  pages={1--67},
  year={2020}
}

@article{elfeki2025return,
  title={Return of the Encoder: Maximizing Parameter Efficiency for SLMs},
  author={Elfeki, Mohamed and others},
  journal={arXiv preprint arXiv:2501.16273},
  year={2025}
}

@article{pagliardini2024ademamix,
  title={The AdEMAMix Optimizer: Better, Faster, Older},
  author={Pagliardini, Matteo and Ablin, Pierre and Grangier, David},
  journal={arXiv preprint arXiv:2409.03137},
  year={2024}
}

@article{gemma3report,
  title={Gemma 3 Technical Report},
  author={DeepMind, Google},
  journal={arXiv preprint arXiv:2503.19786},
  year={2025}
}

@article{koto2024cendol,
  title={Cendol: Open Instruction-tuned Generative Large Language Models for Indonesian Languages},
  author={Koto, Fajri and others},
  journal={arXiv preprint arXiv:2404.06138},
  year={2024}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth

Finetuned
(4)
this model

Dataset used to train daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth

Papers for daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth

Evaluation results

  • ROUGE-L (ORPO Peak) on T5-Gemma-2 Indonesia Chat Formatted
    self-reported
    55.560
  • Perplexity (ORPO PPL) on T5-Gemma-2 Indonesia Chat Formatted
    self-reported
    3.620
  • ORPO Eval Loss on T5-Gemma-2 Indonesia Chat Formatted
    self-reported
    1.290