ช่วงนี้ผมได้ลองทำ SFT และ LoRA fine-tuning กับโมเดลขนาดเล็กของ Gemma 3 สำหรับโดเมนแนะนำภาพยนตร์ ระหว่างการทดลอง ผมรู้สึกถึงข้อจำกัดบางอย่างของความสามารถในการเรียนรู้ความรู้ของโมเดลขนาดเล็ก (SLM) จึงขอตั้งคำถามนี้ครับ
[การทดลอง]
- โมเดลที่ใช้: gemma-3-270m-it, gemma-3-1b-it
- วิธีฝึก: LoRA และ SFT
- ผลการทดลอง: โมเดล 1B ยังพออนุมานได้ในระดับหนึ่งจากความรู้เดิมที่มีอยู่ แต่สำหรับโมเดล 270M ผมรู้สึกว่าด้วยข้อจำกัดด้านจำนวนพารามิเตอร์ ทำให้ตัว "ภาชนะ" สำหรับรองรับความรู้โดเมนใหม่มีไม่เพียงพอตั้งแต่ต้น
ผมได้บันทึกกระบวนการจูนทั้งหมดไว้เป็นหลายโพสต์ในบล็อกด้านล่างนี้
https://seungsang.tistory.com/entry/…
[ปัญหาที่เผชิญ]
- ข้อจำกัดด้านขนาดของ LoRA: เนื่องจากพารามิเตอร์ที่ฝึกมีเพียงราว 1% ของทั้งหมด จึงมีข้อจำกัดเมื่อจะก้าวข้ามการปรับตัวให้เข้ากับงาน (Task Adaptation) แบบง่าย ๆ ไปสู่การอัดฉีดความรู้ (Knowledge Injection)
- ความกังวลเรื่องการจูนทั้งโมเดล (Full Fine-tuning): หากอัปเดตน้ำหนักทั้งหมดของโมเดล แม้จะเอื้อต่อการอัดฉีดความรู้ แต่ผมคิดว่าความสามารถในการให้เหตุผล (Reasoning) แบบทั่วไปที่มีอยู่เดิมอาจสูญหายไป แม้อยากผสมข้อมูล Replay เพื่อป้องกันเรื่องนี้ แต่ก็ทำได้ยากเพราะข้อมูลที่ใช้ฝึกของเบสโมเดลไม่ได้เปิดเผย
ในกรณีของภาพยนตร์ ผมคิดว่าที่ฟাইনจูนได้เป็นเพราะตัวโมเดลมีความรู้อยู่แล้ว
แต่ถ้าผมอยากทำบนพื้นฐานของโดเมนเฉพาะจริง ๆ ควรทำอย่างไรดีครับ?
ถ้าต้องการทำให้โมเดลขนาดเล็กเชี่ยวชาญในโดเมนเฉพาะ มีกลยุทธ์อะไรบ้างที่จะช่วยก้าวข้ามข้อจำกัดของขนาดพารามิเตอร์ที่ไม่มาก และอัดฉีดความรู้โดเมนได้อย่างมีประสิทธิภาพ?
รบกวนขอคำแนะนำจากทุกท่านด้วยครับ หากมีประสบการณ์หลากหลาย เช่น CPT (Continue Pre-training) ก็ยินดีมากหากช่วยแชร์กัน
5 ความคิดเห็น
ผมก็เคยลองปรับจูนด้วย 7B แล้วมันไม่ค่อยเวิร์กจนแทบจะเป็นบ้าเหมือนกัน PTSD กลับมาเลย
ตอนนี้ยังทำอยู่ไหม?
มีข้อสังเกตหรือทิปที่ได้จากการลองทำบ้างไหม?
LoRA และการปรับจูนละเอียดไม่เหมาะกับการอัดฉีดความรู้ LoRA และการปรับจูนละเอียดเหมาะที่สุดสำหรับการปรับแก้สไตล์/โทนของผลลัพธ์ ควรใส่ข้อมูลความรู้ไว้ในพรอมป์ต์อินพุตในรูปแบบ RAG แล้วประเมิน recall/ความแม่นยำของข้อมูลเอาต์พุตก่อน จากนั้นค่อยทำ LoRA/การปรับจูนละเอียด จะมีประสิทธิภาพกว่ามาก
ผมก็ขอร่วมสนับสนุนการใช้ RAG อีกหนึ่งเสียงครับ
ขอบคุณสำหรับคำตอบครับ
ถ้าเป็น RAG ผมก็ยังลังเลอยู่นิดหน่อยว่าจะดึงข้อมูลที่เกี่ยวกับโดเมนมาได้อย่างเหมาะสมอย่างไร
ควรต้องฝึกตัวโมเดล embedding เองด้วยหรือเปล่า...
ผมอยากลดจำนวนโทเค็นของโมเดลขนาดเล็กด้วย เลยอยากทำให้ความรู้ถูกฝังอยู่ในตัวโมเดล แต่ดูเหมือนว่าแค่ LoRA อย่างเดียวคงมีข้อจำกัดสินะครับ
ผมจะลองนำสิ่งที่คุณพูดไปคิดดูครับ ขอบคุณครับ