ข้ามไปยังเนื้อหา
KoishiAI
EN
← สารบัญ

บทที่ 3 จาก 5 · Fine-tune โมเดลภาษา — เมื่อไหร่ควรทำ ทำอย่างไร และรู้ได้อย่างไรว่าได้ผล

LoRA และ QLoRA ในทางปฏิบัติ: เลือกโมเดลฐานภาษาไทยและเครื่องมือ

LoRA เทรนเฉพาะเมทริกซ์เล็ก ๆ ที่เสียบเข้าไปในโมเดล QLoRA ทำแบบเดียวกันบนโมเดลที่บีบเป็น 4 บิต ทำให้ fine-tune ได้บนการ์ดจอใบเดียว บทนี้อธิบายหลักการ ข้อแลกเปลี่ยน โมเดลฐานภาษาไทยที่มีให้เลือกพร้อมไลเซนส์ และเครื่องมือรุ่นปัจจุบัน

พอมีข้อมูลแล้ว คำถามต่อไปคือจะเทรนอย่างไร การเทรนทุกพารามิเตอร์ของโมเดล (full fine-tuning) ต้องใช้หน่วยความจำมาก ทีมเล็กส่วนใหญ่จึงใช้ LoRA หรือ QLoRA

3.1 LoRA: ไม่แตะน้ำหนักเดิม เทรนแค่ส่วนเสริมเล็ก ๆ

งานวิจัย LoRA (2021) อธิบายว่าวิธีนี้ แช่แข็งน้ำหนักเดิมของโมเดล แล้วเสียบเมทริกซ์ขนาดเล็กที่เทรนได้เข้าไปในแต่ละชั้น ผลที่รายงานเมื่อเทียบกับการ fine-tune GPT-3 175B แบบเต็มด้วย Adam

  • จำนวนพารามิเตอร์ที่ต้องเทรน ลดลง 10,000 เท่า
  • หน่วยความจำ GPU ที่ต้องใช้ ลดลง 3 เท่า
  • ไม่เพิ่มเวลาตอบ เมื่อรวมส่วนเสริมเข้ากับโมเดลแล้ว (บทที่ 5)

ผลที่ได้จากการเทรนเรียกว่า adapter เป็นไฟล์เล็กที่ต้องใช้คู่กับโมเดลฐานตัวเดิมเสมอ

3.2 QLoRA: LoRA บนโมเดลที่บีบเป็น 4 บิต

งานวิจัย QLoRA (2023) นำโมเดลฐานมาบีบเป็น 4 บิตด้วยชนิดข้อมูลใหม่ชื่อ NF4 แล้วเทรน LoRA บนนั้น พร้อมเทคนิคประหยัดหน่วยความจำอีกสองอย่าง คือ double quantization และ paged optimizers ผลที่รายงานคือ fine-tune โมเดล 65B ได้บน GPU 48GB ใบเดียว โดยยังได้ผลงานเทียบเท่าการ fine-tune แบบ 16 บิต

3.3 ข้อแลกเปลี่ยน: LoRA เรียนน้อยกว่า แต่ลืมน้อยกว่า

งานวิจัยของ Biderman และคณะ (2024) เทียบ LoRA กับการเทรนเต็มในงานสองด้าน คือเขียนโปรแกรมและคณิตศาสตร์ ด้วยการตั้งค่า LoRA แบบมาตรฐาน และสรุปว่า LoRA ทำได้ด้อยกว่าการเทรนเต็มอย่างมาก ในงานเป้าหมาย แต่ รักษาความสามารถเดิมของโมเดลนอกงานเป้าหมายได้ดีกว่า

ผลกับงานของคุณอาจต่างจากนี้ สำหรับทีมเล็กที่อยากสอนงานเฉพาะ โดยไม่ให้โมเดลเสียความสามารถทั่วไป ข้อแลกเปลี่ยนนี้มักคุ้ม แต่ต้องวัดเสมอ (บทที่ 4)

3.4 เลือกโมเดลฐาน: ภาษาไทยและไลเซนส์

ตัวเลือกที่มีการ์ดโมเดลอย่างเป็นทางการ ข้อมูลจากหน้าการ์ดบน Hugging Face ณ วันที่ตรวจ

โมเดลสร้างต่อจากไลเซนส์ตามการ์ดหมายเหตุ
Typhoon 2.5 (typhoon-ai)Qwen3 ขนาด 4B และ 30B-A3BApache 2.0การ์ดลิงก์ไปที่ไฟล์ไลเซนส์ของ Qwen ควรอ่านทั้งคู่
Typhoon 2.1Gemma3 12B และ 4Bไลเซนส์ Gemmaข้อจำกัดของ Gemma ส่งต่อไปถึงโมเดลที่ดัดแปลง (บทที่ 5)
ThaiLLM-8BQwen3-8B-BaseApache 2.0เป็น base model ยังไม่ได้สอนให้ทำตามคำสั่ง การ์ดแนะนำ LLaMA-Factory สำหรับขั้นนี้
Pathumma (NECTEC) 4BThaiLLMApache 2.0ข้อมูลที่ใช้ post-train ไม่เปิดเผย
SEA-LION v4.8 (AI Singapore)NVIDIA Nemotron 3MITภาษาไทยเป็นหนึ่งใน 8 ภาษา โมเดลต้นทางของ NVIDIA ใช้ไลเซนส์แยก อ่านด้วย
OpenThaiGPT 1.6 72BQwen2.5-72B-Instructไลเซนส์ของ Qwenขนาดใหญ่ ต้องใช้ทรัพยากรมาก

