𝗠𝗶𝘅𝘁𝘂𝗿𝗲 𝗼𝗳 𝗘𝘅𝗽𝗲𝗿𝘁𝘀 (𝗠𝗼𝗘): 𝗛𝗼𝘄 𝗜𝘁 𝗪𝗼𝗿𝗸𝘀 𝗮𝗻𝗱 𝗪𝗵𝗲𝗻 𝘁𝗼 𝗨𝘀𝗲 𝗜𝘁
คุณต้องการขยายขนาดจากโมเดล 7B ไปเป็น 70B โดยไม่ต้องซื้อ GPU เพิ่มอีก 4 ตัว
มีคนแนะนำ Mixture of Experts (MoE) โดยอ้างว่าคุณจะได้ประสิทธิภาพระดับ 70B โดยใช้พลังการประมวลผล (compute) เพียงแค่ 7B เท่านั้น
ฟังดูเหมือนได้อะไรมาฟรีๆ แต่จริงๆ แล้วมันมีข้อแม้
มันทำงานอย่างไร?
Dense transformer อย่าง Llama 3.2 จะใช้พารามิเตอร์ทั้งหมด 100 เปอร์เซ็นต์สำหรับทุกๆ token หากคุณขยายขนาดจาก 7B เป็น 70B คุณจะต้องเพิ่มทั้งหน่วยความจำ (memory) และพลังการประมวลผล (compute) ขึ้นถึง 10 เท่า
MoE จะแยกสองส่วนนี้ออกจากกัน โมเดลจะเก็บพารามิเตอร์ไว้มากขึ้น (ใช้หน่วยความจำสูงขึ้น) แต่จะใช้พารามิเตอร์เพียงแค่บางส่วนสำหรับแต่ละ token (ใช้พลังการประมวลผลต่ำลง)
ข้อแลกเปลี่ยน (The Trade-off):
• Dense 7B: 7B total params | 7B active | 7B compute | 14 GB memory • Dense 70B: 70B total params | 70B active | 70B compute | 140 GB memory • MoE 45B: 45B total params | ~13B active | ~14B compute | ~90 GB memory
ข้อแม้คือ: คุณยังคงต้องจ่ายค่าหน่วยความจำเท่ากับโมเดลขนาดใหญ่ คุณไม่สามารถรัน Mixtral บน GPU ขนาด 24 GB เพียงตัวเดียวได้ คุณจำเป็นต้องมี VRAM มากพอที่จะเก็บ "experts" ทั้งหมด แม้แต่ตัวที่ไม่ได้ถูกใช้งานก็ตาม
สถาปัตยกรรม (The Architecture):
ใน sparse MoE, เครือข่าย Feed-Forward Network (FFN) แบบมาตรฐานจะถูกแทนที่ด้วย FFN ของ "expert" หลายๆ ตัว และตัวจัดเส้นทาง (router) ที่ผ่านการเรียนรู้มาแล้ว
- router จะรับ token เข้ามา
- มันจะให้คะแนนแก่ expert แต่ละตัว
- มันจะเลือก expert ที่มีคะแนนสูงสุด k อันดับแรก (สำหรับ Mixtral, k=2)
- มันจะส่ง token ผ่านเฉพาะ expert เหล่านั้นเท่านั้น
- มันจะรวมผลลัพธ์เข้าด้วยกัน
router ไม่ใช่ตัวจัดตารางงานแบบกำหนดเอง (manual scheduler) แต่มันคือเลเยอร์ที่ผ่านการเรียนรู้ (learned layer) มันเรียนรู้ที่จะส่ง token ทางคณิตศาสตร์ไปยัง expert ตัวหนึ่ง และส่ง token ของโค้ดไปยัง expert อีกตัวหนึ่ง
ความท้าทายในการฝึกฝน (The Training Challenge):
ความเสี่ยงที่ใหญ่ที่สุดคือ router collapse หากไม่มีตัวช่วย router อาจส่งทุก token ไปยัง expert สองตัวเดิมซ้ำๆ เมื่อ expert เหล่านั้นเก่งขึ้น router ก็จะยิ่งส่งข้อมูลไปหาพวกมันมากขึ้นไปอีก ส่งผลให้ expert ตัวอื่นๆ กลายเป็นสิ่งไร้ประโยชน์
วิศวกรจึงใช้ auxiliary load-balancing loss เพื่อแก้ไขปัญหานี้ โดยมันจะลงโทษโมเดลหากไม่ใช้งาน expert ทุกตัวอย่างเท่าเทียมกัน
เมื่อไหร่ที่ควรหลีกเลี่ยง MoE:
• คุณต้องการความหน่วง (latency) ที่คงที่: MoE มีความผันผวนของเวลาในการตอบสนองสูงกว่า • คุณมี VRAM จำกัด: หากคุณมี GPU เพียงตัวเดียวที่มีขนาดต่ำกว่า 48 GB ให้ใช้โมเดลแบบ dense ต่อไป • คุณกำลังสร้างโมเดลขนาดจิ๋ว: หากโมเดลของคุณมีพารามิเตอร์น้อยกว่า 3B ค่า overhead จะสูงเกินไป • คุณต้องการโครงสร้างพื้นฐานที่เรียบง่าย: MoE ต้องใช้ expert parallelism ที่ซับซ้อนและ custom kernels
MoE จะดีที่สุดเมื่อคุณตั้งเป้าหมายที่โมเดลฐานแบบ dense ที่มีพารามิเตอร์มากกว่า 30B และมีหน่วยความจำเพียงพอที่จะรองรับมัน
Optional learning community: https://t.me/GyaanSetuAi