Instructions to use daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth with libraries, inference providers, notebooks, and local apps. Follow these links to get started.
- Libraries
- Transformers
How to use daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth with Transformers:
# Use a pipeline as a high-level helper from transformers import pipeline pipe = pipeline("text-generation", model="daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth") messages = [ {"role": "user", "content": "Who are you?"}, ] pipe(messages)# Load model directly from transformers import AutoModel model = AutoModel.from_pretrained("daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth", device_map="auto") - Notebooks
- Google Colab
- Kaggle
- Local Apps Settings
- vLLM
How to use daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth with vLLM:
Install from pip and serve model
# Install vLLM from pip: pip install vllm # Start the vLLM server: vllm serve "daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth" # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:8000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker
docker model run hf.co/daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth
- SGLang
How to use daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth with SGLang:
Install from pip and serve model
# Install SGLang from pip: pip install sglang # Start the SGLang server: python3 -m sglang.launch_server \ --model-path "daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }'Use Docker images
docker run --gpus all \ --shm-size 32g \ -p 30000:30000 \ -v ~/.cache/huggingface:/root/.cache/huggingface \ --env "HF_TOKEN=<secret>" \ --ipc=host \ lmsysorg/sglang:latest \ python3 -m sglang.launch_server \ --model-path "daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth" \ --host 0.0.0.0 \ --port 30000 # Call the server using curl (OpenAI-compatible API): curl -X POST "http://localhost:30000/v1/chat/completions" \ -H "Content-Type: application/json" \ --data '{ "model": "daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth", "messages": [ { "role": "user", "content": "What is the capital of France?" } ] }' - Unsloth Studio
How to use daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth with Unsloth Studio:
Install Unsloth Studio (macOS, Linux, WSL)
curl -fsSL https://unsloth.ai/install.sh | sh # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth to start chatting
Install Unsloth Studio (Windows)
irm https://unsloth.ai/install.ps1 | iex # Run unsloth studio unsloth studio -H 0.0.0.0 -p 8888 # Then open http://localhost:8888 in your browser # Search for daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth to start chatting
Using HuggingFace Spaces for Unsloth
# No setup required # Open https://huggingface.co/spaces/unsloth/studio in your browser # Search for daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth to start chatting
Load model with FastModel
pip install unsloth from unsloth import FastModel model, tokenizer = FastModel.from_pretrained( model_name="daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth", max_seq_length=2048, ) - Docker Model Runner
How to use daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth with Docker Model Runner:
docker model run hf.co/daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth
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):
- Phase 1: Supervised Fine-Tuning (SFT) menggunakan LoRA dengan framework Unsloth pada dataset multi-task.
- 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:
- 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).
- 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:
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:
Nilai Metrik Evaluasi pada Setiap Tahap:
- SFT Peak (Step 1000):
- ROUGE-L:
55.51% - Exact Match (EM):
27.33% - Perplexity (PPL):
17.54
- ROUGE-L:
- SFT End (Step 1200 - Overfitted/Rejected):
- ROUGE-L:
55.09%(Turun-0.42%) - Exact Match (EM):
25.91%(Turun-1.42%)
- ROUGE-L:
- 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
- ROUGE-L:
✨ 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 pemanggilantokenizer.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:
merged_bf16: Model presisi bfloat16 utuh (~15 GB)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
T5Gemma 2: Seeing, Reading, and Understanding Longer
- Biao Zhang, et al. (Google DeepMind, 2025).
- arXiv: arXiv:2512.14856
ORPO: Easy Harmless Alignment with Odds Ratio Preference Optimization
- Hongye Hong, et al. (2024).
- arXiv: arXiv:2403.07691
Exploring the Limits of Transfer Learning with a Unified Text-to-Text Transformer (T5)
- Colin Raffel, et al. (2020).
- arXiv: arXiv:1910.10683
Return of the Encoder: Maximizing Parameter Efficiency for SLMs
- Mohamed Elfeki, et al. (Microsoft, 2025).
- arXiv: arXiv:2501.16273
The AdEMAMix Optimizer: Better, Faster, Older
- Matteo Pagliardini, Pierre Ablin, and David Grangier (2024).
- arXiv: arXiv:2409.03137
Gemma 3 Technical Report
- Google DeepMind (2025).
- arXiv: arXiv:2503.19786
Cendol: Open Instruction-tuned Generative Large Language Models for Indonesian Languages
- Fajri Koto, et al. (2024).
- arXiv: arXiv:2404.06138
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}
}
Model tree for daruokta/t5gemma-2-4b-4b-instruct-chat-indo-v4-unsloth
Base model
google/t5gemma-2-4b-4bDataset 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
T5Gemma 2: Seeing, Reading, and Understanding Longer
Gemma 3 Technical Report
Return of the Encoder: Maximizing Parameter Efficiency for SLMs
The AdEMAMix Optimizer: Better, Faster, Older
Cendol: Open Instruction-tuned Generative Large Language Models for Indonesian Languages
Evaluation results
- ROUGE-L (ORPO Peak) on T5-Gemma-2 Indonesia Chat Formattedself-reported55.560
- Perplexity (ORPO PPL) on T5-Gemma-2 Indonesia Chat Formattedself-reported3.620
- ORPO Eval Loss on T5-Gemma-2 Indonesia Chat Formattedself-reported1.290

