31 ม.ค. เวลา 16:14 • วิทยาศาสตร์ & เทคโนโลยี

ทำไม DeepSeek ถึงถูก และฉลาด ตอนที่ 1: Mixture of Experts

Disclaimer: เป็นคนนอกวงการครับ ผิดพลาดยังไงขออภัยด้วยครับ ยินดีรับคำติชม
ที่ผ่านมา พอ Pat Pataranutaporn ถามเลยต้องกลับไปตกผลึกความคิดของตัวเองให้มากขึ้น และผมก็ถามตัวเองในฐานะคนที่บ้าเกี่ยวกับเรื่องประสิทธิภาพ และได้ปรับปรุงระบบหลายๆ ระบบให้ทำงานมีประสิทธิภาพมากขึ้น ถูกลง มาเยอะแล้ว ผมก็เลยพยายามมาวิเคราะห์ว่า ทำไมมันถึงทำให้ “ถูก” ได้ และคำตอบของผมอาจจะแปลกจากคนอื่นไปบ้าง เพราะผมมองทั้งในด้านเทคนิค หรือเงินไปด้วยกันครับ
💡Mixture of Experts (MoE)
เรื่องการใช้ MoE นี้ DeepSeek ไม่ใช่คนเริ่มเลยนะ จริงๆ มีงานวิจัยเรื่องนี้ออกมาตั้งแต่ช่วงปี 1990 และเริ่มมีคนให้ความสนใจกันอีกที เมื่อช่วงสองสามปีก่อน
ย้อนกลับไปเมื่อตอนที่ GPT-4 เปิดตัวออกมาเมื่อปีเศษๆ ที่แล้ว ถ้าใครจำกันได้ OpenAI เคยบอกว่า GPT-3 ใข้โมเดลขนาด 175 พันล้าน parameters แต่พอมาเป็น GPT-4 กลับไม่พูดถึงเรื่องนี้อย่างชัดๆ แค่บอกว่าใหญ่กว่าเดิมมาก จนมีคนประเมินว่าน่าจะอยู่ในระดับ 1.8 ล้านล้าน parameters
นั่นน่าจะเป็นเพราะ OpenAI เริ่มใช้ MoE มาตั้งแต่ตอนนั้น ซึ่งมีคนคาดเดาว่าแบ่ง model เป็นเสมือนมี experts 8 คนๆ ละ 220 พันล้าน parameters
นั่นเป็นเพราะในช่วงแรกของการแข่งขัน มันคืือเรื่องของการแข่งขันชิงความเป็นเจ้าในวงการ AI ด้วยการเป็นที่ 1 ด้วยการเข้าใกล้ AGI ด้วยการแข่งกันฉลาดให้เหนือมนุษย์ให้ได้เร็วที่สุด การเพิ่มขนาดโมเดลให้ใหญ่ขึ้นเรื่อยๆ จึงไม่ต่างกับการเพิ่มขนาดของเซลล์สมองในร่างกายมนุษย์หนึ่งคนให้มากขึ้น จะได้มีพื้นที่เก็บข้อมูลได้มากขึ้น แต่การทำแบบนี้ในตอนแรกอาจจะโอเค
เพราะมันไม่ได้แพงมาก แต่พอการแข่งขันเริ่มรุนแรงขึ้น การเพิ่ม parameter มันเร็วขึ้น จนการฝึกโมเดลในแต่ละครั้งเริ่มเป็นตัวเลขที่น่ากลัวขึ้นเรื่อยๆ จนเป็นเงินหลายร้อยล้านเหรียญสหรัฐ ส่วน Moore’s law version ดัดแปลงในโลก GPU หรือ Huang’s law ที่ระบุคร่าวๆ ว่า GPU จะมีประสิทธิภาพสูงขึ้นเกิน 2 เท่า ทุกๆ 2 ปีนั้น ตามไม่ทันความต้องการ
ถ้าการแข่งขันยังเป็นแบบนี้ไปเรื่อยๆ หุ้นของ Nvidia คงไปถึง infinity แน่ๆ ถ้าบริษัท AI ไม่เจ๊งไปเสียก่อน
OpenAI จึงเริ่มคิดใหม่ทำใหม่ด้วยการทำ MoE เข้ามาใช้ แต่ไม่พูดมาก
หลายๆ คนอาจจะงงว่า การทำ MoE เข้ามาใช้ แล้วมันถูกลงได้ไง ผมอยากให้เปรียบเทียบกับมนุษย์เรากันครับ
คนเราแต่ละคนมีนิวรอนอยู่ประมาณ 86 พันล้านนิวรอน และใช้พลังงานประมาณ 20 วัตต์ เพียงพอที่จะใช้ในหลอดไฟเท่านั้นเอง
ถ้ามนุษย์อยากฉลาดมากขึ้น เราคงอยากมีนิวรอนมากขึ้นจะได้ฉลาดขึ้นสินะ เราทำไม่ได้ด้วยข้อจำกัดทางชีววิทยา ถามว่าทำไมมนุษย์ถึงฉลาดขึ้นกว่าลิงที่แทบไม่ได้มีความแตกต่างในจำนวนนิวรอน (กอริลล่า 33 พันล้าน และชิมแพนซี 22 พันล้าน) มันคงอธิบายได้ด้วยทฤษฎีหลายๆ ข้อ เช่น
1. มนุษย์มีขนาดสมองที่ใหญ่เมื่อเทียบกับร่างกาย ทำให้มนุษย์เหลือเซลล์สมองเอาไว้คิดอย่างอื่นนอกจากเรื่อง กินขี้ปี้นอน (ขอโทษที่หยาบคายครับ)
2. มนุษย์รู้จักหุงหาอาหาร ทำให้มีอาหารที่สามารถย่อยได้อย่างมีประสิทธิภาพไปใช้งาน ในขณะเดียวกันการเกษตร และปศุสัตว์ทำให้มนุษย์ใช้เวลาหาอาหารน้อยลง ยิ่งมี grab/lineman/food panda/robinhood เดี๋ยวนี้แทบไม่ต้องเสียเวลาหาอาหารเลย ยิ่งทำให้เหลือเวลาคิดอย่างอื่นมากขึ้น
แต่สองสิ่งนี้คงทำให้มนุษย์ฉลาดขึ้นก็จริง แต่ยังมีความสามารถจำกัด
Yuval Harari เคยพูดไว้ว่า
If you put me and a chimpanzee together on a lone island, and we had to struggle for survival, I would definitely place my bets on the chimpanzee, not on myself.
But if you place 1,000 humans and 1,000 chimps together on a lone island and they have to struggle, then the humans will definitely win for the simple reason that 1,000 chimpanzees cannot cooperate at all.
ความสามารถที่สำคัญของมนุษย์คือการร่วมมือกันต่างหาก ถ้าสังคมมนุษย์โดยรวมอยากฉลาดขึ้น ไม่ใช่เอาเซลล์สมองของมนุษย์ทุกๆ คนไปคิดและตัดสินใจในทุกๆ เรื่องพร้อมๆ กัน โลกคงไม่ไปไหน เราจึงแบ่งงานกันทำ แบ่งอาชีพกัน มีผู้เชี่ยวชาญในแต่ละด้านที่คอยสะสมความรู้สะสมประสบการณ์ และคอยให้ความเห็นในเรื่องนั้นๆ
ในโลก AI ก็เช่นกัน แทนที่จะพัฒนาให้มันมี parameter count มากขึ้นเรื่อยๆ เลยไปเปลี่ยนให้ parameter count เยอะขึ้นแต่ไปแยกเป็นกลุ่มๆ แทน ทำให้เหมือนมี AI หลายๆ ตัวเรียนรู้ไปพร้อมกัน แต่ถ้าเรียนพร้อมกันหมดก็ติดปัญหาเดิม มันเลยต้องมีการแบ่งหน้าที่กัน เรื่องวิทยาศาสตร์ให้ AI ตัว 1,2 เรียนรู้ เรื่องภาษาให้ AI ตัว 3,4 เรียนรู้เป็นต้น
เวลาเรียนเรื่องๆ หนึ่งแทนที่จะต้องปลุก AI ทุกตัวมาเรียนรู้ จึงปลุกมาแค่นิดเดียว จึงลดการใช้พลังงานลงได้
ยิ่งไปกว่านั้น การคำนวณค่าต่างๆ ในโมเดล มักจะใช้การคูณ matrix ในการ update parameter ซึ่งมันโตเป็นแบบยกกำลังสามของขนาด matrix (O(n^3)) โดยประมาณ การแบ่งซอยย่อยจึงประหยัดมากกว่ามาก เช่น
ถ้าเดิมมี matrix ขนาด 100 ถ้ายกกำลังสามง่ายๆ ให้เข้าใจ ก็ต้องคิดเลข 100x100x100 = 1,000,000 ครั้ง แต่ถ้าซอยออกมาเหลือ 10 matrix ก็จะเหลือการคิดเลขแค่ 10x(10x10x10) หรือ 10,000 ครั้งเท่านั้นเอง ทำให้การคำนวณลดลงมาก แต่ความฉลาดอาจจะไม่ได้ลดลงมาก ถ้ามีการแบ่งกันคิดอย่างเหมาะสม
แต่ถ้าให้เริ่มจาก scratch ทั้งหมดมันคงเสียเวลานาน experts แต่ละตัวก็เหมือนกันมนุษย์เอามันมาเรียนรู้พื้นฐานก่อน เอาให้พออ่านออกเขียนได้คุยรู้เรื่อง แต่ที่ AI ไม่เหมือนมนุษย์คือตอนโคลนออกมา มันโคลนมาแบบความรู้เหมือนกันเปี๊ยบได้ด้วย โดยไม่ต้องไปเข้าไปเรียนใหม่ จึงส่งเรียนประถมแค่ตัวเดียว เสร็จแล้วจะปั๊มเพิ่มกี่ตัวก็ได้ แล้วให้มันมาเป็น expert ใน pool
หลังจากนั้นหน้าที่อีกอย่างที่สำคัญ คือ การตัดสินใจว่าในแต่ละเรื่อง จะต้องให้ใครเรียนรู้ ซึ่งจะต้องมีผู้จัดการอีกคนมาอ่านคำถามเร็วๆ แล้วตีความว่าเรื่องนี้จะให้ใครดู ซึ่งต้องแบ่งให้ค่อนข้าง consistent ไม่ใช่แบ่งมั่วๆ expert จะได้มี specialization และฉลาดมากขึ้นเรื่อยๆ ในเรื่องนั้นๆ
1
นี่เป็นกลเม็ดง่ายๆ ในการ optimize กันครับ เดี๋ยวตอนหน้าจะยังอยู่ใน MoE แต่เดี๋ยวจะเล่าในมุมของการจัดสรร expert นี่แหล่ะว่ามันน่าสนใจยังไง
โฆษณา