ฝึกรุ่นปรับ (Fine-tune) Local LLM ด้วย LoRA: สอน AI ส่วนตัวให้ทำงานตามสไตล์คุณแบบออฟไลน์ 100% ด้วย Ollama
แทนที่จะบอกให้ AI จำเป็น Prompt ซ้ำ ๆ ทุกครั้ง ลอง 'ฝึก' โมเดลในเครื่องของคุณเองให้เข้าใจสไตล์การเขียน งาน และบริบทส่วนตัวของคุณด้วยเทคนิค LoRA แบบออฟไลน์ 100% ด้วย Ollama
ถ้าใช้ Local LLM อยู่ทุกวันแล้วเคยพบว่าตัวเองต้องพิมพ์ Prompt ยาว ๆ ซ้ำแล้วซ้ำเล่า เพื่อให้ AI ออกมาเป็นตามต้องการ — ไม่ว่าจะเป็นสไตล์การเขียนภาษาไทยขององค์กร, รูปแบบการสรุปโน้ต, หรือการตอบในโทนเฉพาะทางที่โมเดลทั่วไปยังไม่เข้าใจดี — ถึงเวลาแล้วที่จะเปลี่ยนจาก การขอร้อง (Prompting) ให้กลายเป็น การฝึก (Fine-tuning)
วันนี้เราจะมาฝึกโมเดลในเครื่องของคุณให้ "เข้าใจงานของคุณ" เป็นนิสัย ด้วยเทคนิค LORA (Low-Rank Adaptation) ที่ไม่ต้องเทรนทั้งโมเดล ใช้ VRAM น้อยมาก และ ทำงานบนเครื่องของคุณแบบออฟไลน์ 100%
ทำไมต้อง Fine-tune แทนการเขียน Prompt ธรรมดา
Fine-tuning คือกระบวนการนำข้อมูลตัวอย่าง (Dataset) ของคุณไปปรับ "หัว" ของโมเดลที่มีอยู่แล้ว ให้ตอบในรูปแบบที่คุณต้องการแบบอัตโนมัติ โดยไม่ต้องพึ่ง Prompt ยาว ๆ ทุกครั้ง
LoRA (Low-Rank Adaptation) คือเทคนิคที่ช่วย ลดต้นทุนการ Fine-tune ให้เหลือเพียงเศษเสี้ยวของวิธีดั้งเดิม แทนที่จะเทรน (แก้) พารามิเตอร์ทั้งก้อน ของโมเดล 10B-พารามิเตอร์ คุณฝึกแค่ "Adapter" ขนาดเล็กจิ๋ว ที่ต่อพ่วงเข้าไปข้างนอก — ทำให้การ์ดจอตัวเล็ก (12GB เช่น RTX 3060) ก็ยังฝึกโมเดล 7B ได้อยู่
ข้อดีของ LoRA + Local: * ใช้ VRAM น้อย: ฝึก Adapter ขนาด ~100MB-2GB เทียบกับโมเดลหลัก 7GB-14GB ที่ถูก "ฟรีซ" (ฟอสซิล) ไว้ * ไม่แตะตัวโมเดลหลัก: ไฟล์โมเดลเดิมยังใช้กับงานอื่นได้ตามปกติ * สลับสไตล์ได้ง่าย: ฝึก Adapter สำหรับ "โน้ตองค์กร" หนึ่งอัน อีกอันสำหรับ "สรุปงาน" แล้วสลับไปมาได้ทันที
ประโยชน์ทาง Privacy ของ Local Fine-tuning
นี่คือจุดเด่นที่สำคัญที่สุด — หากคุณต้องการสอน AI ให้เขียนตาม สไตล์เฉพาะขององค์กรคุณ โดยใช้ตัวอย่างจากอีเมลภายใน, โน้ตโปรเจกต์, หรือเอกสารที่เป็นความลับ:
- การ Fine-tune บนคลาวด์ (เช่น GPT, Claude API) = ต้อง ส่งข้อมูลความลับนั้นออกนอกเครื่อง ไปยังเซิร์ฟเวอร์ของผู้ให้บริการ (ซึ่งอาจมีนโยบายเก็บข้อมูลหรือใช้เพื่อเทรนโมเดลต่อไป แม้จะเลือกปิดบางตัวเลือกก็ยังเสี่ยง)
- การ Fine-tune บนเครื่องคุณ + LoRA = ข้อมูล ไม่เคยออกจากเครื่องเลยแม้แต่ไบต์เดียว — GPU ของคุณคำนวณ Gradient ทุกอย่างเอง ไฟล์ Adapter ที่ออกมา (ขนาดประมาณ 100MB-1GB) เป็นของคุณ 100% ลบได้เมื่อไหร่ก็ได้
5 ขั้นตอนฝึก Local LLM ด้วย LoRA
1. เตรียม Dataset (100–2,000 ตัวอย่าง)
Dataset ที่ดีคือ ตัวอย่าง Input → Output จำนวนมากที่สอดคล้องกับงานของคุณ (เช่น 200 ตัวอย่าง "อีเมลลูกค้า → ร่างอีเมลตอบกลับตามสไตล์บริษัท")
รูปแบบ JSONL ที่ใช้กับ Trainer ส่วนใหญ่:
{"prompt": "ลูกค้าถามว่างานจัดส่งเมื่อไหร่", "completion": "สวัสดีค่ะ งานของคุณได้รับแล้วและอยู่ระหว่างการจัดส่ง..."}
{"prompt": "ลูกค้าแจ้งว่าสินค้าได้รับล่าช้า", "completion": "ขออภัยในความไม่สะดวก..."}
สำคัญที่สุด: ความสม่ำเสมอของ Output สำคัญกว่าปริมาณ จำนวนมากแต่ไม่สม่ำเสมอทำให้โมเดล "สับสน" ได้
2. เลือกโมเดลฐาน (Base Model) เลือกตาม VRAM
อ้างอิงแนวทางในบทความ "สเปกคอมเท่านี้ รันโมเดลไหนไหว":
- VRAM ~8GB: Llama-3.2-1B หรือ Phi-3 (3.8B) — เหมาะกับการ "ปรับโทน" หรืองานเบา
- VRAM ~12GB (RTX 3060/4070): Mistral-7B หรือ Llama-3.1-8B — จุดสมดุลที่ดีที่สุดสำหรับงานส่วนใหญ่
- VRAM ~16GB+: Qwen-7B / 14B หรือ Mistral-7B ที่ rank สูง
ใช้ ollama pull <model-name> เพื่อดึงโมเดลฐานลงเครื่อง
3. ฝึก LoRA ด้วย Trainer ออฟไลน์
Unsloth หรือ LLaMA-Factory เป็นทางเลือกยอดนิยมสำหรับ Local Fine-tuning LoRA — ทั้งคู่รันบน GPU ของคุณได้โดยตรง ทำงานแบบ batch/offline ไม่ต้องส่งอะไรออกอินเทอร์เน็ต
Parameter ที่แนะนำสำหรับเริ่มต้น:
- LoRA rank (r): 16–64 (สูงขึ้น = ฝึกได้ลึกขึ้น ใช้ VRAM นิ่งขึ้น/ช้าลง)
- Learning rate:
1e-4หรือ5e-5(ถ้าผลลัพธ์ "เละ" ให้ลดครึ่งหนึ่ง) - Epochs: 2–5 (มากเกิน = Overfitting — โมเดลจำตัวอย่างแต่ไม่ได้ "เข้าใจ")
- Batch size: ปรับให้พอดีกับ VRAM ของคุณ (ใช้ Gradient Accumulation หากจำเป็น)
4. Export Adapter เป็น GGUF
เมื่อฝึกเสร็จ (คุณจะได้ไฟล์ Adapter ขนาด ~100MB-1GB) ให้แปลงเป็น GGUF (รูปแบบที่ Ollama อ่านได้) โดยผ่าน Trainer เดิม เช่น Unsloth จะรองรับการ export To GGUF Adapter ในตัว
⚠️ Adapter ≠ โมเดลเต็ม — Ollama ยังต้อง "โหลดโมเดลฐาน + Adapter" พร้อมกันเสมอ Adapter เป็นเพียง "ส่วนเสริม" ที่ทำให้โมเดลตอบดีขึ้นสำหรับงานเฉพาะของคุณ
5. ประกอบเข้า Ollama ด้วย Modelfile
สร้างไฟล์ Modelfine (หรือไฟล์ใหม่ตามชื่อ) สำหรับ Ollama:
FROM mistral:7b
ADAPTER my_lora_adapter.gguf
PARAMETER temperature 0.7
SYSTEM "คุณคือผู้ช่วยเขียนอีเมลตามสไตล์องค์กร"
แล้วรัน:
OLLAMA_HOST=127.0.0.1:11434 ollama create my-org-tuned -f Modelfine
ollama run my-org-tuned "ลูกค้าถามเรื่องการจัดส่งเมื่อไหร่"
จากนี้ ทุกครั้งที่รัน my-org-tuned โมเดลจะตอบตามสไตล์ที่คุณฝึกไว้ — โดยไม่ต้องพิมพ์ Prompt ยาวทุกครั้ง
ระวัง 3 ข้อ ก่อนตัดสินใจ Fine-tune
- โมเดลหลักไม่ได้โง่ — ถ้า Prompt 3-5 บรรทัดได้ผลดีอยู่แล้ว (เช่น Modelfile + Persona) ไม่ต้อง Fine-tune มันใช้ทรัพยากรมากกว่าและฝึกยากกว่า
- Overfitting เป็นกับดักยอดนิยม: Dataset 50 ตัวอย่าง → ฝึก 10 epoch = โมเดลจะ "จำ" 50 ตัวอย่างนั้น แต่เจอกรณีใหม่แล้วตอบ "พัง" — ทดสอบกับกรณีที่คุณ ไม่ได้ ใส่ใน Dataset เสมอ
- ข้อมูลคุณภาพต่ำ = ผลลัพธ์ทุกระดับ: Garbage In, Garbage Out — ทบทวน Dataset 2-3 รอบก่อนกดเริ่มฝึก
สรุป
LoRA Fine-tuning บน Local LLM คือเครื่องมือที่ทรงพลังสำหรับคนที่ต้องการให้ AI "พูดภาษาเดียวกับองค์กรคุณ" โดยไม่ต้องพึ่ง Prompt ยาว ๆ และไม่ต้องเสี่ยงส่งข้อมูลความลับไปคลาวด์ — เมื่อประกอบกับ Ollama คุณจะได้ โมเดล AI ของคุณคนเดียว ที่เข้าใจงานของคุณดีที่สุด โดยที่ ไม่มีใครเลย (รวมบริษัท AI ด้วย) รู้ว่าคุณเทรนอะไรไว้ข้างในเครื่องคุณ
นี่คือแก่นของ Private Brain OS — AI ที่ไม่เพียงแต่ "คิด" แต่ "คิด" ด้วยวิธีที่คุณต้องการ