Halo!

Karena Anda ada di sini, Anda mungkin tertarik pada cara melakukan fine-tuning model AI sumber terbuka (seperti LLaMA, Mistral, GPT‑J, dll.) untuk data atau aplikasi Anda sendiri. Di bawah ini adalah ikhtisar langkah demi langkah yang jelas yang dapat Anda ikuti, ditambah tautan dan alat yang umum digunakan dalam proyek nyata.


1. Apa Artinya “Fine-Tuning Model AI Sumber Terbuka”?

Fine‑tuning berarti:

  • Anda mulai dengan model yang telah dilatih sebelumnya (misalnya, model bahasa besar).
  • Anda melatihnya sedikit lagi pada dataset Anda sendiri.
  • Hasilnya adalah model yang:
    • Mengetahui semua hal umum yang diketahui model dasar, ditambah
    • Memiliki kinerja yang lebih baik di domain spesifik Anda (kode, PDF, gaya obrolan, dokumentasi produk, dll.).

Ini berbeda dari RAG (Retrieval Augmented Generation), di mana Anda tidak mengubah bobot model; Anda hanya memasukkan konteks yang relevan dari database vektor. Untuk banyak kasus penggunaan bisnis, RAG sudah cukup; fine-tuning menjadi berguna ketika:

  • Anda menginginkan nada atau gaya khusus secara konsisten.
  • Anda ingin model mengikuti instruksi kompleks dengan andal.
  • Anda perlu model berbicara bahasa teknis atau bisnis khusus dengan sangat baik.
  • Anda ingin mengurangi panjang prompt dan biaya untuk pola yang berulang.

2. Pilih Model Sumber Terbuka yang Tepat

Lokasi populer untuk menemukan model:

Cara memilih:

  • Jenis tugas

    • Obrolan / asisten umum – pilih LLM yang disesuaikan untuk instruksi (misalnya, *-instruct).
    • Kode – model yang berspesialisasi dalam kode seperti CodeLlama.
    • Klasifikasi / penyematan – encoder transformer yang lebih kecil (misalnya, sentence-transformers).
  • Ukuran vs perangkat keras

    • Model 7B–8B: bagus untuk GPU tunggal 24 GB (seperti RTX 4090 atau A5000).
    • Model 13B–34B+: mungkin memerlukan beberapa GPU atau kuantisasi 4 bit.

3. Menyiapkan Dataset Anda untuk Fine-Tuning

Dataset Anda harus mencerminkan bagaimana Anda ingin model berperilaku.

3.1 Format khas untuk model obrolan

Format JSONL umum (satu objek JSON per baris):

{"instruction": "Jelaskan apa itu fine-tuning.", "input": "", "output": "Fine-tuning adalah..."}
{"instruction": "Terjemahkan teks ini ke bahasa Prancis.", "input": "Selamat pagi", "output": "Bonjour"}

Atau format percakapan (gaya OpenAI):

