Mixture of Experts (MoE): ازاي Mixtral 8x7B بيغلب Llama 70B في السرعة بنفس مستوى الجودة
لو بتشغّل Llama 3.1 70B على A100 80GB وبتدفع $1.92 في الساعة علشان تخدم 38 token في الثانية بس، Mixtral 8x7B بنفس الـ GPU بيوصلك لـ 142 token/sec بمستوى جودة قريب جداً (MMLU 70.6 vs 68.4) وبتكلفة inference أقل 69%. الفرق مش في حجم النموذج، الفرق في إن MoE بيشغّل 12.9B parameter فقط من إجمالي 46.7B لكل token.
المشكلة باختصار
النماذج الكثيفة (Dense Models) زي Llama و GPT-3 بتشغّل كل الـ parameters لكل token بتولّده. يعني لو عندك مودل 70B وبتولّد جملة فيها 100 token، GPU بيعمل 7 تريليون عملية ضرب على الأقل. ده بيخلّي:
- الـ throughput محدود بسرعة الـ memory bandwidth (HBM3 بيقرا 3.35TB/sec على A100 = ~47 token/sec كحد أقصى نظري لمودل 70B بـ FP16).
- التكلفة بتطلع خطية مع حجم المودل: مودل 2× أكبر = تكلفة inference 2× تقريباً.
- الـ scaling محدود: لو عايز جودة GPT-4، محتاج مودل يقارب 1.7T parameter، اللي يعني 200GB+ ذاكرة لكل instance.
الـ trade-off هنا اللي بقى في الـ industry لسنين: إما جودة عالية وتكلفة عالية، أو العكس. MoE بيكسر المعادلة دي.
المثال البسيط: المستشفى التخصصية
تخيّل مستشفى فيها 8 أطباء، كل واحد متخصص في نظام مختلف: قلب، عظام، جلد، أعصاب، كلى، رئة، أنف وأذن، هضمي. لما يدخل مريض جديد، الاستقبال (Triage Nurse) بتشوف حالته في 30 ثانية وبتقرر يروح لـ دكتورين فقط من الـ 8: مثلاً قلب وأعصاب لو الأعراض مرتبطة بدوخة وضيق نفس.
المستشفى عندها قدرة كاملة = 8 أطباء × كل خبرة. لكن لكل مريض، القدرة المُستهلكة = دكتورين بس. ده بيخلّي:
- المستشفى تخدم 4× مرضى أكتر بنفس الـ overhead.
- وقت الانتظار يقل، لأن مفيش دكتور واحد بيشوف كل المرضى.
- الجودة نفسها (أو أحسن)، لأن الدكتور المتخصص أدق من ممارس عام.
ده بالظبط اللي بيعمله Mixtral 8x7B: 8 "خبراء" (Expert Networks)، Router بيختار 2 منهم لكل token. القدرة الكلية 47B parameter، القدرة المُستهلكة 13B parameter لكل token.
الشرح العلمي: Sparse Activation و Top-K Gating
كل Transformer block في Mixtral بيحتوي على:
- Self-Attention layer (مشترك، مش متغيّر عن الـ dense models).
- 8 Feed-Forward Networks (Experts) بدل واحد. كل expert فيهم 7B parameter.
- Gating Network (Router): شبكة صغيرة (~32K parameter) بتاخد الـ hidden state وتطلع 8 logits، كل logit بيمثّل مدى ملاءمة الـ expert المقابل للـ token الحالي.
عملية الـ Top-K Gating بتشتغل كالآتي للـ token الواحد:
]]>