لو شوفت إن DeepSeek V3 بـ 671 مليار باراميتر بيرد على سؤالك في نفس وقت موديل 37 مليار، اعرف إن ده مش تحسين بسيط في الـ GPU. ده تغيير في معمارية الموديل اسمها Mixture of Experts. الفكرة: الموديل الكبير ده بيفعّل 5.5% بس من نفسه لكل توكن. الباقي نايم.
Mixture of Experts: نمط المعمارية اللي بقى المعيار في 2026
المشكلة باختصار
الموديلات اللي زادت قدرتها بعد GPT-3 كانت بتزود الباراميترز. الباراميترز الأكتر يعني ذاكرة أكتر و FLOPs أكتر لكل توكن. النتيجة: تكلفة استدلال بتطلع خطّيًا مع الحجم. موديل 70B تقريبًا 5x أبطأ من موديل 13B على نفس الـ GPU. علشان كده الفرق بين قدرات الموديلات الكبيرة وزمن الاستجابة كان بيتسع كل سنة.
MoE بتحل المعادلة دي بفصل "حجم المعرفة" عن "حجم الحساب". تقدر تزود الباراميترز 20x من غير ما تزود تكلفة الاستدلال أكتر من 10–15%.
مثال للمبتدئ: المستشفى التخصصي
تخيّل مستشفى فيها 256 طبيب، كل طبيب متخصص في حاجة: قلب، عيون، عظام، مخ، إلى آخره. لما مريض يدخل، فيه موظف استقبال شاطر بيسأله سؤال أو اتنين، وبيوديه لـ 8 أطباء بس من الـ 256 — اللي تخصصهم قريب من حالته. باقي الـ 248 طبيب قاعدين في مكاتبهم بيشربوا قهوة.
المستشفى دي عندها معرفة هائلة (256 تخصص)، بس كل مريض بياخد وقت زيارة 8 أطباء فقط. لو كان كل مريض لازم يعدّي على الـ 256، الزحمة هتقتل المستشفى. ده بالظبط اللي بتعمله MoE.
موظف الاستقبال = الراوتر (Router/Gating Network). الأطباء = الخبراء (Experts). عدد الأطباء اللي بيشوفوا المريض = Top-K. التخصصات الجانبية اللي مش بتشتغل = Sparse activation.
التعريف العلمي بالظبط
في الـ Transformer العادي، كل طبقة فيها Self-Attention + Feed-Forward Network (FFN) واحدة. الـ FFN بياخد كل التوكنز ويمررها على نفس المصفوفات.
في طبقة MoE، الـ FFN الواحدة بتتقسّم لـ N خبير (FFN صغيرة)، وبيتضاف Gating Network (شبكة Linear بسيطة) دورها يحسب لكل توكن probabilities على الخبراء، ويختار أعلى K منهم. ده اللي بيتسمى Top-K Routing. الإخراج = جمع موزون لإخراج الـ K خبير اللي اتفعلوا.
الفرضية الأساسية: التخصص بينشأ تلقائيًا أثناء التدريب. الراوتر بيتعلم إن التوكنز الخاصة بالكود تروح لخبراء، وتوكنز اللغة الطبيعية تروح لخبراء تانيين، وهكذا. ما حدش بيفرض التخصص يدوي.
كود PyTorch: ابني MoE Layer من الصفر
import torch
import torch.nn as nn
import torch.nn.functional as F
class Expert(nn.Module):
"""خبير واحد = FFN صغيرة عادية"""
def __init__(self, d_model, d_hidden):
super().__init__()
self.fc1 = nn.Linear(d_model, d_hidden)
self.fc2 = nn.Linear(d_hidden, d_model)
def forward(self, x):
return self.fc2(F.silu(self.fc1(x)))
class MoELayer(nn.Module):
def __init__(self, d_model=768, d_hidden=2048,
num_experts=8, top_k=2):
super().__init__()
self.experts = nn.ModuleList(
[Expert(d_model, d_hidden) for _ in range(num_experts)]
)
self.gate = nn.Linear(d_model, num_experts, bias=False)
self.top_k = top_k
def forward(self, x):
# x shape: [batch, seq_len, d_model]
logits = self.gate(x) # [B, T, E]
weights, idx = logits.topk(self.top_k, dim=-1)
weights = F.softmax(weights, dim=-1)
out = torch.zeros_like(x)
for k in range(self.top_k):
expert_idx = idx[..., k] # أيّ خبير لكل توكن
w = weights[..., k].unsqueeze(-1)
for e in range(len(self.experts)):
mask = (expert_idx == e)
if mask.any():
out[mask] += w[mask] * self.experts[e](x[mask])
return out
# اختبار سريع
layer = MoELayer(d_model=768, num_experts=8, top_k=2)
x = torch.randn(2, 16, 768) # batch=2, seq=16
print(layer(x).shape) # torch.Size([2, 16, 768])
الكود ده بسيط للتعليم. في الإنتاج بيستخدموا أنوية CUDA متخصصة (مثل Megablocks أو DeepSpeed-MoE) علشان توزّع الخبراء على GPUs مختلفة وتمنع الـ load imbalance.
أرقام من موديلات حقيقية في 2026
- DeepSeek V3: 671B باراميتر إجمالي، 37B بيفعّلوا لكل توكن. 256 خبير في كل طبقة، 8 منهم بيشتغلوا (Top-8). نسبة التفعيل: 5.5%.
- Mixtral 8x7B: 46.7B باراميتر إجمالي، تقريبًا 13B بيفعّلوا. 8 خبراء، 2 بيشتغلوا. نسبة التفعيل: 28%.
- سرعة الاستدلال: Mixtral 8x7B بيرد في زمن قريب من موديل dense بـ 13B، بينما هو فعليًا أكبر منه 3.5x.
- الأداء: Mixtral تجاوز Llama 2 70B في 9 من 12 benchmark، رغم إن خبراءه المفعّلين أقل بـ 5x. (المصدر: Mistral)
- التوزّع: بحلول 2026، كل موديلات الـ frontier ما عدا Anthropic Claude بقت MoE. سبارسيتي بين 3% و 35%.
الـ Trade-offs اللي مش هتسمعها في الـ marketing
MoE بتوفر compute، مش memory. ده الفرق المش مفهوم. الكلام ده مهم: علشان الراوتر يقرر يبعت التوكن لأي خبير، كل الخبراء لازم يكونوا محمّلين في الذاكرة. يعني DeepSeek V3 لسه محتاج VRAM يستوعب 671B باراميتر (تقريبًا 700GB في FP8). بس وقت الحساب بياخد وقت 37B بس.
النتيجة العملية:
- التكلفة: بتخسر فلوس على VRAM (سيرفرات أكبر)، بتكسب فلوس على inference (latency أقل، throughput أعلى).
- الـ Load Imbalance: لو الراوتر بيبعت أغلب التوكنز لـ 2 خبراء بس من أصل 256، باقي الـ 254 بيقعدوا فاضيين. ده بيقلل كفاءة التدريب جدًا. الحل في DeepSeek V3 هو bias term ديناميكي بدّل auxiliary loss القديم. (المصدر: ورقة DeepSeek-V3 التقنية)
- الـ Routing Overhead: الراوتر نفسه بياخد وقت. لو الموديل صغير (≤ 7B)، تكلفة الراوتر بتاكل المكسب.
- صعوبة الـ Fine-tuning: Fine-tuning موديل MoE أصعب من dense. الراوتر بيتغير سلوكه، وممكن خبراء يبدأوا "يموتوا" (Dead Experts).
متى لا تستخدم Mixture of Experts
- لو عندك موديل ≤ 7B باراميتر. الفايدة هتكون ضئيلة جدًا والـ overhead هياكلها.
- لو الـ VRAM بتاعتك محدودة (RTX 4090 بـ 24GB مثلًا). DeepSeek V3 الكامل مش هيشتغل عندك أصلاً، حتى لو سرعته كانت زي 37B.
- لو شغلك Fine-tuning مكثّف على dataset صغير. مشاكل Dead Experts هتبوظ التدريب.
- لو محتاج deployment على edge devices (موبايل، سيارة). dense models أسهل في الضغط والـ quantization.
الخطوة التالية
لو شغال على inference، جرّب Mixtral 8x7B عبر vllm على GPU 80GB واقيس الـ throughput مقارنة بـ Llama 2 70B dense على نفس الكرت. لو الفرق أقل من 3x في tokens/sec، يبقى الـ batching بتاعك مش مظبوط. لو شغال على بحث، اقرا ورقة DeepSeekMoE (2401.06066) لفهم Fine-grained Experts و Shared Experts — التعديلين دول هما اللي خلوا 256 خبير ينفع.
المصادر
- DeepSeek-V3 Technical Report — arXiv:2412.19437 (الأرقام 671B/37B، 256 expert/8 active، bias-based routing).
- DeepSeekMoE: Towards Ultimate Expert Specialization — arXiv:2401.06066 (Fine-grained + Shared Experts).
- Mistral AI — Mixtral 8x7B announcement (46.7B total / 13B active، تفوق على Llama 2 70B في 9/12 benchmark).
- Cameron R. Wolfe — "Mixture-of-Experts (MoE) LLMs" deep-dive.
- Hugging Face Blog — MoE architecture search والمقارنات بين 3% و 35% sparsity في موديلات 2026.
- Megablocks (Stanford) و DeepSpeed-MoE (Microsoft) — مكتبات الإنتاج لـ MoE training.