ข้อควรรู้เรื่องไลเซนส์ของโมเดลที่เป็นฐานอีกชั้น

  • Qwen รุ่นล่าสุดไม่ได้เป็น Apache 2.0 ทุกตัว Qwen3.8-27B เป็น Apache 2.0 แต่ Qwen3.8-Flash-Next ใช้ Qwen Community License ซึ่งธุรกิจแบบให้บริการโมเดล (Model as a Service) หรือผู้ช่วยทำงานด้วย AI ต้องขอไลเซนส์แยก
  • Gemma 4 เป็น Apache 2.0 ส่วน Gemma รุ่นก่อนหน้าอยู่ภายใต้ Gemma Terms of Use
  • Llama 4 ต้องแสดง “Built with Llama” เมื่อเผยแพร่ โมเดลที่ fine-tune จาก Llama แล้วเผยแพร่ต้องมีชื่อขึ้นต้นด้วย “Llama” และต้องขอไลเซนส์แยกถ้าผู้ใช้เกิน 700 ล้านคนต่อเดือน ณ วันที่ Llama 4 ออก

เรื่อง tokenizer งานวิจัย Typhoon รุ่นแรก (2023) รายงานว่าการเพิ่มโทเคนภาษาไทย 5,000 ตัว ทำให้ tokenizer เข้ารหัสภาษาไทยได้มีประสิทธิภาพกว่าของ GPT-4 ถึง 2.62 เท่า แต่ Typhoon 2 ไม่ได้เพิ่มโทเคนแบบนั้นแล้ว ข้อนี้ไม่ได้บอกว่าแนวไหนถูก แต่บอกว่าจำนวนโทเคนของภาษาไทยต่างกันมากในแต่ละโมเดล และมีผลต่อความยาวข้อความที่ใส่ได้และค่าใช้จ่าย

3.5 เครื่องมือ (รุ่นล่าสุด ณ 25 กันยายน 2026)

เครื่องมือใช้ทำอะไรรุ่น
Transformersโหลดและรันโมเดล5.17.0
PEFTLoRA และวิธีเทรนแบบประหยัดอื่น ๆ0.21.0
TRLไลบรารีสำหรับเทรน รวม SFTTrainer สำหรับ fine-tune ด้วยตัวอย่าง1.13.0
bitsandbytesบีบโมเดลเป็น 4 และ 8 บิต (เบื้องหลัง QLoRA)0.50.2
Unslothเทรนเร็วขึ้นและใช้หน่วยความจำน้อยลง2026.9.11
Axolotlเทรนด้วยไฟล์ตั้งค่า0.19.0
LLaMA-Factoryเทรนได้หลายโมเดลจากที่เดียว0.9.5

เครื่องมือเหล่านี้ออกรุ่นใหม่บ่อย ชื่อพารามิเตอร์เปลี่ยนได้ระหว่างรุ่น ให้ดูตัวอย่างในเอกสารของรุ่นที่ติดตั้งจริง อย่าคัดลอกโค้ดจากบทความเก่า รวมถึงบทความนี้

3.6 ขั้นตอนโดยรวม

  1. เลือกโมเดลฐานที่ไลเซนส์ตรงกับการใช้งาน และรองรับภาษาไทยดีพอสำหรับงานของคุณ
  2. เตรียมข้อมูลเป็น messages แยกชุดเทรนกับชุดทดสอบ (บทที่ 4)
  3. โหลดโมเดลฐาน ถ้าหน่วยความจำไม่พอให้โหลดแบบ 4 บิตสำหรับ QLoRA
  4. ตั้งค่า LoRA ด้วย PEFT แล้วเทรนด้วย SFTTrainer ของ TRL ซึ่งใส่ chat template ให้เอง
  5. วัดผลกับชุดทดสอบ เทียบกับโมเดลฐานที่ใช้แค่ prompt
  6. รวม adapter เข้ากับโมเดล แล้วนำไปใช้ (บทที่ 5) ถ้าเทรนด้วย QLoRA ต้องโหลดโมเดลฐานแบบ 16 บิตใหม่ก่อนรวม

3.7 ตัวอย่างสมมติ: เลือกให้ตรงงาน

ร้านในบทก่อน ๆ ต้องการโมเดลจัดหมวดข้อความลูกค้าที่รันบนเครื่องเดียวในร้าน ข้อความเป็นภาษาไทยปนอังกฤษ และจะใช้เชิงพาณิชย์

ทางเลือกที่สมเหตุสมผลคือโมเดลขนาดเล็กที่ไลเซนส์อนุญาตให้ใช้เชิงพาณิชย์ และมีรุ่นที่สอนให้ทำตามคำสั่งภาษาไทยมาแล้ว เช่น Typhoon 2.5 รุ่น 4B ในตารางหัวข้อ 3.4 แล้วใช้ QLoRA เทรน การเลือกโมเดล 72B เพราะ “ใหญ่กว่าน่าจะดีกว่า” จะทำให้ต้นทุนการรันสูงเกินงานจัดหมวดที่มีคำตอบเพียงไม่กี่แบบ

3.8 ลงมือหลังอ่านบทนี้

  • จดสามข้อของโมเดลฐานที่เลือก: สร้างต่อจากอะไร ไลเซนส์อะไร และไลเซนส์ของโมเดลต้นทางอีกชั้นคืออะไร
  • ติดตั้งเครื่องมือรุ่นปัจจุบัน แล้วเปิดตัวอย่างในเอกสารของรุ่นนั้น
  • ลองเทรนกับข้อมูลชุดเล็กก่อน เพื่อให้แน่ใจว่าขั้นตอนทั้งหมดทำงาน แล้วค่อยใช้ข้อมูลเต็ม

บทถัดไปว่าด้วยการวัดว่าโมเดลที่เทรนแล้วดีขึ้นจริง และไม่ได้เสียอะไรไป

แหล่งอ้างอิง