<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=LLM%3A_Lora</id>
	<title>LLM: Lora - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://onnocenter.or.id/wiki/index.php?action=history&amp;feed=atom&amp;title=LLM%3A_Lora"/>
	<link rel="alternate" type="text/html" href="https://onnocenter.or.id/wiki/index.php?title=LLM:_Lora&amp;action=history"/>
	<updated>2026-04-21T03:38:11Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.4</generator>
	<entry>
		<id>https://onnocenter.or.id/wiki/index.php?title=LLM:_Lora&amp;diff=72942&amp;oldid=prev</id>
		<title>Onnowpurbo: Created page with &quot;Siap, Pak Onno. Berikut “how-to” singkat &amp; praktis memakai **LoRA** di **Ollama**—mulai dari melatih adapter (QLoRA/PEFT), mengonversi (bila perlu), sampai **meng-attach...&quot;</title>
		<link rel="alternate" type="text/html" href="https://onnocenter.or.id/wiki/index.php?title=LLM:_Lora&amp;diff=72942&amp;oldid=prev"/>
		<updated>2025-10-04T21:04:29Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;Siap, Pak Onno. Berikut “how-to” singkat &amp;amp; praktis memakai **LoRA** di **Ollama**—mulai dari melatih adapter (QLoRA/PEFT), mengonversi (bila perlu), sampai **meng-attach...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Siap, Pak Onno. Berikut “how-to” singkat &amp;amp; praktis memakai **LoRA** di **Ollama**—mulai dari melatih adapter (QLoRA/PEFT), mengonversi (bila perlu), sampai **meng-attach** adapter itu ke model base via **Modelfile**.&lt;br /&gt;
&lt;br /&gt;
# 1) Pilih base model di Ollama&lt;br /&gt;
&lt;br /&gt;
Contoh aman &amp;amp; ringan untuk RTX 4060 8 GB:&lt;br /&gt;
&lt;br /&gt;
* `llama3.2:3b` atau `llama3.1:8b`&lt;br /&gt;
* `gemma2:2b`&lt;br /&gt;
  Tarik dulu basisnya:&lt;br /&gt;
