Mixture of Experts (MoE)
توجّه مزيجة الخبراء (MoE) كل رمز إلى عدد قليل من الشبكات الفرعية المتخصصة، لذلك ينمو إجمالي معلمات النموذج بوتيرة أسرع بكثير من عملياته الحسابية لكل رمز.
مزيج الخبراء (MoE) بنية شبكة عصبية تقسم جزءًا من النموذج إلى شبكات فرعية متوازية عديدة تُسمى خبراء، وتستخدم موجّهًا صغيرًا متعلّمًا لإرسال كل مدخل إلى عدد قليل منهم فقط. وبما أن كل رمز أو رقعة صورة تمر عبر جزء من الخبراء، يمكن أن يزداد إجمالي عدد المعلمات بمعدل أسرع بكثير من العمليات الحسابية لكل مدخل. يحتوي Mixtral 8x7B على 47 مليار معلمة، لكنه يستخدم 13 مليارًا لكل رمز، بينما ينشّط DeepSeek-V3 37 مليارًا من أصل 671 مليارًا. وتستند طبقة MoE المتناثرة والموجّهة التي تستخدمها اليوم النماذج اللغوية الكبيرة (LLMs) إلى طبقة MoE ذات التوجيه المتناثر التي قدمتها Google عام 2017، ووصلت إلى 137 مليار معلمة بين طبقات LSTM متراصة.
آلية عمل طبقة MoE#
في المحوّل، تحل طبقة MoE عادةً محل الشبكة ذات التغذية الأمامية (FFN) التي تأتي بعد كل كتلة انتباه ذاتي. وتضم الطبقة N من شبكات FFN للخبراء ذات بنية متماثلة، إضافةً إلى موجّه هو طبقة خطية واحدة تسجل كل خبير لكل رمز. ينتقل الرمز إلى الخبراء الأعلى تسجيلًا وعددهم k، وتُوزن مخرجاتهم بدرجات الموجّه المطبّعة ثم تُجمع، بينما لا تنفذ بقية الخبراء أي عمل لذلك الرمز. ويختار Mixtral خبيرين من أصل 8 في كل طبقة، بينما يختار DeepSeek-V3 ثمانية من أصل 256 خبيرًا موجّهًا أصغر، ويرسل كل رمز أيضًا عبر خبير مشترك واحد. وبما أن التوجيه يحدث بصورة مستقلة في كل طبقة، يمكن للرمز استخدام خبراء مختلفين عند أعماق مختلفة، ويمكن لرمزين في الجملة نفسها اتخاذ مسارين مختلفين عبر الطبقة نفسها:
لم يتخصص خبراء Mixtral حسب الموضوع. ولم يجد مؤلفوه توزيعًا واضحًا للخبراء على مجالات مثل علم الأحياء أو الفلسفة؛ بل اتبع التوجيه بنية الجملة، لذا كانت الرموز مثل self في شيفرة Python ورموز المسافة البادئة تصل غالبًا إلى الخبراء أنفسهم.
موازنة الحمل وسعة الخبراء#
يميل الموجّه المهيأ حديثًا إلى تفضيل عدد قليل من الخبراء، فيتدرب هؤلاء بسرعة أكبر ويجذبون مزيدًا من الرموز، بينما يظل الآخرون بلا عمل. ويوجه المثال التالي المكوّن من ستة رموز الرموز عبر طبقة من أفضل خبيرين تضم ثمانية خبراء، ثم يحصي عدد الرموز التي يتلقاها كل خبير:
import torch
torch.manual_seed(0)
dim, num_experts, top_k = 32, 8, 2
experts = torch.nn.ModuleList(
torch.nn.Sequential(torch.nn.Linear(dim, 4 * dim), torch.nn.GELU(), torch.nn.Linear(4 * dim, dim))
for _ in range(num_experts)
)
router = torch.nn.Linear(dim, num_experts, bias=False)
tokens = torch.randn(6, dim)
# يحتفظ الموجّه بأعلى درجتين للخبير لكل رمز، ويطبق softmax عليهما لتحويلهما إلى أوزان للمزج
scores, chosen = router(tokens).topk(top_k, dim=-1)
weights = scores.softmax(dim=-1)
out = torch.zeros_like(tokens)
for e, expert in enumerate(experts):
token_idx, slot = (chosen == e).nonzero(as_tuple=True) # الرموز التي اختارت الخبير e
out[token_idx] += weights[token_idx, slot, None] * expert(tokens[token_idx])
print("Experts per token:", chosen.tolist())
print("Tokens per expert:", torch.bincount(chosen.flatten(), minlength=num_experts).tolist())يطبع أزواج الخبراء [[3, 6], [7, 6], [0, 7], [3, 1], [6, 1], [2, 3]] وإجمالي الرموز لكل خبير [1, 2, 1, 3, 0, 0, 3, 2]: يعالج الخبيران 3 و6 ثلاثة رموز لكل منهما، بينما لا يتلقى الخبيران 4 و5 أي رموز، ولا يمر كل رمز إلا عبر شبكتين من شبكات الخبراء الثماني. وأضاف محوّل Switch، الذي وجّه كل رمز إلى خبير واحد ووصل حجمه إلى 1.6 تريليون معلمة، حدًا إضافيًا لـالخسارة تبلغ قيمته أدناها عندما تتوزع الرموز واحتمالات الموجّه بالتساوي على الخبراء، وتستخدم نماذج MoE كثيرة ظهرت لاحقًا حدًا مماثلًا. ويستغني DeepSeek-V3 عن الخسارة الإضافية، ويعدل بدلًا منها تحيزًا خاصًا بكل خبير على درجات التوجيه صعودًا أو هبوطًا أثناء التدريب. كما تحد أنظمة التدريب عدد الرموز التي يقبلها الخبير في كل دفعة، أي سعته؛ وتتجاوز الرموز التي تتخطى الحد خبراء تلك الطبقة وتواصل عبر الاتصال المتبقي.
MoE والمفاهيم ذات الصلة#
- تجميع النماذج: يعالج كل نموذج كامل من عدة نماذج كل مدخل، ثم تُحسب متوسطات التنبؤات أو تُجرى عملية تصويت عليها، لذا يزداد الحساب مع كل نموذج مضاف. أما MoE فهي شبكة واحدة تُدرّب من البداية إلى النهاية، ويختار الموجّه مسارًا مختلفًا لكل رمز.
- توجيه النماذج: يختار موجّه نموذجًا كاملًا واحدًا لكل طلب، مثل اختيار نموذج صغير للأسئلة البسيطة وآخر كبير للأسئلة الصعبة. أما توجيه MoE فيحدث لكل رمز داخل كل طبقة MoE في نموذج واحد.
- مزيج الأعماق (MoD): يتيح موجّه لبعض الرموز تجاوز كتلة كاملة، لذا يختلف مقدار الحساب من رمز إلى آخر. وغالبًا ما يُدمج مع MoE.
- مزيج الوكلاء (MoA): تجيب عدة نماذج LLM منفصلة عن مطالبة، ثم تحسّن طبقات لاحقة من نماذج LLM الإجابات المجمعة؛ وهو مسار مطالبات لا يتضمن أوزانًا مشتركة.
MoE في نماذج اللغة والرؤية#
تستخدم كثير من أكبر نماذج LLM ذات الأوزان المفتوحة طبقات MoE، ومنها DeepSeek-V3 وLlama 4 وإصدارات MoE من Qwen3 وgpt-oss من OpenAI. وفي الرؤية الحاسوبية، استبدل مزيج خبراء الرؤية (V-MoE) بعض طبقات FFN في محوّل الرؤية (ViT) بخبراء، ووجّه رقع الصور الفردية، محققًا دقة تضاهي أحدث النماذج بنصف حوسبة الاستدلال فقط، ووصل إصداره ذو 15 مليار معلمة إلى دقة أفضل فئة (top-1) بنسبة 90.35% على ImageNet.
الذاكرة وتقديم الخدمة#
توفر MoE في الحساب، لا في الذاكرة: إذ يجب تحميل كل خبير رغم أن كل رمز يستخدم عددًا قليلًا منهم، لذا يحتاج Mixtral إلى ذاكرة نموذج يضم 47 مليار معلمة، مع تنفيذ عمل لكل رمز يعادل نموذجًا يضم 13 مليار معلمة. ولهذا توزع نماذج MoE الكبيرة على وحدات GPU باستخدام التوازي على مستوى الخبراء، حيث تحتفظ كل وحدة GPU بمجموعة فرعية من الخبراء، وتتبادل الأجهزة الرموز فيما بينها جميعًا لإرسال كل رمز إلى الأجهزة التي تضم خبراءه المختارين وإعادته منها. وتجمع أطر عمل مثل DeepSpeed-MoE بين التوازي على مستوى الخبراء وتوازي البيانات وتوازي الموترات لأغراض التدريب. أما نماذج الرؤية الطرفية فتتبع النهج الكثيف: يشغّل YOLO26 كل طبقة على كل صورة، لذا يكون حجم الذاكرة والحساب لكل صورة متماثلين لجميع المدخلات.










