Model Merge คืออะไร? เทคนิคเพิ่มประสิทธิภาพ LLM โดยรวมโมเดลเข้าด้วยกันโดยไม่ต้องเทรนใหม่

Model Merge คือเทคนิคการรวมน้ำหนักของ Large Language Model (LLM) หลายโมเดลเข้าด้วยกันโดยไม่ต้องทำการฝึกฝนใหม่ เพื่อยกระดับประสิทธิภาพของโมเดลเดียว เนื่องจากสามารถรวมความสามารถที่แตกต่างกันเข้าไว้ในโมเดลเดียวได้โดยไม่ต้องเสียค่าใช้จ่ายด้าน GPU หรือเสียเวลาในการฝึกฝนใหม่ จึงได้รับความสนใจในฐานะทางเลือกใหม่สำหรับการปรับแต่ง LLM ในบทความนี้จะอธิบายอย่างเป็นระบบตั้งแต่กลไกของ Model Merge วิธีการที่เป็นที่นิยม ไปจนถึงวิธีการนำไปใช้งานจริง เพื่อให้วิศวกรและผู้รับผิดชอบด้าน Machine Learning สามารถเข้าใจและนำไปประยุกต์ใช้ได้ทันที
Model Merge คือเทคนิคการรวมค่า Weight parameter ของ LLM (Large Language Model) ที่ผ่านการ Fine-tuning มาแล้วหลายโมเดลเข้าด้วยกันทางคณิตศาสตร์ เพื่อยกระดับความสามารถของโมเดลเดียวโดยไม่ต้องผ่านการฝึกฝนเพิ่มเติม (Additional training)
จุดเด่นที่สุดคือการรวมทักษะที่แตกต่างกันให้กลายเป็นโมเดลเดียวได้โดยแทบไม่ต้องเสียค่าใช้จ่ายด้าน GPU ทำให้เทคนิคนี้ได้รับความสนใจทั้งในด้านการวิจัยและการใช้งานจริงในฐานะทางเลือกใหม่สำหรับการปรับแต่ง LLM โดยเริ่มจากวิธีการอย่าง Task Arithmetic ที่ประกาศในช่วงปลายปี 2022 ตามมาด้วยอัลกอริทึมอย่าง TIES และ DARE ที่ทยอยเปิดตัวออกมา และกำลังแพร่หลายอย่างรวดเร็วโดยเฉพาะในกลุ่มชุมชน Open-weight model
บทความนี้จะอธิบายอย่างเป็นระบบตั้งแต่แนวคิดพื้นฐานของ Model Merge, ภูมิหลังทางทฤษฎี, การเปรียบเทียบวิธีการที่สำคัญ, วิธีการใช้งาน MergeKit ซึ่งเป็นเครื่องมือสำหรับการปฏิบัติจริง ไปจนถึงสถานการณ์การใช้งานและข้อควรระวัง โดยมุ่งหวังให้วิศวกรและผู้รับผิดชอบด้าน Machine Learning สามารถนำไปทดลองใช้ได้ทันทีหลังจากอ่านจบ
บทสรุป: Model Merge คือเทคนิคการนำค่าน้ำหนัก (Weights) ของ LLM หลายโมเดลมาผสมผสานกันทางคณิตศาสตร์เพื่อสร้างเป็นโมเดลเดียว โดยมีจุดเด่นสำคัญคือไม่จำเป็นต้องทำการเรียนรู้เพิ่มเติม (Additional Training)
เราจะมาสรุปแนวคิดพื้นฐานของ Model Merge ความแตกต่างจาก Fine-tuning และเบื้องหลังที่ทำให้เทคนิคนี้ได้รับความสนใจตามลำดับดังนี้
"การรวมน้ำหนัก" (Weight Merging) ของโมเดลหมายความว่าอย่างไร
เมื่อได้ยินคำว่า "Model Merge" เป็นครั้งแรก หลายคนมักจินตนาการว่าเป็นการนำข้อความที่ได้จากโมเดลมาผสมกัน แต่ในความเป็นจริง สิ่งที่เกิดขึ้นคือการนำ พารามิเตอร์ (น้ำหนัก/Weights) ของโมเดลมาคำนวณรวมหรือทำ Interpolation ในเชิงตัวเลข
LLM (Large Language Model) คือกลุ่มของเมทริกซ์น้ำหนักที่ประกอบด้วยตัวเลขทศนิยมหลายพันล้านถึงหลายหมื่นล้านตัว โมเดลที่ผ่านการ Fine-tuning มาแล้วจะฝังความรู้เฉพาะทางเกี่ยวกับงานนั้นๆ ไว้ในตัวเลขเหล่านี้ Model Merge จึงเป็นเทคนิคที่นำเมทริกซ์น้ำหนักของหลายโมเดลมาคำนวณแบบ Element-wise เพื่อรวมให้เป็นเมทริกซ์น้ำหนักชุดใหม่เพียงชุดเดียว
เพื่อให้เห็นภาพชัดเจนขึ้น ขอยกตัวอย่างวิธีที่พื้นฐานที่สุดคือ Weighted Average (ค่าเฉลี่ยถ่วงน้ำหนัก):
- เมทริกซ์น้ำหนักของโมเดล A:
W_A - เมทริกซ์น้ำหนักของโมเดล B:
W_B - น้ำหนักหลังการ Merge:
α × W_A + (1−α) × W_B
เพียงแค่การคำนวณนี้ ก็มีความเป็นไปได้ที่จะรวมความสามารถด้านภาษาญี่ปุ่นของโมเดล A และความสามารถด้านการเขียนโค้ดของโมเดล B เข้าไว้ในโมเดลเดียว
มีข้อกำหนดเบื้องต้นที่สำคัญประการหนึ่งคือ การจะรวมโมเดลเข้าด้วยกันได้นั้นจำกัดอยู่เพียง โมเดลที่มาจาก Base Model (Foundation Model) เดียวกันเท่านั้น เนื่องจากโมเดลที่มีสถาปัตยกรรมต่างกันจะมีมิติของเมทริกซ์น้ำหนักไม่ตรงกัน จึงไม่สามารถนำมาคำนวณโดยตรงได้ การที่โมเดลมีจุดเริ่มต้นจาก Base เดียวกันนี่เองที่ทำให้ "ตำแหน่งเชิงความหมาย" ของน้ำหนักตรงกัน ซึ่งเป็นโครงสร้างที่ช่วยให้การคำนวณรวมกันแล้วโมเดลไม่พังเสียหายได้ง่าย
ความแตกต่างจาก Fine-tuning และ Knowledge Distillation
การรวมโมเดล (Model Merge) มักถูกสับสนกับวิธีการอื่นที่มีจุดประสงค์คล้ายคลึงกัน แต่แนวทางนั้นแตกต่างกันโดยสิ้นเชิง
สรุปความแตกต่างหลักได้ดังนี้:
- การปรับจูนละเอียด (Fine-tuning): ใช้ข้อมูลเพิ่มเติมเพื่อฝึกฝนน้ำหนักของโมเดลใหม่ มีค่าใช้จ่ายในการคำนวณด้วย GPU และจำเป็นต้องเตรียมชุดข้อมูลใหม่
- การกลั่นความรู้ (Knowledge Distillation): ใช้การกระจายผลลัพธ์ของโมเดลครูขนาดใหญ่เพื่อฝึกฝนโมเดลนักเรียนขนาดเล็ก จุดประสงค์หลักคือการลดต้นทุนในการอนุมาน (Inference) ซึ่งยังคงต้องผ่านกระบวนการเรียนรู้
- การรวมโมเดล (Model Merge): เป็นเพียงการรวมน้ำหนักที่มีอยู่เข้าด้วยกันทางคณิตศาสตร์ โดยไม่มีการเรียนรู้เพิ่มเติมใดๆ ทั้งสิ้น ไม่จำเป็นต้องใช้ชุดข้อมูลหรือการฝึกฝนด้วย GPU ใหม่
เกณฑ์ในการตัดสินใจคือ หากเป้าหมายคือการปรับตัวเข้ากับงานใหม่หรือเพิ่มความแม่นยำในโดเมนเฉพาะ การปรับจูนละเอียดจะเหมาะสมกว่า และหากลำดับความสำคัญคือการทำให้โมเดลมีขนาดเล็กลงหรือลดต้นทุนในการปรับใช้ การกลั่นความรู้จะมีประสิทธิภาพมากกว่า ในทางกลับกัน หากคุณมีโมเดลที่ผ่านการปรับจูนละเอียดมาแล้วหลายตัวและต้องการรวมความสามารถของโมเดลเหล่านั้นเข้าด้วยกัน การรวมโมเดลจะเป็นทางเลือกที่มีต้นทุนต่ำที่สุด
เพื่อให้เห็นภาพชัดเจนขึ้น เช่น หลังจากปรับจูนละเอียด "โมเดลที่เก่งด้านการเขียนโค้ด" และ "โมเดลที่เก่งด้านหลายภาษา" แยกกันแล้ว คุณสามารถรวมน้ำหนักของทั้งสองโมเดลเข้าด้วยกันเพื่อสร้างโมเดลเดียวที่มีความสามารถทั้งสองอย่าง ซึ่งเป็นแนวทางที่ทำได้ยากหากใช้วิธีการฝึกฝนใหม่
อย่างไรก็ตาม การรวมโมเดลจะมีประสิทธิภาพสูงเมื่อใช้โมเดลฐานเดียวกัน และไม่สามารถนำไปใช้กับโมเดลที่มีสถาปัตยกรรมแตกต่างกันได้
เบื้องหลังและความเป็นมาที่ทำให้ Model Merge ได้รับความสนใจ
"ต้องการสร้างโมเดลที่มีความสามารถหลากหลายโดยควบคุมต้นทุน GPU แต่การเรียนรู้ใหม่ (Retraining) นั้นไม่สมเหตุสมผล" — เชื่อว่าวิศวกรหลายคนคงเคยรู้สึกเช่นนี้ ซึ่ง Model Merging ได้ก้าวเข้ามาตอบโจทย์ความท้าทายดังกล่าวโดยเฉพาะ
เบื้องหลังความสนใจที่เพิ่มขึ้นนี้มาจากกระแสหลัก 3 ประการ:
- การแพร่หลายของ Open-weight models: การเปิดเผย Open-weight models อย่างตระกูล LLaMA ทำให้เกิดโมเดลอนุพันธ์ที่ผ่านการ Fine-tuning ออกมาเป็นจำนวนมาก ส่งผลให้ความต้องการในการรวมโมเดลที่เชี่ยวชาญในงานที่แตกต่างกันเพิ่มสูงขึ้นโดยธรรมชาติ
- กำแพงด้านต้นทุนการเรียนรู้ใหม่: การทำ Full Fine-tuning สำหรับโมเดลขนาดใหญ่นั้นต้องใช้ทรัพยากร GPU ราคาแพงและใช้เวลาในการเรียนรู้นาน จึงเกิดความต้องการวิธีการที่สามารถรวมความสามารถต่างๆ เข้าด้วยกันได้โดยไม่ต้องอาศัยการเรียนรู้เพิ่มเติม
- การสะสมของหลักฐานทางทฤษฎี: ตั้งแต่ช่วงปลายปี 2022 ถึง 2023 มีงานวิจัยที่ผ่านการตรวจสอบ (Peer-reviewed) เกี่ยวกับการดำเนินการทางคณิตศาสตร์ของค่าน้ำหนัก (Weights) ออกมาอย่างต่อเนื่อง เช่น Task Arithmetic (arXiv:2212.04089, ICLR 2023) และ TIES-Merging (arXiv:2306.01708, NeurIPS 2023)
โดยเฉพาะงานวิจัยเรื่อง Task Arithmetic ที่แสดงให้เห็นถึงกรอบแนวคิดที่เข้าใจง่ายว่า "สามารถเพิ่มหรือลดทักษะได้เพียงแค่การบวกหรือลบผลต่าง (Task Vector) ที่ได้จากการนำค่าน้ำหนักหลัง Fine-tuning ลบด้วยค่าน้ำหนักของโมเดลฐาน" ซึ่งได้รับความสนใจอย่างมากจากผู้ปฏิบัติงานจริง
หลังจากนั้น เมื่อมีวิธีการอย่าง DARE (arXiv:2311.03099, ICML 2024) ที่ใช้ประโยชน์จากความซ้ำซ้อนของ Delta Parameters เข้ามาเสริม ทำให้แนวทางนี้ขยายตัวจากชุมชนนักวิจัยไปสู่การใช้งานจริงอย่างรวดเร็ว ในฐานะวิธีการรวมความสามารถที่หลากหลายด้วยต้นทุนที่ต่ำ
ทำไม Model Merge ถึงช่วยเพิ่มประสิทธิภาพได้? เหตุผลเชิงทฤษฎี
บทสรุป: เบื้องหลังการเพิ่มประสิทธิภาพด้วยการทำ Model Merging คือคุณลักษณะของ Loss Landscape ที่การทำ Linear Interpolation ของค่าน้ำหนัก (Weights) ทำงานได้อย่างมีประสิทธิภาพ และกลไกที่ความรู้เฉพาะงาน (Task-specific knowledge) ถูกกระจายและฝังอยู่ในค่าน้ำหนักเหล่านั้น
อย่างไรก็ตาม หากเลือกใช้วิธีการไม่เหมาะสม อาจเกิดปัญหาการแทรกสอด (Interference) ซึ่งส่งผลให้ประสิทธิภาพลดลงได้
Loss Landscape และการทำ Linear Interpolation ของน้ำหนัก
เรามักจะคิดไปเองโดยสัญชาตญาณว่า "การนำค่าน้ำหนัก (weights) มาหาค่าเฉลี่ยแบบง่ายๆ น่าจะทำให้ประสิทธิภาพลดลง" แต่ในความเป็นจริง มีรายงานว่าหากเป็นโมเดลที่แตกแขนงมาจากโมเดลพื้นฐาน (base model) เดียวกัน การทำ Linear Interpolation (การประมาณค่าในช่วงเชิงเส้น) สามารถรักษาหรือเพิ่มประสิทธิภาพของโมเดลได้ กุญแจสำคัญในการทำความเข้าใจความย้อนแย้งนี้คือโครงสร้างของ "Loss Landscape"
Loss Landscape หมายถึงลักษณะภูมิประเทศของฟังก์ชันการสูญเสีย (loss function) ในพื้นที่พารามิเตอร์น้ำหนักของโมเดล ในการวิจัยด้าน Deep Learning เป็นที่ทราบกันดีว่าน้ำหนักของโมเดลที่ผ่านการฝึกฝนมาอย่างดีมักจะลู่เข้าสู่ "หุบเขาที่กว้างและราบเรียบ" (wide and flat valleys)
- Flat minima (หุบเขาที่ราบเรียบ): พื้นที่ที่แม้ค่าน้ำหนักจะคลาดเคลื่อนไปบ้าง แต่ค่าความสูญเสียก็แทบจะไม่เพิ่มขึ้น
- Sharp minima (หุบเขาที่แหลมคม): พื้นที่ที่ไม่เสถียรซึ่งการเปลี่ยนแปลงของน้ำหนักเพียงเล็กน้อยก็ทำให้ค่าความสูญเสียพุ่งสูงขึ้นอย่างรวดเร็ว
เชื่อกันว่าโมเดลหลายตัวที่ผ่านการ Fine-tuning มาจากโมเดลพื้นฐานเดียวกัน มักจะลู่เข้าสู่ Flat minima ที่อยู่ในบริเวณใกล้เคียงกันบน Loss Landscape เดียวกัน ด้วยเหตุนี้ จุดกึ่งกลางที่ได้จากการทำ Linear Interpolation ระหว่างน้ำหนักของโมเดลทั้งสองตัว จึงมีแนวโน้มที่จะยังคงอยู่ในพื้นที่ที่มีค่าความสูญเสียต่ำ
หากแสดงเป็นสมการ ค่าน้ำหนักหลังการรวม (merged weights) สามารถเขียนได้ดังนี้:
θ_merged = (1 − α) × θ_A + α × θ_B(โดยที่ α คือสัมประสิทธิ์การประมาณค่าในช่วงระหว่าง 0 ถึง 1)
เงื่อนไขเบื้องต้นที่ทำให้การประมาณค่าในช่วงนี้ทำงานได้อย่างมีประสิทธิภาพมีดังนี้:
กลไกที่ความรู้เฉพาะงานถูกฝังลงในน้ำหนัก
การทำ Fine-tuning จะทำให้ค่าน้ำหนัก (weights) ของโมเดลเปลี่ยนแปลงไปจากโมเดลพื้นฐาน (base model) อย่างไร?
LLM (Large Language Model) จัดเก็บรูปแบบภาษาทั่วไปไว้ในค่าน้ำหนักผ่านการเรียนรู้ล่วงหน้า (pre-training) แต่เมื่อนำไป Fine-tuning ด้วยข้อมูลเฉพาะงาน ส่วนต่างที่เกิดขึ้นจะถูกสะสมไว้ในค่าน้ำหนักในฐานะความรู้เฉพาะงาน ซึ่งส่วนต่างนี้เองคือสิ่งที่เรียกว่า "Task Vector" ตามที่นิยามไว้ในงานวิจัย Task Arithmetic
- Task Vector = ค่าน้ำหนักหลัง Fine-tuning − ค่าน้ำหนักของโมเดลพื้นฐาน
- ความรู้ทั่วไปที่โมเดลพื้นฐานมีอยู่จะยังคงอยู่ โดยมีการปรับแต่งเฉพาะงานแยกออกมาเป็นส่วนต่าง
- การนำ Task Vector ของหลายงานมารวมกัน จะช่วยให้สามารถรวมความสามารถของแต่ละงานไว้ในโมเดลเดียวได้
ในจุดนี้ การแบ่งเงื่อนไขมีความสำคัญมาก หากงานมีความเกี่ยวข้องกันสูง (เช่น การแปลภาษาอังกฤษและการแปลภาษาญี่ปุ่น) การรบกวนกันของ Task Vector จะมีน้อย ทำให้มีแนวโน้มที่ทั้งสองทักษะจะยังคงอยู่ได้หลังจากนำมาบวกกัน ในทางกลับกัน หากเป็นโดเมนที่แตกต่างกันโดยสิ้นเชิง (เช่น การสร้างโค้ดและการวิเคราะห์ความรู้สึก) มักจะเกิดการอัปเดตที่ขัดแย้งกันในพารามิเตอร์เดียวกัน ซึ่งมีรายงานว่าการบวกกันแบบธรรมดาอาจทำให้คุณภาพลดลงได้
งานวิจัยของ DARE รายงานว่า พารามิเตอร์ส่วนต่าง (delta parameters) หลังจากการทำ SFT (Supervised Fine-Tuning) ส่วนใหญ่นั้นมีความซ้ำซ้อน และแม้จะตัดออกไปถึง 90–99% โมเดลก็ยังคงรักษาความสามารถไว้ได้ ซึ่งบ่งชี้ว่าความรู้เฉพาะงานนั้นถูกฝังและกระจุกตัวอยู่ในค่าน้ำหนักเพียงบางส่วนเท่านั้น
ด้วยคุณสมบัตินี้เอง ทำให้การทำ Model Merging ที่จัดการกับส่วนต่างของค่าน้ำหนักในเชิงคณิตศาสตร์สามารถทำได้จริง
กรณีที่ Model Merge ล้มเหลวและปัญหาการแทรกสอด (Interference)
「เพียงแค่ทำ Merge ก็น่าจะทำให้ประสิทธิภาพดีขึ้น แต่ทำไมความแม่นยำถึงลดลง」 นี่คือหนึ่งในกำแพงด่านแรกที่วิศวกรผู้พยายามทำ Model Merging ต้องเผชิญ
สาเหตุหลักที่ทำให้การ Merge ล้มเหลวคือ Parameter Interference โมเดลที่ผ่านการ Fine-tuning มาจากงานที่แตกต่างกัน อาจมีการอัปเดตพารามิเตอร์เดียวกันไปในทิศทางที่ขัดแย้งกันเอง การนำค่าเหล่านี้มาหาค่าเฉลี่ยแบบง่ายๆ จะทำให้เกิดสถานะกึ่งกลางที่ไม่ได้เหมาะสมกับงานใดงานหนึ่งเลย ซึ่งมีรายงานว่าส่งผลให้ประสิทธิภาพของทั้งสองงานลดลง
สถานการณ์ทั่วไปที่มักนำไปสู่ความล้มเหลวมีดังนี้:
- Base Model แตกต่างกัน: การ Merge โมเดลที่มีสถาปัตยกรรมหรือข้อมูล Pre-training ต่างกัน มักจะให้ผลลัพธ์ที่ไร้ความหมาย เนื่องจากความหมายใน Weight Space ไม่สอดคล้องกัน
- งานมีความหมายห่างไกลกัน: หากการกระจายตัวของข้อมูลที่ใช้เรียนรู้แตกต่างกันมาก เช่น โมเดลที่เน้นการสร้างโค้ด (Code Generation) กับโมเดลที่เน้นการวิเคราะห์อารมณ์ (Sentiment Analysis) ทิศทางของ Task Vector มักจะเกิดการปะทะกันได้ง่าย
- การตั้งค่า Merge Coefficient ผิดพลาด: หากไม่ปรับค่า Weighting Coefficient ให้เหมาะสม คุณลักษณะของโมเดลด้านหนึ่งจะกลายเป็นตัวครอบงำ ทำให้ความสามารถของอีกด้านหนึ่งถูกกลบไป
TIES-Merging (arXiv:2306.01708, NeurIPS 2023) เป็นวิธีการที่เข้ามาจัดการกับปัญหาการแทรกแซงนี้โดยตรง โดยใช้วิธีการสามขั้นตอนเพื่อยับยั้งการแทรกแซง ได้แก่ การตัดพารามิเตอร์ส่วนเกินที่มีการเปลี่ยนแปลงน้อยออก (Trim), การเลือกเครื่องหมายด้วยวิธีเสียงข้างมาก (Elect Sign) และการ Merge เฉพาะพารามิเตอร์ที่มีเครื่องหมายตรงกันเท่านั้น (Merge)
วิธีการ Model Merge ที่เป็นที่นิยมมีอะไรบ้าง?
สรุป: การทำ Model Merge มีอัลกอริทึมอยู่หลายรูปแบบ ซึ่งจำเป็นต้องเลือกใช้ให้เหมาะสมกับวัตถุประสงค์และเงื่อนไข
ตั้งแต่ Weighted Average ไปจนถึง Task Arithmetic, TIES, DARE และ SLERP วิธีการต่างๆ นั้นมีอยู่อย่างหลากหลาย การเข้าใจคุณสมบัติของแต่ละวิธีจะเป็นตัวกำหนดคุณภาพของการ Merge
พื้นฐานของ Linear Interpolation (Weighted Average)
เทคนิคการรวมโมเดล (Model Merge) ที่ง่ายที่สุดคือการทำ Linear Interpolation (Weighted Average) ซึ่งเป็นวิธีที่เข้าใจได้ง่ายโดยการนำพารามิเตอร์น้ำหนักของโมเดล 2 ตัวมาบวกกันตามสัดส่วนที่กำหนด
สามารถเขียนเป็นสูตรคณิตศาสตร์ได้ดังนี้:
merged = α × model_A + (1 − α) × model_B- α คือค่าสัมประสิทธิ์การผสม (Blending coefficient) ที่กำหนดค่าระหว่าง 0 ถึง 1
ตัวอย่างเช่น หาก α = 0.5 จะเป็นการผสมโมเดลทั้งสองอย่างเท่าๆ กัน หรือหาก α = 0.7 จะเป็นการปรับให้สะท้อนคุณลักษณะของ model_A ออกมาได้ชัดเจนยิ่งขึ้น
ในตอนแรก หลายคนอาจคิดว่า "การหาค่าเฉลี่ยแบบธรรมดาจะทำให้จุดแข็งของโมเดลทั้งสองลดทอนลงหรือไม่" แต่ในความเป็นจริง มีรายงานจำนวนมากระบุว่า หากเป็นโมเดลที่ผ่านการ Fine-tuning มาจาก Base model เดียวกัน การทำ Linear Interpolation ของน้ำหนักจะสามารถรักษาทักษะของทั้งสองโมเดลไว้ได้ในระดับที่เหมาะสม ซึ่งเชื่อว่าเป็นเพราะโมเดลทั้งสองอยู่ในบริเวณใกล้เคียงกันบน Loss landscape เดียวกัน
ในทางกลับกัน การทำ Linear Interpolation ก็มีข้อจำกัดที่ชัดเจนเช่นกัน:
- เงื่อนไขเบื้องต้น: ต้องเป็นโมเดลที่มีสถาปัตยกรรมเดียวกันและมาจาก Base model เดียวกัน
- การปรับค่า α: สัดส่วนที่เหมาะสมจะแตกต่างกันไปตามแต่ละงาน ซึ่งจำเป็นต้องอาศัยการลองผิดลองถูก
- ความเสี่ยงในการรบกวนกัน (Interference): หากเป็นโมเดลที่ถูกเสริมความแข็งแกร่งในโดเมนที่แตกต่างกัน อาจส่งผลให้ประสิทธิภาพออกมาไม่ดีเท่าที่ควร
สำหรับการค้นหาค่า α วิธีที่นิยมใช้กันทั่วไปคือการทำ Grid Search โดยพิจารณาจากคะแนนของ Validation set
Task Arithmetic และการรวมโมเดลด้วยการคำนวณเวกเตอร์
Task Arithmetic คือวิธีการที่ถูกนำเสนอในงานวิจัยเรื่อง "Editing Models with Task Arithmetic" ซึ่งเผยแพร่ในปี 2022 โดยมีหัวใจสำคัญอยู่ที่แนวคิดเรื่อง Task Vector ซึ่งนิยามด้วยสมการดังนี้:
Task Vector = น้ำหนักหลังการทำ Fine-tuning − น้ำหนักของ Base Model
กล่าวคือ เป็นการดึงเอา "การเปลี่ยนแปลงที่เกิดขึ้น" จาก Base Model เนื่องจากการปรับตัวเข้าสู่เฉพาะงานนั้นออกมาในรูปแบบของเวกเตอร์
เมื่อใช้เวกเตอร์นี้ การจัดการกับน้ำหนัก (Weights) จะถูกแทนที่ด้วยการคำนวณทางคณิตศาสตร์ที่เข้าใจได้ง่าย:
- การบวก (Addition Merging): หากนำ Task Vector ของหลายงานมาบวกกันแล้วนำไปเพิ่มให้กับ Base Model จะสามารถสร้างโมเดลที่มีความสามารถของแต่ละงานพร้อมกันได้
- การลบ (Removal of Capabilities): หากนำ Task Vector ไปลบออกจาก Base Model จะสามารถลดแนวโน้มการตอบสนองต่อเฉพาะงานนั้นๆ ลงได้อย่างตั้งใจ
- การปรับขนาด (Scaling): การคูณเวกเตอร์ด้วยค่าสเกลาร์ จะช่วยให้สามารถปรับระดับอิทธิพลของแต่ละงานได้
ในมุมมองของการแบ่งเงื่อนไข หากงานที่ต้องการรวมเข้าด้วยกันมีความเป็นอิสระต่อกัน การบวกแบบธรรมดามักจะเพียงพอ แต่หากงานเหล่านั้นมีความซ้ำซ้อนหรือมีการรบกวนกันทางความหมาย จำเป็นต้องปรับค่าสัมประสิทธิ์การสเกลอย่างระมัดระวัง
อย่างไรก็ตาม Task Arithmetic ยังคงมีปัญหาเรื่อง Parameter Interference อยู่ กล่าวคือ หากนำ Task Vector หลายตัวมาบวกกันโดยตรง เครื่องหมายของน้ำหนักอาจเกิดการขัดแย้งกันจนส่งผลให้ประสิทธิภาพลดลงได้
ภาพรวมของอัลกอริทึมล่าสุด เช่น TIES, DARE และ SLERP
เมื่อคุณรู้สึกว่า "การใช้ค่าเฉลี่ยถ่วงน้ำหนัก (Weighted Average) เพียงอย่างเดียวไม่ช่วยให้ความแม่นยำเพิ่มขึ้น แล้วจะมีวิธีการรวมโมเดลที่ฉลาดกว่านี้ไหม" ตัวเลือกที่คุณสามารถนำมาพิจารณาได้แก่สามเทคนิคนี้ คือ TIES, DARE และ SLERP
TIES (TRIM, ELECT SIGN & MERGE) เป็นอัลกอริทึมที่นำเสนอในงาน NeurIPS 2023 ซึ่งช่วยแก้ปัญหาการรบกวนกันของส่วนต่างน้ำหนัก (Delta) ของโมเดลหลายตัวผ่านสามขั้นตอนดังนี้:
- TRIM: ตัดพารามิเตอร์ Delta ที่มีค่าสัมบูรณ์น้อยออก
- ELECT SIGN: ตัดสินใจด้วยเสียงข้างมากว่าพารามิเตอร์แต่ละตัวควร "เคลื่อนไปในทิศทางบวกหรือลบ"
- MERGE: รวมเฉพาะ Delta ที่มีเครื่องหมายตรงกันโดยการหาค่าเฉลี่ย
เนื่องจากมีการกำจัดความขัดแย้งของเครื่องหมายอย่างชัดเจน จึงมีแนวโน้มที่จะเกิดการรบกวนน้อยกว่าการหาค่าเฉลี่ยแบบธรรมดา
DARE (Drop And REscale) เป็นเทคนิคที่รายงานในงานวิจัยที่ได้รับการตอบรับใน ICML 2024 โดยตั้งอยู่บนข้อสังเกตที่ว่าพารามิเตอร์ Delta หลังการทำ Fine-tuning มีความซ้ำซ้อนอยู่เป็นจำนวนมาก วิธีนี้จะทำการสุ่มตัด (Drop) Delta ออก 90-99% แล้วจึงทำการขยายสเกล (Rescale) ส่วนที่เหลือเพื่อชดเชย มีรายงานว่าแม้จะลดจำนวนพารามิเตอร์ลงอย่างมากแต่ความสามารถของโมเดลยังคงอยู่ จึงมักพบการนำไปใช้ร่วมกับ TIES อยู่บ่อยครั้ง
SLERP (Spherical Linear Interpolation) เป็นเทคนิคการประมาณค่าระหว่างโมเดลสองตัวโดยอิงตามส่วนโค้งบนพื้นผิวทรงกลม ในขณะที่การประมาณค่าเชิงเส้น (Linear Interpolation) ทั่วไปจะเป็นการผสมแบบ "เส้นตรง" แต่ SLERP จะช่วยให้การเปลี่ยนผ่านเป็นไปอย่างราบรื่นโดยยังคงรักษา "มุม" ของเวกเตอร์น้ำหนักเอาไว้
วิธีการนำ Model Merge ไปใช้งานจริง: เครื่องมือและขั้นตอน
บทสรุป: เมื่อเข้าใจทฤษฎีแล้ว ขั้นตอนถัดไปที่สำคัญคือการเลือกเครื่องมือในการใช้งานจริงและการทำความเข้าใจขั้นตอนการ Merge
ในการทำ Model Merge ภาคปฏิบัติ กุญแจสำคัญมี 3 ขั้นตอน ได้แก่ การเลือกเครื่องมือ การเลือกชุดของ Base Model และการประเมินผล ในหัวข้อ H3 ถัดไป เราจะอธิบายตั้งแต่การใช้งาน MergeKit ซึ่งเป็นเครื่องมือหลักที่นิยมใช้ ไปจนถึงวิธีการตรวจสอบคุณภาพตามลำดับ
ขั้นตอนการ Merge พื้นฐานโดยใช้ MergeKit
MergeKit คือไลบรารีโอเพนซอร์สสำหรับรวมโมเดล (Model Merge) โดยเฉพาะ ซึ่งเผยแพร่โดย arcee-ai รองรับอัลกอริทึมหลักทั้งหมด เช่น Task Arithmetic, TIES, DARE และ SLERP โดยสามารถดำเนินการรวมโมเดลได้ด้วยไฟล์การตั้งค่ารูปแบบ YAML เพียงไฟล์เดียว
ในตอนแรกหลายคนอาจคิดว่า "เขียนสคริปต์ Python ขึ้นมาเองตั้งแต่ต้นก็น่าจะพอ" แต่ในความเป็นจริง การใช้ไฟล์การตั้งค่าของ MergeKit จะให้ผลลัพธ์ที่ทำซ้ำได้ (Reproducibility) สูงกว่า และลดโอกาสเกิดข้อผิดพลาดในขั้นตอนการทำงานได้ดีกว่า
ขั้นตอนพื้นฐานมีดังนี้:
- การติดตั้ง: ติดตั้งไลบรารีด้วยคำสั่ง
pip install mergekit - การสร้างไฟล์การตั้งค่า YAML: ระบุวิธีการรวมโมเดล (เช่น
task_arithmetic), พาธของโมเดลหลัก (Base Model), รวมถึงพาธและค่าสัมประสิทธิ์น้ำหนัก (Weight Coefficient) ของแต่ละโมเดลที่ต้องการรวม - การดำเนินการรวมโมเดล: รันคำสั่ง
mergekit-yaml config.yaml output_dir/ - การตรวจสอบผลลัพธ์: โมเดลที่รวมเสร็จแล้วจะถูกสร้างขึ้นในไดเรกทอรีที่ระบุ โดยอยู่ในรูปแบบที่รองรับกับ Hugging Face
ตัวอย่างการเขียน YAML หากใช้ Task Arithmetic ให้ระบุ merge_method: task_arithmetic และกำหนด scaling_coefficient (ค่าสัมประสิทธิ์การปรับขนาด) ให้กับแต่ละโมเดล โดยทั่วไปค่าสัมประสิทธิ์มักจะปรับอยู่ในช่วง 0.3 ถึง 0.7 และไม่จำเป็นต้องรวมกันให้ได้ 1 พอดี หากตั้งค่าสูงเกินไปอาจทำให้ความสามารถเดิมของโมเดลเสียหายได้ง่าย ดังนั้นจึงควรค่อยๆ ปรับค่าไปพร้อมกับการตรวจสอบคะแนนจากชุดข้อมูลทดสอบ (Validation Set) เพื่อความปลอดภัย
วิธีการเลือก Base Model และโมเดลที่จะนำมารวมกัน
คุณภาพของผลลัพธ์การ Merge จะถูกกำหนดเกือบทั้งหมดตั้งแต่ขั้นตอนการเลือก Base model และโมเดลที่จะนำมารวมกัน หากไม่เลือกการผสมผสานที่เหมาะสม อาจเกิดการแทรกแซงของน้ำหนัก (Weight interference) อย่างรุนแรง ซึ่งส่งผลให้ความสามารถของทั้งสองโมเดลลดลงได้
เงื่อนไขพื้นฐานในการเลือก Base model
ประการแรก โมเดลทั้งหมดที่จะนำมา Merge จะต้องมี สถาปัตยกรรมเดียวกันและจำนวนพารามิเตอร์เท่ากัน เป็นพื้นฐาน การ Merge ระหว่างสถาปัตยกรรมที่แตกต่างกันไม่สามารถทำได้ด้วยวิธีการในปัจจุบัน
ประการถัดมา ให้ตรวจสอบว่ากลุ่มโมเดลที่ต้องการรวมนั้น ได้รับการ Fine-tuning มาจาก Base model เดียวกันหรือไม่ ตัวอย่างเช่น โมเดลที่ผ่านการ Fine-tuning มาหลายตัวซึ่งแตกแขนงมาจาก Base model ตระกูล Llama มักจะเกิดการแทรกแซงได้ยากกว่า เนื่องจากมีการใช้ระบบพิกัดของน้ำหนัก (Weight coordinate system) ร่วมกัน
วิธีการเลือกโมเดลที่จะนำมารวม: เกณฑ์การตัดสินใจตามเงื่อนไข
ลักษณะของโมเดลที่จะนำมารวมควรเปลี่ยนไปตามจุดประสงค์:
- กรณีที่ต้องการเพิ่มความเป็นสากล (Generalization): การรวมโมเดลหลายตัวที่เชี่ยวชาญในโดเมนที่แตกต่างกัน (เช่น เชี่ยวชาญด้านการเขียนโค้ด, รองรับหลายภาษา, ปรับปรุงคุณภาพการสนทนา ฯลฯ) จะช่วยให้ได้รับความสามารถที่หลากหลายซึ่งไม่มีในโมเดลเดี่ยว
- กรณีที่ต้องการเพิ่มความสามารถรองในขณะที่ยังคงความแม่นยำของงานเฉพาะทาง: วิธี Weighted averaging โดยกำหนดให้โมเดลหลักเป็น "ตัวที่แข็งแกร่งกว่า" แล้วผสมน้ำหนักของโมเดลเสริมด้วยสัมประสิทธิ์ที่ต่ำนั้นมีความเหมาะสม
การผสมผสานที่ควรหลีกเลี่ยง
รูปแบบต่อไปนี้อาจทำให้คุณภาพของการ Merge ลดลงอย่างมีนัยสำคัญ
ตัวชี้วัดการประเมินผลและการตรวจสอบคุณภาพหลังการ Merge
หลังจากทำการ Merge เสร็จสิ้น มักจะมีคำถามเกิดขึ้นบ่อยครั้งว่า "ควรดูตัวชี้วัดใดเพื่อตัดสินคุณภาพ" การจัดระบบการประเมินจะช่วยให้สามารถปรับปรุงวงจรการตั้งค่าการ Merge ได้อย่างรวดเร็ว
สิ่งแรกที่ควรตรวจสอบคือ คะแนน Benchmark แยกตามงาน (Task) โดยต้องตรวจสอบเป็นรายกรณีว่าคะแนนหลังจาก Merge ลดลงอย่างมีนัยสำคัญในงานที่โมเดลต้นทางแต่ละตัวเคยทำได้ดีหรือไม่ โดยมีประเด็นที่ต้องพิจารณาดังนี้:
- การตรวจสอบการคงไว้ซึ่งความสามารถ: คะแนนหลังจาก Merge ยังอยู่ในเกณฑ์ที่ยอมรับได้หรือไม่ใน Benchmark ที่โมเดลต้นทางเคยทำคะแนนได้สูง (เช่น การใช้เหตุผลทางคณิตศาสตร์, การสร้างโค้ด, ความเข้าใจหลายภาษา)
- การตรวจจับการแทรกแซง (Interference): ประสิทธิภาพของงานหนึ่งลดลงอย่างมากจากการเสริมประสิทธิภาพของอีกงานหนึ่งหรือไม่
- อัตราการหลอน (Hallucination rate): มีการปนเปื้อนของข้อมูลที่ผิดพลาดเพิ่มขึ้นหรือไม่ในผลลัพธ์ที่จำเป็นต้องมีการตรวจสอบข้อเท็จจริง
ถัดมาคือ การตรวจสอบตัวอย่างผลลัพธ์เชิงคุณภาพด้วยสายตา ซึ่งเป็นสิ่งที่ขาดไม่ได้ เพราะสามารถตรวจพบความผิดปกติของสำนวนภาษาหรือการลดลงของความสามารถในการปฏิบัติตามคำสั่ง (Instruction following) ซึ่งไม่สามารถวัดได้ด้วย Benchmark เพียงอย่างเดียว วิธีที่ใช้กันอย่างแพร่หลายในหน้างานคือการเตรียมชุด Prompt มาตรฐาน แล้วนำผลลัพธ์ก่อนและหลังการ Merge มาวางเทียบกัน
สุดท้ายคือ การวิเคราะห์ความไว (Sensitivity analysis) ของค่าสัมประสิทธิ์การ Merge (อัตราส่วนการสอดแทรก) การบันทึกการเปลี่ยนแปลงของคะแนน Benchmark โดยปรับค่าสัมประสิทธิ์ทีละ 0.1 จะช่วยให้ระบุจุดสมดุลที่เหมาะสมที่สุดได้ง่ายขึ้น
ควรจัดการผลการประเมินไว้ในที่เดียวกัน เช่น สเปรดชีต โดยบันทึกค่าสัมประสิทธิ์ วิธีการ และคะแนนไว้เป็นชุด เพื่อให้ง่ายต่อการทำซ้ำและเปรียบเทียบในภายหลัง
Model Merge เหมาะกับการใช้งานประเภทใด? กรณีการใช้งาน
สรุป: Model Merging มีประสิทธิภาพเป็นพิเศษในสถานการณ์ที่ต้องการ "รวมความสามารถที่หลากหลายเข้าไว้ในโมเดลเดียวด้วยต้นทุนที่ต่ำ"
เราจะอธิบายสถานการณ์การใช้งานทั่วไปตามวัตถุประสงค์ต่างๆ เช่น การรองรับหลายภาษา (Multilingual), การปรับแต่งเฉพาะโดเมน (Domain-specific) และการใช้งานในสภาพแวดล้อมแบบโลคัล (Local environment) ในหัวข้อ H3 ด้านล่างนี้
การเสริมความสามารถด้านหลายภาษาและความรู้เฉพาะทางไปพร้อมกัน
เมื่อต้องการให้ได้ทั้งความสามารถในการรองรับหลายภาษาและความรู้เฉพาะทางในคราวเดียวกัน ในตอนแรกเรามักจะคิดว่า "ก็แค่ทำ Fine-tuning โมเดลเดียวด้วยคลังข้อมูลหลายภาษาและเอกสารเฉพาะทางไปพร้อมกันก็น่าจะพอ" แต่ในความเป็นจริง มีรายงานว่าเป้าหมายการเรียนรู้ทั้งสองอย่างนี้อาจรบกวนกันเอง จนทำให้ประสิทธิภาพของทั้งสองด้านออกมาไม่ดีเท่าที่ควร การทำ Model Merge จึงเป็นวิธีที่มีประสิทธิภาพในการหลีกเลี่ยงปัญหานี้
แนวทางปฏิบัติที่ชัดเจนมีดังนี้:
- เตรียม โมเดลที่เชี่ยวชาญหลายภาษา (เช่น โมเดลที่ผ่านการ Fine-tuning ด้วยภาษาญี่ปุ่น อังกฤษ จีน ฯลฯ) และ โมเดลที่เชี่ยวชาญเฉพาะทาง (เช่น โมเดลที่ปรับจูนด้วยคลังข้อมูลเฉพาะทางด้านการแพทย์ กฎหมาย หรือการผลิต) แยกจากกัน
- รวม Task Vector เข้าด้วยกันโดยใช้วิธีการ Merge เช่น Task Arithmetic เพื่อผสานความสามารถของทั้งสองโมเดลเข้าเป็นโมเดลเดียว
- สามารถสร้างโมเดลที่รวมความสามารถทั้งด้านหลายภาษาและโดเมนเฉพาะทางได้ โดยแทบไม่ต้องเสียค่าใช้จ่ายในการประมวลผล GPU เพิ่มเติม
เหตุผลที่วิธีนี้ได้ผลคือ แต่ละโมเดลได้ "บันทึก" ความสามารถของตนเองไว้ในค่าน้ำหนัก (Weights) ในรูปแบบของ Task Vector ที่เป็นอิสระต่อกันอยู่แล้ว ในส่วนที่ไม่มีการรบกวนกันมากนัก การทำ Linear Interpolation ก็มักจะเพียงพอที่จะให้ประสิทธิภาพที่ดีได้
อย่างไรก็ตาม ยังมีจุดที่ควรระวังอยู่บ้าง
การใช้งานแบบไฮบริดร่วมกับ LoRA Adapter
LoRA (Low-Rank Adaptation) อะแดปเตอร์เป็นเทคนิคที่ช่วยให้สามารถเรียนรู้พารามิเตอร์เพียงจำนวนน้อยในขณะที่ยังคงตรึงน้ำหนัก (weights) ของโมเดลหลักเอาไว้ เมื่อนำมาใช้ร่วมกับการรวมโมเดล (Model Merging) จะสามารถสร้างโครงสร้างแบบไฮบริดที่ดึงจุดแข็งของทั้งสองวิธีออกมาได้
การเลือกใช้ระหว่างการรวมโมเดลและ LoRA
หากต้องการความสามารถในการปรับตัวเข้ากับงานที่กว้างขวางและเน้นความเป็นอเนกประสงค์ การรวมโมเดลจะเหมาะสมกว่า แต่หากต้องการการปรับจูนที่แม่นยำสำหรับโดเมนเฉพาะทาง การเรียนรู้เพิ่มเติมด้วย LoRA อะแดปเตอร์จะตอบโจทย์มากกว่า โดยทั่วไปแล้วการผสมผสานทั้งสองวิธีมักมีขั้นตอนดังนี้:
- รวมโมเดลที่ผ่านการ Fine-tuning มาแล้วหลายตัวเข้าด้วยกัน เพื่อสร้างโมเดลหลักที่มีทักษะหลากหลาย
- ทำการเรียนรู้เพิ่มเติมแบบน้ำหนักเบา (Lightweight additional training) ด้วย LoRA บนโมเดลที่รวมเสร็จแล้ว
- ในขั้นตอนการอนุมาน (Inference) ให้รวม LoRA อะแดปเตอร์เข้ากับน้ำหนักของโมเดลที่รวมไว้แบบไดนามิกเพื่อใช้งาน
ข้อดีในทางปฏิบัติ
- การรวมความสามารถทั่วไป (เช่น การรองรับหลายภาษาหรือการเขียนโค้ด) ไว้ในขั้นตอนการรวมโมเดล มักจะช่วยลดปริมาณข้อมูลที่ต้องใช้ในการเรียนรู้ LoRA ในภายหลัง
- เนื่องจาก LoRA อะแดปเตอร์สามารถจัดการแยกจากตัวโมเดลหลักได้ จึงทำให้ง่ายต่อการสลับเปลี่ยนอะแดปเตอร์เพื่อรองรับงานที่แตกต่างกัน
- MergeKit มีฟังก์ชันในการรวม (Merge) LoRA อะแดปเตอร์เข้ากับน้ำหนักหลักก่อนการรวมโมเดล ซึ่งช่วยให้ขั้นตอนการทำงานมีความเรียบง่าย
ข้อควรระวัง
ในการนำ LoRA มาใช้ซ้อนบนโมเดลที่ผ่านการรวมมาแล้ว การรบกวนของน้ำหนักที่เกิดขึ้นระหว่างการรวมโมเดลอาจส่งผลต่อการเรียนรู้ของ LoRA ได้ ดังนั้นจึงควรตรวจสอบให้แน่ใจว่าคุณภาพของโมเดลมีความเสถียรหลังจากการรวมก่อนที่จะดำเนินการเรียนรู้ด้วย LoRA ต่อไป
การประยุกต์ใช้ในการสร้าง Local LLM โดยใช้ Open-weight Model
ความต้องการในการใช้งานที่ว่า "ต้องการใช้งาน LLM โดยไม่พึ่งพา Cloud API และไม่นำข้อมูลภายในองค์กรออกไปภายนอก" กำลังเพิ่มสูงขึ้นอย่างรวดเร็วพร้อมกับการแพร่หลายของ Open-weight models ซึ่งการทำ Model Merge ก็ถือเป็นทางเลือกที่ใช้งานได้จริงในสถานการณ์การสร้าง Local LLM เช่นนี้
เนื่องจาก Open-weight models มีการเปิดเผยค่าน้ำหนัก (Weights) ทำให้สามารถนำหลายโมเดลมาผสานรวมกันเป็น Inference Endpoint เดียวได้ ซึ่งช่วยให้สามารถสร้างโครงสร้างดังต่อไปนี้ได้ง่ายขึ้น:
- การบูรณาการโมเดลเฉพาะทางภาษาญี่ปุ่น × โมเดลเฉพาะทางในโดเมนต่างๆ: นำโมเดลพื้นฐานภาษาญี่ปุ่นทั่วไปมาผสานกับโมเดลที่ผ่านการ Fine-tuning ด้วยความรู้เฉพาะทางด้านกฎหมาย การแพทย์ หรือการผลิต เพื่อใช้งานเป็นโมเดลท้องถิ่นเพียงโมเดลเดียว
- การควบคุมขนาดของพารามิเตอร์: การรันโมเดลที่ผสานรวมแล้วเพียงโมเดลเดียวมักจะใช้หน่วยความจำ GPU น้อยกว่าการรันหลายโมเดลแยกกัน
- การใช้งานร่วมกับ LoRA Adapter: สามารถใช้โครงสร้างแบบสองขั้นตอนได้ โดยการเสริมความแข็งแกร่งให้โมเดลพื้นฐานด้วยการ Merge แล้วจึงทำการปรับจูนเพิ่มเติมที่มีน้ำหนักเบาด้วย LoRA
MergeKit ถูกออกแบบมาโดยคำนึงถึงการรันในสภาพแวดล้อมท้องถิ่น (Local environment) และสามารถใช้งานกับ Open-weight models ในรูปแบบ Hugging Face ได้ทันที สำหรับ Inference Server นั้นมีตัวเลือกอย่าง Ollama หรือ vLLM ซึ่งสามารถโหลดโมเดลที่ผสานรวมแล้วไปใช้งานได้โดยตรง
ข้อควรระวังคือ โมเดลที่จะนำมา Merge กันจำเป็นต้องมีสถาปัตยกรรมเดียวกันและมีที่มาจากโมเดลพื้นฐาน (Base model) เดียวกัน
ความเข้าใจผิดที่พบบ่อยและข้อควรระวังเกี่ยวกับ Model Merge
บทสรุป: การรวมโมเดล (Model Merging) ไม่ใช่ทางออกครอบจักรวาล และการเลือกใช้วิธีที่ผิดพลาดหรือการละเมิดลิขสิทธิ์อาจกลายเป็นความเสี่ยงสำคัญในการใช้งานจริง
ความคาดหวังที่ว่า "ยิ่งผสมยิ่งเก่ง" นั้นไม่เป็นความจริงเสมอไป เนื่องจากอาจเกิดปัญหาการแทรกแซงระหว่างโมเดลหรือปัญหาความไม่เข้ากันได้ นอกจากนี้ การให้ความสำคัญกับลิขสิทธิ์การแจกจ่ายซ้ำ (Redistribution License) ก็เป็นสิ่งที่ขาดไม่ได้เช่นกัน
"ยิ่งผสมยิ่งดี" เป็นเรื่องจริงหรือไม่
ในช่วงเริ่มต้นของการทำ Model Merging หลายคนมักคิดว่า "แค่รวมหลายโมเดลเข้าด้วยกัน ประสิทธิภาพก็จะเพิ่มขึ้น" แต่ในความเป็นจริงแล้ว การ Merge ไม่ใช่ทางออกที่ครอบคลุมทุกอย่าง และมีรายงานว่าในกรณีที่การรวมกันไม่เป็นไปตามเงื่อนไข ประสิทธิภาพอาจลดลงได้
สาเหตุหลักที่ทำให้การ Merge ล้มเหลวมีดังนี้:
- สถาปัตยกรรมไม่ตรงกัน (Architecture Mismatch): โมเดลที่มีจำนวนชั้น (Layers), มิติแฝง (Hidden dimensions) หรือจำนวน Attention heads ต่างกัน จะไม่สามารถจับคู่ Weight กันได้ตั้งแต่ต้น
- ความแตกต่างของ Base Model: แม้จะเป็นสถาปัตยกรรมเดียวกัน แต่หากถูก Fine-tuning มาจาก Base model ที่ต่างกัน ปริภูมิความหมาย (Semantic space) ของ Weight จะคลาดเคลื่อนและเกิดการแทรกสอด (Interference) ได้ง่าย
- ความขัดแย้งระหว่างงาน (Task Conflict): เมื่อ Task vector ของโมเดลหนึ่งปะทะกับอีกโมเดลหนึ่งในด้านเครื่องหมายหรือขนาด จะทำให้ความสามารถของทั้งสองฝั่งลดลงจนไม่สมบูรณ์
งานวิจัยของ TIES-Merging รายงานว่า การหาค่าเฉลี่ยถ่วงน้ำหนักแบบธรรมดาจะทำให้เกิด "ปัญหาการแทรกสอด" (Interference problem) ซึ่งพารามิเตอร์จะหักล้างกันเองเนื่องจากการปะทะกันของเครื่องหมาย นี่คือเหตุผลหลักที่ทำให้ความเชื่อที่ว่า "ยิ่งผสมยิ่งดี" ไม่เป็นความจริงเสมอไป
เกณฑ์การตัดสินใจที่ควรทราบเพื่อรักษาคุณภาพมีดังนี้:
- เลือกโมเดลที่แตกแขนงมาจาก Base model เดียวกัน
- หลังจาก Merge แล้ว ต้องทำการประเมินด้วย Benchmark หรือ Task จริง และเปรียบเทียบกับ Base model เสมอ
- เริ่มต้นจากค่าสัมประสิทธิ์การ Merge (อัตราส่วนการสอดแทรก) ที่น้อยๆ แล้วค่อยๆ ปรับเพิ่มทีละน้อย
Model Merging เป็น "เทคโนโลยีที่ตั้งอยู่บนพื้นฐานของการลองผิดลองถูก" การออกแบบสมมติฐานก่อนการรวมโมเดลและการประเมินผลหลังการรวมเป็นชุดเดียวกัน ถือเป็นแนวทางที่เป็นจริงที่สุดในการบรรลุประสิทธิภาพที่คาดหวังไว้
ความเสี่ยงด้านลิขสิทธิ์และการแจกจ่ายซ้ำ
หากโมเดลต้นทางที่นำมา Merge มีใบอนุญาต (License) ที่แตกต่างกัน การแจกจ่ายโมเดลที่ Merge แล้วอาจเข้าข่ายพื้นที่สีเทาทางกฎหมาย
ข้อควรระวังมีดังนี้:
- การอนุญาตให้ใช้เชิงพาณิชย์: โมเดลตระกูล Llama มีข้อกำหนดการใช้งานเฉพาะตัว ซึ่งอาจมีเงื่อนไขเกี่ยวกับการใช้งานเชิงพาณิชย์หรือการแจกจ่ายซ้ำ หากมีโมเดลที่ไม่อนุญาตให้ใช้เชิงพาณิชย์รวมอยู่ด้วยแม้เพียงโมเดลเดียว ก็มีความเสี่ยงที่โมเดลที่ Merge แล้วทั้งหมดจะไม่สามารถนำไปใช้เชิงพาณิชย์ได้
- การถ่ายทอดเงื่อนไขใบอนุญาต (License Propagation): ใบอนุญาตแบบเปิดอย่าง Apache 2.0 หรือ MIT ค่อนข้างแจกจ่ายซ้ำได้ง่าย ในขณะที่ใบอนุญาตเฉพาะแบบห้ามใช้เชิงพาณิชย์หรือเงื่อนไข "จำกัดเฉพาะงานวิจัย" อาจถูกตีความว่าต้องส่งต่อไปยังโมเดลที่ Merge แล้วด้วย
- ข้อจำกัดในการเผยแพร่น้ำหนัก (Weight): โมเดลบางตัวห้ามการแจกจ่ายน้ำหนัก (Weight) ของโมเดลโดยชัดแจ้ง เนื่องจากโมเดลที่ Merge แล้วมีน้ำหนักรวมอยู่ด้วย จึงอาจตกอยู่ภายใต้ข้อจำกัดนี้เช่นกัน
หลักการสำคัญคือต้องตรวจสอบเงื่อนไขใบอนุญาตของโมเดลต้นทางแต่ละตัวแยกกัน หากใช้ภายในองค์กรเท่านั้นจะมีความเสี่ยงต่ำ แต่หากต้องการเผยแพร่หรือแจกจ่ายบนแพลตฟอร์มอย่าง Hugging Face แนะนำให้ตรวจสอบใบอนุญาตของโมเดลต้นทางทั้งหมดอย่างละเอียด และปรึกษาฝ่ายกฎหมายหากจำเป็น
นอกจากนี้ การระบุรายละเอียดใน Model Card ก็มีความสำคัญ การระบุชื่อ เวอร์ชัน และใบอนุญาตของโมเดลต้นทางให้ชัดเจน เพื่อให้ผู้ใช้งานสามารถตัดสินใจได้อย่างเหมาะสม ถือเป็นสิ่งที่จำเป็นในมุมมองของ AI ที่มีความรับผิดชอบ (Responsible AI) ทั้งนี้ โปรดตรวจสอบเงื่อนไขใบอนุญาตล่าสุดอย่างเป็นทางการจากหน้าเว็บไซต์ของโมเดลแต่ละตัวเสมอ
ผู้เขียน・ผู้ตรวจสอบ
Yusuke Ishihara
เริ่มเขียนโปรแกรมตั้งแต่อายุ 13 ปี ด้วย MSX หลังจบการศึกษาจากมหาวิทยาลัย Musashi ได้ทำงานพัฒนาระบบขนาดใหญ่ รวมถึงระบบหลักของสายการบิน และโครงสร้าง Windows Server Hosting/VPS แห่งแรกของญี่ปุ่น ร่วมก่อตั้ง Site Engine Inc. ในปี 2008 ก่อตั้ง Unimon Inc. ในปี 2010 และ Enison Inc. ในปี 2025 นำทีมพัฒนาระบบธุรกิจ การประมวลผลภาษาธรรมชาติ และแพลตฟอร์ม ปัจจุบันมุ่งเน้นการพัฒนาผลิตภัณฑ์และการส่งเสริม AI/DX โดยใช้ generative AI และ Large Language Models (LLM)