{
  "messages": [
    {"role": "system", "content": "Anda adalah asisten pengkodean yang bermanfaat."},
    {"role": "user", "content": "Tulis fungsi Python untuk menambahkan dua angka."},
    {"role": "assistant", "content": "def add(a, b):
    return a + b"}
  ]
}

Untuk SEO dan penemuan: banyak orang mencari "fine-tuning format LLaMA JSONL" atau "contoh dataset fine tuning instruksi" – menggunakan salah satu dari dua format di atas biasanya berfungsi dengan skrip fine‑tuning modern.

3.2 Tips kualitas data

  • Konsistensi: gunakan struktur yang sama di mana-mana (kunci, fungsi, format yang sama).
  • Respons bersih: hindari halusinasi dan konten yang salah.
  • Keragaman: campur contoh mudah/sedang/sulit dan frasa yang bervariasi.
  • Data yang cukup:
    • Penyesuaian perilaku kecil: 1k–5k contoh berkualitas tinggi dapat berfungsi.
    • Adaptasi domain yang lebih besar: 10k–100k+ contoh lebih baik.

4. Persyaratan Perangkat Keras dan Lingkungan

4.1 Perangkat keras

  • Untuk model 7B–8B (QLoRA / LoRA):
    • 1 × GPU 16–24 GB biasanya cukup.
  • Untuk model 13B+:
    • Beberapa GPU atau kuantisasi yang lebih agresif.
  • Hanya CPU: mungkin, tetapi sangat lambat; tidak disarankan kecuali modelnya kecil.

4.2 Perangkat lunak

Tumpukan umum:

Instal yang dasar:

pip install "transformers[torch]" datasets accelerate peft bitsandbytes

5. Metode Fine-Tuning: Fine-Tune Penuh vs LoRA / QLoRA

5.1 Fine-tuning penuh

  • Anda memperbarui semua bobot model.
  • Pro: kapasitas dan fleksibilitas maksimum.
  • Kontra: membutuhkan banyak memori dan waktu GPU.

Untuk sebagian besar tim, fine‑tuning penuh model 7B+ berlebihan.

5.2 LoRA / QLoRA (disarankan untuk sebagian besar kasus)

  • Hanya latih lapisan adaptor kecil di atas model dasar yang dibekukan.
  • QLoRA = LoRA + model dasar yang dikuantisasi (misalnya, 4 bit).
  • Jauh lebih murah dan berfungsi dengan sangat baik untuk:
    • Perubahan gaya / perilaku
    • Pengetahuan domain
    • Mengikuti instruksi

Sumber daya:

Sebagian besar tutorial “cara melakukan fine tuning LLM sumber terbuka pada GPU tunggal” yang Anda lihat online menggunakan QLoRA.


6. Langkah demi Langkah: Fine-Tune Model Sumber Terbuka dengan LoRA

Di bawah ini adalah contoh yang disederhanakan menggunakan transformers dan peft dari Hugging Face. Ini bukan kode produksi, tetapi memberi Anda bagian-bagian tepat yang Anda butuhkan.

6.1 Muat model dasar

from transformers import AutoModelForCausalLM, AutoTokenizer

model_name = "mistralai/Mistral-7B-Instruct-v0.2"  # contoh

tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
    model_name,
    load_in_4bit=True,            # Pemuatan gaya QLoRA
    device_map="auto"
)

6.2 Siapkan dataset Anda

from datasets import load_dataset

# Asumsikan dataset Anda adalah file JSONL dengan {"instruction", "input", "output"}
dataset = load_dataset("json", data_files={"train": "train.jsonl", "validation": "val.jsonl"})

def format_example(example):
    if example["input"]:
        prompt = f"Instruction: {example['instruction']}
Input: {example['input']}
Answer:"
    else:
        prompt = f"Instruction: {example['instruction']}
Answer:"
    return {
        "prompt": prompt,
        "label": example["output"]
    }

dataset = dataset.map(format_example)

def tokenize(batch):
    inputs = tokenizer(batch["prompt"], truncation=True, padding="max_length", max_length=1024)
    labels = tokenizer(batch["label"], truncation=True, padding="max_length", max_length=1024)
    inputs["labels"] = labels["input_ids"]
    return inputs

tokenized = dataset.map(tokenize, batched=True, remove_columns=dataset["train"].column_names)

6.3 Lampirkan adaptor LoRA

from peft import LoraConfig, get_peft_model, TaskType

lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "v_proj"],  # dapat bervariasi sesuai dengan model
    lora_dropout=0.05,
    bias="none",
    task_type=TaskType.CAUSAL_LM,
)

model = get_peft_model(model, lora_config)
model.print_trainable_parameters()

6.4 Melatih

from transformers import TrainingArguments, Trainer

training_args = TrainingArguments(
    output_dir="./mistral-finetuned",
    per_device_train_batch_size=2,
    per_device_eval_batch_size=2,
    gradient_accumulation_steps=8,
    num_train_epochs=3,
    learning_rate=2e-4,
    fp16=True,
    logging_steps=50,
    save_steps=500,
    evaluation_strategy="steps",
    eval_steps=500,
    save_total_limit=3,
    report_to="none"
)

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=tokenized["train"],
    eval_dataset=tokenized["validation"]
)

trainer.train()
model.save_pretrained("./mistral-finetuned-lora")
tokenizer.save_pretrained("./mistral-finetuned-lora")