&lt;br /&gt;
```bash&lt;br /&gt;
ollama pull llama3.2:3b&lt;br /&gt;
# atau&lt;br /&gt;
ollama pull gemma2:2b&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
# 2) Latih LoRA (QLoRA/PEFT) dari HuggingFace&lt;br /&gt;
&lt;br /&gt;
Latihan bisa dilakukan di Linux/Colab dengan stack open-source (transformers + peft + bitsandbytes/unsloth). Output yang kita incar: **adapter PEFT** berupa `adapter_model.safetensors` + `adapter_config.json`.&lt;br /&gt;
&lt;br /&gt;
Contoh kerangka (ringkas):&lt;br /&gt;
&lt;br /&gt;
```python&lt;br /&gt;
# pip install -U transformers peft datasets accelerate bitsandbytes&lt;br /&gt;
from datasets import load_dataset&lt;br /&gt;
from transformers import AutoModelForCausalLM, AutoTokenizer, TrainingArguments&lt;br /&gt;
from peft import LoraConfig, get_peft_model, TaskType&lt;br /&gt;
import torch&lt;br /&gt;
&lt;br /&gt;
base_model = &amp;quot;meta-llama/Llama-3.2-3B-Instruct&amp;quot;   # selaraskan dengan base di Ollama&lt;br /&gt;
tok = AutoTokenizer.from_pretrained(base_model, use_fast=True)&lt;br /&gt;
tok.pad_token = tok.eos_token&lt;br /&gt;
&lt;br /&gt;
ds = load_dataset(&amp;quot;json&amp;quot;, data_files={&amp;quot;train&amp;quot;:&amp;quot;train.jsonl&amp;quot;,&amp;quot;eval&amp;quot;:&amp;quot;eval.jsonl&amp;quot;})&lt;br /&gt;
&lt;br /&gt;
model = AutoModelForCausalLM.from_pretrained(&lt;br /&gt;
    base_model,&lt;br /&gt;
    load_in_4bit=True,&lt;br /&gt;
    device_map=&amp;quot;auto&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
lora_cfg = LoraConfig(&lt;br /&gt;
  r=16, lora_alpha=32, lora_dropout=0.05,&lt;br /&gt;
  target_modules=[&amp;quot;q_proj&amp;quot;,&amp;quot;k_proj&amp;quot;,&amp;quot;v_proj&amp;quot;,&amp;quot;o_proj&amp;quot;,&amp;quot;gate_proj&amp;quot;,&amp;quot;up_proj&amp;quot;,&amp;quot;down_proj&amp;quot;],&lt;br /&gt;
  task_type=TaskType.CAUSAL_LM&lt;br /&gt;
)&lt;br /&gt;
model = get_peft_model(model, lora_cfg)&lt;br /&gt;
&lt;br /&gt;
args = TrainingArguments(&lt;br /&gt;
  output_dir=&amp;quot;out_lora&amp;quot;,&lt;br /&gt;
  per_device_train_batch_size=4,&lt;br /&gt;
  gradient_accumulation_steps=4,&lt;br /&gt;
  learning_rate=2e-4,&lt;br /&gt;
  num_train_epochs=3,&lt;br /&gt;
  logging_steps=50,&lt;br /&gt;
  fp16=True,&lt;br /&gt;
  eval_strategy=&amp;quot;no&amp;quot;,&lt;br /&gt;
  save_strategy=&amp;quot;epoch&amp;quot;&lt;br /&gt;
)&lt;br /&gt;
&lt;br /&gt;
# ... DataCollator &amp;amp; Trainer, lalu trainer.train()&lt;br /&gt;
&lt;br /&gt;
# Simpan adapter PEFT:&lt;br /&gt;
model.save_pretrained(&amp;quot;my_lora_adapter&amp;quot;)&lt;br /&gt;
# -&amp;gt; akan ada my_lora_adapter/adapter_model.safetensors &amp;amp; adapter_config.json&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Catatan: Anda bisa pakai **Unsloth** untuk hemat VRAM &amp;amp; training lebih cepat. Hasil akhirnya juga **adapter PEFT (safetensors)**, cocok dengan langkah berikutnya.&lt;br /&gt;
&lt;br /&gt;
# 3) (Opsional) Konversi adapter → GGUF&lt;br /&gt;
&lt;br /&gt;
**Ollama saat ini menerima 2 jenis adapter** di Modelfile:&lt;br /&gt;
&lt;br /&gt;
* **Safetensors adapter (PEFT)** untuk arsitektur Llama/Mistral/Gemma; atau&lt;br /&gt;
* **GGUF adapter** (hasil konversi dari PEFT). ([docs.ollama.com][1])&lt;br /&gt;
&lt;br /&gt;
Kalau Anda sudah punya **safetensors**, Anda **bisa langsung pakai** (bagian #4).&lt;br /&gt;
Kalau ingin **GGUF adapter**, konversikan dengan skrip `llama.cpp` (contoh umum):&lt;br /&gt;
&lt;br /&gt;
```bash&lt;br /&gt;
# clone llama.cpp bila belum&lt;br /&gt;
git clone https://github.com/ggerganov/llama.cpp&lt;br /&gt;
cd llama.cpp&lt;br /&gt;
&lt;br /&gt;
# contoh konversi PEFT -&amp;gt; GGUF adapter&lt;br /&gt;
python3 convert-lora-to-gguf.py \&lt;br /&gt;
  --base /path/hf_base_model_dir \&lt;br /&gt;
  --lora /path/my_lora_adapter \&lt;br /&gt;
  --outfile /path/my_lora.gguf&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
(Beberapa tutorial/notebook komunitas juga menunjukkan alur konversi PEFT → GGUF lalu dipakai di runtime llama.cpp/Ollama.) ([Hugging Face][2])&lt;br /&gt;
&lt;br /&gt;
# 4) Buat **Modelfile** yang menempelkan LoRA ke base model&lt;br /&gt;
&lt;br /&gt;
Buat folder kerja, lalu tulis **Modelfile** (pilih salah satu—safetensors ATAU gguf):&lt;br /&gt;
&lt;br /&gt;
**A. Memakai adapter Safetensors (PEFT)**&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
# Modelfile&lt;br /&gt;
FROM llama3.2:3b&lt;br /&gt;
# template/sistem opsional&lt;br /&gt;
SYSTEM Anda adalah asisten singkat, sopan, dan menjawab dalam Bahasa Indonesia.&lt;br /&gt;
# tempelkan adapter PEFT (safetensors)&lt;br /&gt;
ADAPTER ./my_lora_adapter   # folder berisi adapter_model.safetensors &amp;amp; adapter_config.json&lt;br /&gt;
PARAMETER num_ctx 4096&lt;br /&gt;
PARAMETER temperature 0.6&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
**B. Memakai adapter GGUF**&lt;br /&gt;
&lt;br /&gt;
```&lt;br /&gt;
# Modelfile&lt;br /&gt;
FROM llama3.2:3b&lt;br /&gt;
SYSTEM Anda adalah asisten singkat, sopan, dan menjawab dalam Bahasa Indonesia.&lt;br /&gt;
ADAPTER ./my_lora.gguf&lt;br /&gt;
PARAMETER num_ctx 4096&lt;br /&gt;
PARAMETER temperature 0.6&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Sintaks `ADAPTER` dan contoh “Safetensor adapter” / “GGUF adapter” didokumentasikan resmi di **Ollama Modelfile Reference**. Pastikan **base model (FROM)** sama persis dengan model yang dipakai saat melatih LoRA, agar perilaku tidak acak. ([docs.ollama.com][1])&lt;br /&gt;
&lt;br /&gt;
# 5) Build &amp;amp; Jalankan di Ollama&lt;br /&gt;
&lt;br /&gt;
```bash&lt;br /&gt;
# dari folder yang berisi Modelfile + adapter&lt;br /&gt;
ollama create sekolah-lora -f Modelfile&lt;br /&gt;
&lt;br /&gt;
# uji jalan&lt;br /&gt;
ollama run sekolah-lora&lt;br /&gt;
# lalu ketik prompt:&lt;br /&gt;
# &amp;gt; Ringkas Bab 1 buku AI untuk SMK dalam 5 poin.&lt;br /&gt;
```&lt;br /&gt;
&lt;br /&gt;
# 6) Tips praktis (RTX 4060 8 GB, offline, open-source)&lt;br /&gt;
&lt;br /&gt;
* **Cocokkan base**: Kalau latih di `meta-llama/Llama-3.2-3B-Instruct`, gunakan `FROM llama3.2:3b`. Mismatch base ↔ adapter bisa bikin output kacau. ([docs.ollama.com][1])&lt;br /&gt;
* **Format data**: Untuk *instruction tuning*, JSONL bergaya `{&amp;quot;instruction&amp;quot;: &amp;quot;...&amp;quot;, &amp;quot;input&amp;quot;: &amp;quot;&amp;quot;, &amp;quot;output&amp;quot;: &amp;quot;...&amp;quot;}` memudahkan.&lt;br /&gt;
* **Kecil dulu**: Mulai dari 2–4B params agar iterasi cepat; naikkan jika perlu.&lt;br /&gt;
* **Evaluator cepat**: Setelah build, siapkan *probe prompts* (10–20 soal) dan uji konsistensi jawaban sebelum dipakai siswa.&lt;br /&gt;
* **Lisensi**: Pastikan lisensi base model &amp;amp; data pembelajaran kompatibel untuk distribusi ke sekolah.&lt;br /&gt;
* **Fallback**: Jika inferensi berat, turunkan `num_ctx` atau pakai kuantisasi bawaan Ollama (model base-nya sudah terkuantisasi).&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
&lt;br /&gt;
Kalau Bapak mau, saya bisa bantu **template dataset JSONL**, contoh **Trainer (PEFT/Unsloth)** yang rapi untuk Bahasa Indonesia, dan **skrip evaluasi** singkat supaya LoRA-nya konsisten untuk materi SMK.&lt;br /&gt;
&lt;br /&gt;
[1]: https://docs.ollama.com/modelfile &amp;quot;Modelfile reference - Ollama&amp;quot;&lt;br /&gt;
[2]: https://huggingface.co/blog/ngxson/gguf-my-lora?utm_source=chatgpt.com &amp;quot;Introducing GGUF-my-LoRA&amp;quot;&lt;/div&gt;</summary>
		<author><name>Onnowpurbo</name></author>
	</entry>
</feed>