[LLM 1/10] Continue Pretraining: สอนความรู้ใหม่ให้ LLM ภาษาไทย
โมเดลภาษาขนาดใหญ่ที่เก่งภาษาไทยระดับหนึ่ง มักจะ "ไม่รู้จัก" ความรู้เฉพาะทางขององค์กรคุณเลย — ไม่รู้ระเบียบราชการไทย ไม่รู้ศัพท์เฉพาะในวงการของคุณ ไม่รู้เอกสารภายในบริษัท บทความนี้จะสอนวิธีแก้ที่ตรงที่สุด คือ Continue Pretraining (CPT) ตั้งแต่สมการ ไปจนถึงโค้ดที่รันจบได้จริงบน Colab ฟรีภายในราว 15 นาที
Open in Colab01_continue_pretraining.ipynb
1. ปัญหา (Problem statement)
ลองนึกภาพว่าคุณเอา Qwen3-0.6B มาถามว่า "ตามระเบียบสำนักนายกรัฐมนตรี การจัดซื้อจัดจ้างโดยวิธีเฉพาะเจาะจงทำได้เมื่อใด" โมเดลจะตอบได้อย่างมั่นใจ และตอบผิด เพราะมันไม่เคยเห็นเอกสารราชการไทยมากพอ
หลายคนพยายามแก้ด้วยการทำ fine-tuning ด้วยคู่ถาม-ตอบไม่กี่พันตัวอย่าง แล้วพบว่าไม่ได้ผล เหตุผลคือ SFT สอน "รูปแบบการตอบ" ไม่ได้สอน "ความรู้" ถ้าโมเดลไม่เคยมีความรู้นั้นอยู่ในน้ำหนัก (weights) การสอนให้มันตอบด้วยน้ำเสียงที่ถูกต้องก็แค่ทำให้มันมั่นใจเวลาโกหกเท่านั้น
ความรู้ใหม่เข้าสู่โมเดลได้ 3 ทาง และเลือกผิดคือสาเหตุที่โปรเจกต์ LLM ส่วนใหญ่ล้มเหลว:
| วิธี | เหมาะกับ | ต้นทุนตอนใช้งาน |
|---|---|---|
| RAG | ความรู้ที่เปลี่ยนบ่อย ต้องอ้างอิงแหล่งที่มา | ค้นทุกครั้ง + prompt ยาว |
| Continue Pretraining | ความรู้เฉพาะทางจำนวนมาก ที่ค่อนข้างนิ่ง | ไม่มี (อยู่ในน้ำหนักแล้ว) |
| SFT | รูปแบบ น้ำเสียง โครงสร้างคำตอบ | ไม่มี |
บทความนี้คือทางที่สอง
2. เราจะทำอะไร (Solution)
เราจะเอาโมเดล base (ยังไม่ผ่าน instruction tuning) มาเทรนต่อด้วย objective เดียวกับตอน pretrain เป๊ะ ๆ คือทายคำถัดไป บนข้อความดิบภาษาไทยในโดเมนที่เราสนใจ ไม่มี label ไม่มีคู่ถาม-ตอบ มีแค่ข้อความล้วน ๆ
แต่หัวใจของบทความนี้ไม่ใช่ "เทรนแล้วเก่งขึ้น" — มันคือสิ่งที่แลกมา:
CPT ซื้อความแม่นในโดเมน ด้วยการจ่ายความสามารถทั่วไปที่หายไป มันคือการแลกเปลี่ยน ไม่ใช่ของฟรี และ "อัตราแลกเปลี่ยน" ถูกควบคุมด้วยตัวเลขตัวเดียวชื่อ replay ratio
ปรากฏการณ์ที่โมเดลลืมสิ่งที่เคยทำได้ เรียกว่า catastrophic forgetting เราจะไม่พูดลอย ๆ แต่จะวัดมันออกมาเป็นตัวเลข แล้วหาจุดที่ยอมรับได้
3. สมการ (Equation)
3.1 Objective ของ CPT
- = token ตำแหน่งที่
- = token ทั้งหมดก่อนหน้า
- = ความน่าจะเป็นที่โมเดลทำนาย
สมการนี้เหมือนกับตอน pretrain ทุกประการ สิ่งเดียวที่เปลี่ยนคือข้อมูล นี่คือเหตุผลที่ CPT ไม่ต้องการ label — ข้อความเองคือเฉลย
3.2 Perplexity: หน่วยวัดของเรา
แปลเป็นภาษาคน: "โดยเฉลี่ยแล้ว โมเดลกำลังลังเลอยู่ระหว่างกี่ตัวเลือก" PPL = 20 คือลังเลประมาณ 20 คำ, PPL = 5 คือมั่นใจกว่ามาก ยิ่งต่ำยิ่งดี
3.3 สมการที่สำคัญที่สุดในบทนี้ — Replay Mixing
คือสัดส่วนข้อมูลโดเมนในแต่ละ batch
- → ข้อมูลโดเมนล้วน → เก่งโดเมนเร็วที่สุด และลืมเร็วที่สุด
- → ผสมครึ่งต่อครึ่ง → ช้ากว่าแต่ลืมน้อยกว่ามาก
อย่า hardcode ค่านี้ จงกวาดหาค่ามัน แล้วเลือกจุดที่คุณยอมรับได้
บทความนี้คือประมาณ 30% แรกของบทเรียน — ส่วนที่เหลือ (การเตรียมสภาพแวดล้อม, การเตรียมข้อมูล, โค้ดหลัก, ผลลัพธ์จริง และบทสรุป) อยู่ในคอร์ส LLM Finetuning ซึ่งเรียนฟรี เพียงเข้าสู่ระบบด้วย Google
อ่านเนื้อหาเต็มในคอร์ส →