Halo!
Karena Anda ada di sini, Anda mungkin tertarik dengan cara fine‑tuning model AI open‑source untuk penggunaan Anda sendiri (chatbot, asisten coding, ahli domain, dll.). Di bawah ini adalah ikhtisar yang jelas dan ramah bagi pemula yang dapat Anda gunakan langsung dalam konteks Laravel atau web‑dev umum.
1. Apa Arti "Fine‑Tuning Model AI Open‑Source"?
Fine‑tuning adalah mengambil model pra‑latih yang sudah ada (seperti LLaMA‑2, Mistral, atau model di Hugging Face) dan melatihnya sedikit lebih banyak pada data Anda sendiri sehingga:
- Beradaptasi dengan domain Anda (hukum, keuangan, medis, game, dll.)
- Mempelajari nada dan gaya Anda
- Meningkatkan tugas tertentu (QA, coding, klasifikasi, dukungan, dll.)
Daripada melatih dari awal (mahal dan lambat), Anda menggunakan kembali model dasar yang kuat dan mengkhususkannya.
2. Opsi Utama untuk Fine‑Tuning
Ada tiga pendekatan utama yang sering Anda lihat:
2.1 Fine‑Tuning Penuh
- Anda memperbarui semua bobot model.
- Pro: Fleksibilitas dan kinerja maksimum.
- Kontra: Membutuhkan banyak GPU, waktu, dan penyimpanan.
Ini biasanya berlebihan kecuali Anda adalah lab penelitian atau perusahaan besar.
2.2 LoRA / PEFT (Fine‑Tuning Efisien Parameter)
- Anda menjaga model dasar dibekukan dan hanya melatih lapisan adaptor kecil (matriks LoRA).
- Menggunakan pustaka seperti:
Pro:
- Persyaratan VRAM jauh lebih kecil
- Lebih cepat
- Anda dapat berbagi hanya adaptor alih-alih seluruh model
Kontra:
- Sedikit kurang ekspresif daripada fine‑tuning penuh, tetapi biasanya cukup baik.
2.3 QLoRA (LoRA Terkuantisasi)
- Menggabungkan kuantisasi (mis. 4‑bit) dengan LoRA:
- Anda memuat model dasar dalam presisi rendah (
int4atauint8). - Melatih adaptor LoRA di atasnya.
- Anda memuat model dasar dalam presisi rendah (
Pro:
- Dapat melakukan fine‑tuning model besar pada GPU tunggal (bahkan GPU konsumen seperti 24 GB).
- Sangat populer untuk model gaya LLaMA.
Direkomendasikan untuk sebagian besar pengembang individu.
3. Memilih Model Dasar Open‑Source
Tempat menemukan model:
Pilihan umum:
- Chat / asisten:
mistralai/Mistral-7B-Instruct-v0.2meta-llama/Llama-3-8b-instruct(jika lisensi dan akses sesuai dengan kasus penggunaan Anda)
- Kode:
codellama/CodeLlama-7b-Instruct-hfdeepseek-ai/deepseek-coder-6.7b-instruct
Periksa:
- Lisensi (komersial vs non‑komersial)
- Ukuran model (7B adalah titik awal yang baik)
- Instruction‑tuned vs dasar: untuk chatbot, pilih model instruct/chat.
4. Mempersiapkan Data Anda untuk Fine‑Tuning
Format data Anda lebih penting daripada yang orang pikirkan.
4.1 Data Apa yang Harus Anda Gunakan?
Contoh:
- Log obrolan dukungan pelanggan
- Dokumen FAQ
- Artikel basis pengetahuan
- Repositori kode + penjelasan
- Makalah penelitian khusus domain
Bersihkan data:
- Hapus PII / rahasia (kunci API, email, kata sandi).
- Hilangkan duplikasi teks serupa.
- Perbaiki masalah pemformatan yang jelas.
4.2 Format Instruksi Tipikal
Untuk model obrolan, format umum di Hugging Face adalah:
{
"instruction": "Jelaskan apa itu fine-tuning dengan istilah sederhana.",
"input": "",
"output": "Fine-tuning adalah mengambil model terlatih yang sudah ada dan melatihnya lebih lanjut pada data Anda sendiri..."
}
Atau format yang lebih mirip obrolan:
{
"messages": [
{"role": "system", "content": "Anda adalah asisten yang membantu untuk pertanyaan akuntansi."},
{"role": "user", "content": "Bagaimana cara mencatat pembayaran faktur?"},
{"role": "assistant", "content": "Untuk mencatat pembayaran faktur, Anda harus..."}
]
}
Simpan itu sebagai .jsonl (satu objek JSON per baris), .json, atau dalam dataset di Hugging Face.
5. Contoh Minimal: Fine‑Tuning Dengan Hugging Face + LoRA
Anda umumnya membutuhkan:
- Python 3.10+
- GPU (ideal >= 16 GB VRAM untuk 7B; 24 GB lebih nyaman)
- Pustaka:
transformersdatasetspeftbitsandbytesaccelerate
5.1 Instal Dependensi
pip install "transformers>=4.39.0" "datasets" "accelerate" "peft" "bitsandbytes"
5.2 Skrip QLoRA Sederhana (Konseptual)
from datasets import load_dataset
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments, Trainer
from peft import LoraConfig, get_peft_model
import torch
model_name = "mistralai/Mistral-7B-Instruct-v0.2"
dataset_path = "path_or_hf_dataset" # e.g. "my-username/my-dataset"
tokenizer = AutoTokenizer.from_pretrained(model_name)
tokenizer.pad_token = tokenizer.eos_token
model = AutoModelForCausalLM.from_pretrained(
model_name,
load_in_4bit=True,
device_map="auto"
)
dataset = load_dataset(dataset_path, split="train")
def format_example(example):
user = example["instruction"]
answer = example["output"]
prompt = f"User: {user}
Assistant:"
return {"input_ids": tokenizer(prompt, truncation=True, padding="max_length", max_length=512)["input_ids"],
"labels": tokenizer(answer, truncation=True, padding="max_length", max_length=512)["input_ids"]}
tokenized = dataset.map(format_example, remove_columns=dataset.column_names)
lora_config = LoraConfig(
r=16,
lora_alpha=32,
target_modules=["q_proj", "v_proj"],
lora_dropout=0.05,
bias="none",
task_type="CAUSAL_LM"
)
model = get_peft_model(model, lora_config)
training_args = TrainingArguments(
output_dir="./mistral-finetuned",
per_device_train_batch_size=2,
gradient_accumulation_steps=8,
learning_rate=2e-4,
num_train_epochs=3,
fp16=True,
logging_steps=10,
save_steps=500,
save_total_limit=2,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=tokenized
)
trainer.train()
model.save_pretrained("./mistral-finetuned-lora")
tokenizer.save_pretrained("./mistral-finetuned-lora")
Ini adalah referensi yang disederhanakan; untuk penggunaan produksi, lihat:
6. Mengintegrasikan Model Fine‑Tuned Dengan Aplikasi Laravel
Setelah Anda memiliki model fine‑tuned, Anda perlu menyajikan dan memanggilnya dari Laravel.
6.1 Cara Menyajikan Model
- Mikroservice FastAPI / Flask (Python)
- Jalankan inferensi dengan
transformersatau vLLM. - Ekspos endpoint
/generate.
- Jalankan inferensi dengan
- Text Generation Inference (TGI)
- Hugging Face TGI dioptimalkan untuk melayani LLM.
- Ollama (untuk beberapa model)
- Ollama berjalan di macOS/Linux dan menawarkan API HTTP sederhana.
6.2 Endpoint Inferensi Dasar (Contoh Python + FastAPI)
from fastapi import FastAPI
from pydantic import BaseModel
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
app = FastAPI()
model_name = "./mistral-finetuned-lora"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForCausalLM.from_pretrained(
model_name,
torch_dtype=torch.float16,
device_map="auto"
)
class GenerateRequest(BaseModel):
prompt: str
max_new_tokens: int = 256
temperature: float = 0.7
@app.post("/generate")
def generate(req: GenerateRequest):
inputs = tokenizer(req.prompt, return_tensors="pt").to(model.device)
output = model.generate(
**inputs,
max_new_tokens=req.max_new_tokens,
temperature=req.temperature,
do_sample=True,
pad_token_id=tokenizer.eos_token_id
)
text = tokenizer.decode(output[0], skip_special_tokens=True)
return {"result": text}
Jalankan ini pada mesin dengan GPU.
6.3 Memanggil Model Dari Laravel
Di Laravel, gunakan Http::post() (dari Illuminate\Support\Facades\Http) untuk berbicara dengan layanan Python:
use Illuminate\Support\Facades\Http;
$response = Http::post('http://your-python-host:8000/generate', [
'prompt' => 'Jelaskan apa itu fine-tuning.',
'max_new_tokens' => 256,
'temperature' => 0.7,
]);
$result = $response->json()['result'] ?? null;
Anda dapat membungkus ini ke dalam kelas layanan (mis. App\Services\AIClient) dan memanggilnya dari pengontrol Anda.
7. Tips untuk Hasil Fine‑Tuning yang Lebih Baik
- Mulai dari yang kecil: Mulailah dengan model 7B dan dataset kecil (1k–10k contoh).
- Jaga konsistensi prompt: Gunakan struktur yang sama yang akan Anda gunakan pada waktu inferensi.
- Evaluasi sering:
- Buat serangkaian kecil pertanyaan evaluasi.
- Periksa respons setiap kali pelatihan dijalankan.
- Hindari overfitting:
- Gunakan set validasi.
- Perhatikan jika model mulai menghafal.
- Dokumentasikan pengaturan Anda:
- Peringkat LoRA, laju pembelajaran, epoch, versi dataset.
- Ini membantu mereproduksi proses yang baik.
8. Alat dan Kerangka Kerja Populer untuk Dijelajahi
- Ekosistem Hugging Face
- vLLM – serving throughput tinggi: https://github.com/vllm-project/vllm
- Axolotl – toolkit fine‑tuning LLM: https://github.com/OpenAccess-AI-Collective/axolotl
- Deepspeed / FSDP untuk pelatihan skala lebih besar: DeepSpeed
9. Kapan Anda Mungkin Tidak Membutuhkan Fine‑Tuning
Kadang-kadang Anda bisa mendapatkan apa yang Anda inginkan dengan:
- Prompt engineering (instruksi dan contoh yang lebih baik)
- RAG (Retrieval‑Augmented Generation) – memasukkan dokumen eksternal pada waktu kueri, tanpa mengubah bobot
- Gunakan Haystack, LlamaIndex, atau LangChain
RAG seringkali lebih mudah dipelihara dan diperbarui daripada fine‑tuning penuh, terutama untuk pengetahuan yang berubah dengan cepat.
10. Langkah Selanjutnya
Jika Anda baru memulai:
- Pilih model instruct dari Hugging Face.
- Buat dataset instruksi kecil dari domain Anda sendiri.
- Gunakan QLoRA + PEFT untuk menjalankan fine‑tune singkat.
- Sajikan model Anda melalui API Python kecil.
- Panggil dari Laravel dengan
Http::post()dan bangun antarmuka Anda.
Jika Anda memberi tahu saya:
- Kasus penggunaan apa yang Anda miliki (chatbot, asisten kode, alat internal, dll.)
- Perangkat keras (GPU / RAM) apa yang dapat Anda akses
Saya dapat menguraikan rencana fine‑tuning langkah demi langkah yang disesuaikan dengan pengaturan persis Anda.