Sekarang Anda memiliki model sumber terbuka yang disesuaikan dengan LoRA dengan fine‑tuning pada dataset Anda.


7. Menggunakan Model Fine-Tuning Anda dalam Produksi

7.1 Gabungkan bobot LoRA (opsional)

Untuk memudahkan penerapan, Anda dapat menggabungkan adaptor LoRA ke dalam model dasar:

from peft import PeftModel

base_model = AutoModelForCausalLM.from_pretrained(model_name, device_map="auto")
lora_model = PeftModel.from_pretrained(base_model, "./mistral-finetuned-lora")
merged = lora_model.merge_and_unload()
merged.save_pretrained("./mistral-finetuned-merged")
tokenizer.save_pretrained("./mistral-finetuned-merged")

Anda kemudian dapat:

7.2 Integrasi dengan aplikasi Laravel

Model umum:

  1. Model disajikan sebagai API HTTP (mikroservis Python)

    • Ekspos endpoint /generate yang memanggil model fine‑tuning Anda.
    • Panggil dari Laravel menggunakan Guzzle atau klien Http.
  2. Gunakan penyedia inferensi yang mendukung model khusus

Untuk pengaturan Laravel yang khas, orang mencari “gunakan model LLaMA fine tuned di Laravel” atau “hubungkan Laravel ke LLM lokal”; kuncinya adalah memperlakukan model sebagai layanan terpisah dan berkomunikasi dengannya melalui HTTP.


8. Kapan Anda Mungkin Tidak Membutuhkan Fine-Tuning

Dalam banyak aplikasi dunia nyata, Anda bisa mendapatkan hasil yang sangat baik dengan menggabungkan:

  1. Model sumber terbuka yang kuat (misalnya, Llama 3 Instruct atau Mistral Instruct).
  2. Rekayasa prompt (instruksi yang jelas, pesan sistem yang konsisten).
  3. RAG dengan database vektor:

Fine‑tuning sangat berharga jika:

  • Anda berulang kali mengajukan pertanyaan serupa dan menginginkan prompt pendek.
  • Anda menginginkan asisten dengan suara merek dan aman untuk merek.
  • Anda harus menjalankan pada perangkat keras yang lebih kecil dengan kualitas tinggi di domain tertentu.

9. Pertimbangan Hukum dan Lisensi

Sebelum melakukan fine‑tuning model sumber terbuka apa pun:

  • Periksa lisensi di halaman Hugging Face-nya.
    • Beberapa memungkinkan penggunaan komersial secara bebas.
    • Yang lain memiliki batasan (misalnya, lisensi Llama 2 / 3, model hanya untuk penelitian, dll.).
  • Periksa lisensi data pelatihan yang Anda gunakan (tanpa data pribadi/rahasia tanpa persetujuan dan keamanan yang memadai).

Bacaan yang bermanfaat:


10. Ringkasan: Cara Melakukan Fine-Tuning Model AI Sumber Terbuka

  1. Pilih model dari Hugging Face yang sesuai dengan tugas dan perangkat keras Anda.
  2. Siapkan data pelatihan berkualitas tinggi dalam format obrolan atau instruksi JSON/JSONL yang stabil.
  3. Konfigurasikan lingkungan dengan PyTorch, transformers, datasets, peft, dan (opsional) bitsandbytes.
  4. Gunakan LoRA/QLoRA untuk fine‑tuning pada GPU tunggal dengan biaya yang wajar.
  5. Evaluasi pada data yang ditahan dan perbaiki prompt dan set pelatihan.
  6. Terapkan sebagai layanan (misalnya, melalui vLLM, TGI, atau llama.cpp) dan panggil dari Laravel atau backend Anda yang lain.

Jika Anda memberi tahu saya:

  • Jenis aplikasi apa yang Anda bangun (chatbot, asisten kode, generator konten, dll.),
  • Perangkat keras apa yang Anda miliki,
  • Apakah Anda ingin menerapkan di tempat atau di cloud,

Saya dapat menguraikan konfigurasi konkret dan minimal yang disesuaikan dengan kasus penggunaan Anda yang tepat.