การออกแบบ Pipeline ข้อมูลสังเคราะห์สำหรับภาษาเปอร์เซีย
การฝึกฝน LLM ไม่ใช่เรื่องของการขยายขนาดโมเดลอีกต่อไป แต่เป็นเรื่องของการขยายคุณภาพของข้อมูล
ชุดข้อมูลภาษาเปอร์เซียส่วนใหญ่ขาดโครงสร้าง ซึ่งทำให้โมเดลล้มเหลวในการปฏิบัติตามคำสั่ง ปัญหาคือความขาดแคลนของข้อมูล ไม่ใช่ขนาดของโมเดล
ผมได้สร้าง pipeline ขึ้นมาเพื่อแก้ปัญหานี้ โดยเริ่มตั้งแต่การสร้าง topic graphs ไปจนถึงการทำ QLoRA fine tuning
กระบวนการของ Pipeline:
- การสร้าง Topic Tree
- การสร้างข้อมูลด้วย LLM
- การกำจัดข้อมูลซ้ำ (Deduplication)
- การให้คะแนนคุณภาพ
- การส่งออกชุดข้อมูล
- การทำ QLoRA Fine Tuning
- การประเมินผล
กฎหลักในการออกแบบ:
- 51 โดเมน เพื่อให้มั่นใจว่าครอบคลุมเนื้อหาอย่างสมดุล
- การทำ Semantic deduplication เพื่อกำจัดแนวคิดที่ซ้ำซ้อน
- การสร้างข้อมูลด้วยหลายโมเดลโดยใช้ GPT models เพื่อลดอคติ (bias)
- ใช้ Qwen2.5 3B Instruct สำหรับการ fine tuning ขั้นสุดท้าย
การทำงานของ Data Engine: ผมใช้โมเดลหลายตัวเพื่อสร้างความหลากหลาย โดย GPT models จะช่วยในเรื่องการใช้เหตุผลและความหลากหลาย ซึ่งช่วยให้ต้นทุนต่ำแต่ได้ความหลากหลายสูง
ผมใช้ semantic filtering เพื่อทำความสะอาดข้อมูล หากคำสั่งสองคำสั่งมี similarity score สูงกว่า 0.75 ผมจะลบออกหนึ่งรายการ เพื่อป้องกันไม่ให้โมเดลเกิดการ overfitting กับรูปแบบเดิมๆ
ผมใช้ LLM เป็น judge เพื่อให้คะแนนคุณภาพ โดยตรวจสอบในด้าน:
- ความลื่นไหล (Fluency)
- ความเกี่ยวข้อง (Relevance)
- ความครบถ้วน (Completeness)
เฉพาะข้อมูลที่มีคะแนนตั้งแต่ 3.5 ขึ้นไปเท่านั้นที่จะถูกเก็บไว้ในชุดข้อมูล
ผลลัพธ์การ Fine Tuning: ผมใช้ QLoRA กับโมเดล Qwen2.5 3B Instruct ผ่าน Google Colab โดย QLoRA จะฝึกฝนเฉพาะ adapters ขนาดเล็กแทนที่จะเป็น weights ทั้งหมด ซึ่งช่วยประหยัดหน่วยความจำในขณะที่ยังรักษาประสิทธิภาพไว้ได้สูง
ผลลัพธ์แสดงให้เห็นถึงความแตกต่างอย่างมหาศาล:
- base model มักจะเปลี่ยนไปใช้ภาษาอาหรับ
- โมเดลที่ผ่านการ fine tuned แล้วสามารถพูดภาษาเปอร์เซียได้อย่างลื่นไหลและสม่ำเสมอ
บทเรียนสำคัญนั้นชัดเจน: Data engineering สำคัญกว่าการขยายขนาดโมเดล คุณภาพของข้อมูลคือคอขวดหลัก
ข้อมูลเชิงลึกที่สำคัญ (Key Insights):
- การกรองแบบสองชั้น (Dual filtering) เป็นสิ่งจำเป็นสำหรับข้อมูลที่สะอาด
- topic graphs ที่มีโครงสร้างทำงานได้ดีกว่าการใช้ prompt แบบอิสระ
- LLM judge เป็นส่วนสำคัญของระบบ
ระบบนี้เป็น engine ที่สมบูรณ์สำหรับการทำ LLM alignment สำหรับภาษาที่มีทรัพยากรจำกัด (low resource)
ชุมชนการเรียนรู้เพิ่มเติม: https://t.me/GyaanSetuAi
