أحمد حايس
الرئيسيةمن أناالدوراتالمدونةالمناهج والباقات
أحمد حايس

دورات عربية متخصصة في التقنية والبرمجة والذكاء الاصطناعي.

المنصة مبنية على الوضوح، التطبيق، والنتيجة النافعة: شرح مرتب يساعدك تفهم الأدوات، تكتب كودًا أفضل، وتستخدم الذكاء الاصطناعي بوعي داخل العمل الحقيقي.

تعلم أسرعوصول مباشر للدورات والمسارات من الموبايل.
تنقل أوضحالروابط الأساسية والدعم في مكان واحد بدون تشتيت.

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • المناهج والباقات
  • المدونة

الدعم

  • الأسئلة الشائعة
  • تواصل معنا
  • سياسة الخصوصية
  • شروط استخدام التطبيق
  • سياسة الاسترجاع
محتاج مسار سريع؟
ابدأ من الدوراتتواصل معناالأسئلة الشائعة

© 2026 أحمد حايس. جميع الحقوق محفوظة.

الرئيسيةالدوراتالمناهجالمدونةالدخول
الذكاء الاصطناعي

Mixture of Experts للمحترف: سعة 671 مليار باراميتر بحساب 37 مليار فقط

محترف٢٤ يونيو ٢٠٢٦5 دقائق قراءة
Mixture of Experts للمحترف: سعة 671 مليار باراميتر بحساب 37 مليار فقط

Mixture of Experts للمحترف: سعة 671 مليار باراميتر بحساب 37 مليار فقط

المستوى المطلوب: محترف — يفترض معرفتك بأساسيات الـ Transformer وتشغيل النماذج على GPU.

الخلاصة الأول: MoE بيخلّيك تبني نموذج بسعة 671 مليار باراميتر، وتدفع تكلفة حساب نموذج 37 مليار بس لكل توكن. يعني سعة نموذج ضخم بفاتورة استدلال نموذج متوسط — بشرط يكون عندك VRAM يكفّي.

المشكلة باختصار

في النموذج الكثيف (Dense)، كل توكن بيمرّ على كل الأوزان. لو ضاعفت الباراميترات عشان تزوّد الجودة، بتضاعف تكلفة كل توكن وزمن الاستجابة معاها. ده بيخلّي تكبير النموذج غالي بشكل خطّي. السؤال اللي MoE بيجاوب عليه: تكبّر سعة النموذج من غير ما تكبّر فاتورة كل توكن بنفس النسبة؟ ودي مش نظرية — البنية دي شغّالة في الإنتاج دلوقتي في DeepSeek وMixtral وغيرهم.

الفكرة بمثال بسيط

تخيّل عيادة فيها 8 أطباء متخصصين: قلب، عظام، جلدية، وهكذا. لما مريض يدخل، موظف الاستقبال بيقرأ الشكوى ويحوّله لأنسب طبيبين بس، مش بيعرضه على الـ8 كلهم. النتيجة: المريض ياخد رأي متخصص دقيق، والعيادة بتخدم مرضى أكتر، لأن كل طبيب بيشتغل على الحالات اللي تخصّه فقط.

موظف الاستقبال ده هو الـ Router. الأطباء هم الـ Experts. وقرار "طبيبين بس" هو الـ top-2 routing. النموذج فيه خبرة 8 أطباء مخزّنة، لكن كل حالة بتكلّف وقت طبيبين فقط.

التعريف العلمي الدقيق

طبقة MoE بتستبدل طبقة الـ feed-forward العادية جوّه الـ Transformer بمجموعة شبكات FFN مستقلة اسمها experts، وقدّامها شبكة صغيرة اسمها gating network أو router. لكل توكن، الراوتر بيحسب درجات (logits) لكل خبير، بياخد أعلى k خبير (غالبًا k=2)، بيعمل softmax على درجاتهم، وبيجمع مخرجاتهم موزونة. باقي الخبراء مابيتفعّلوش أصلًا للتوكن ده — وده اللي اسمه conditional أو sparse activation.

الفرق الجوهري بالظبط: عدد الباراميترات الكلي بيكبر مع عدد الخبراء، لكن الحساب الفعلي (FLOPs) لكل توكن بيتحدد بعدد الخبراء النشطين بس مش الكل. الفكرة دي اتأسّست في ورقة Shazeer وزملائه سنة 2017، واتعمّمت في Switch Transformers سنة 2021 بتوجيه خبير واحد (top-1).

مخطط أعمدة يقارن 671 مليار باراميتر إجمالي في DeepSeek-V3 مقابل 37 مليار نشط لكل توكن

الأرقام اللي بتفرق

  • DeepSeek-V3: 671 مليار باراميتر إجمالي، 37 مليار نشط لكل توكن (5.5% بس). يعني تكلفة الحساب لكل توكن تقارب نموذج كثيف أصغر بنحو 18 إلى 20 مرة. واتدرّب على 14.8 تريليون توكن في حدود 2.788 مليون ساعة GPU من نوع H800.
  • Mixtral 8x7B: 46.7 مليار باراميتر إجمالي، 12.9 مليار نشط (top-2 من 8 خبراء)، وبيدّي جودة قريبة من Llama 2 70B باستدلال أسرع حوالي 6 مرات.

ركز في نقطة بتلخبط ناس كتير: "8x7B" مش معناها 56 مليار. طبقات الـ attention مشتركة بين الخبراء، فالإجمالي بيطلع 46.7 مليار مش حاصل ضرب 8 في 7.

مثال تنفيذي: طبقة top-2 MoE بـ PyTorch

الكود ده بيوضّح قلب الفكرة بالتفاصيل: راوتر، اختيار خبيرين، ودمج موزون. شغّال زي ما هو.

Python
import torch, torch.nn as nn, torch.nn.functional as F

class MoELayer(nn.Module):
    def __init__(self, d_model=512, d_ff=2048, n_experts=8, top_k=2):
        super().__init__()
        self.top_k = top_k
        self.gate = nn.Linear(d_model, n_experts, bias=False)
        self.experts = nn.ModuleList([
            nn.Sequential(nn.Linear(d_model, d_ff), nn.GELU(),
                          nn.Linear(d_ff, d_model))
            for _ in range(n_experts)
        ])

    def forward(self, x):
        logits = self.gate(x)
        weights, idx = torch.topk(logits, self.top_k, dim=-1)
        weights = F.softmax(weights, dim=-1)
        out = torch.zeros_like(x)
        for slot in range(self.top_k):
            for e in range(len(self.experts)):
                mask = idx[:, slot] == e
                if mask.any():
                    out[mask] += weights[mask, slot:slot+1] * self.experts[e](x[mask])
        return out

x = torch.randn(16, 512)
print(MoELayer()(x).shape)

اللي بيحصل فعلاً: لكل توكن بنفعّل خبيرين بس من الثمانية. لو زوّدت n_experts لـ 64، السعة بتكبر 8 أضعاف، بس الـ FLOPs لكل توكن تقريبًا ثابتة، لأن top_k لسه 2.

الـ trade-offs: بتكسب إيه وبتخسر إيه

الافتراض هنا إنك بتشغّل على عتاد فيه VRAM يكفّي تحميل كل الخبراء، وإن الـ workload عندك throughput-bound مش latency-bound على طلب واحد.

  • بتكسب الحساب: FLOPs وزمن استجابة أقل لكل توكن عند نفس السعة، وتدريب أرخص لكل درجة جودة.
  • بتخسر الذاكرة: لازم تحمّل كل الأوزان في الـ VRAM حتى لو 5.5% بس بيشتغلوا فعليًا. DeepSeek-V3 محتاج مئات الجيجابايت موزّعين على أكتر من GPU. الـ trade-off هنا واضح: MoE بيوفّر حساب، مش ذاكرة.
  • بتخسر البساطة: الراوتر ممكن يميل لخبراء معيّنين ويهمل الباقي (load imbalance). الحل التقليدي auxiliary loss للموازنة، أو طريقة DeepSeek الأحدث auxiliary-loss-free. وفي batch صغير، توزيع التوكنز على الخبراء بيبوّظ كفاءة استغلال الـ GPU.

متى لا تستخدم هذه البنية

بدل ما تروح على MoE بشكل تلقائي، تجنّبها في الحالات دي:

  • عتاد محدود الذاكرة أو نشر على single-GPU أو الـ edge: النموذج الكثيف بنفس الـ FLOPs هيستغل الـ VRAM أحسن بكتير.
  • أحمال حسّاسة للزمن بـ batch=1: مكسب الـ FLOPs بيضيع وسط overhead التوجيه وعرض نطاق الذاكرة.
  • فريق صغير من غير بنية تدريب توزّع الخبراء وتوازن الأحمال: هتقابل عدم استقرار في التدريب من غير عائد حقيقي.

الخطوة التالية

نزّل Mixtral-8x7B أو DeepSeek-V2-Lite من Hugging Face، وشغّله بـ vLLM مع --tensor-parallel-size على أكتر من GPU، وقِس حاجتين بالظبط: tokens/sec وذروة الـ VRAM. قارنهم بنموذج كثيف بنفس جودة المخرجات على شغلك الحقيقي. لو الـ VRAM كفّت والـ throughput طلع أعلى، يبقى MoE يستاهل التعقيد؛ غير كده فضّل الكثيف.

المصادر

  • DeepSeek-V3 Technical Report (arXiv:2412.19437) — أرقام 671B/37B و14.8 تريليون توكن و2.788 مليون ساعة H800.
  • Mixtral of Experts، Mistral AI (arXiv:2401.04088) — أرقام 46.7B/12.9B وtop-2 من 8.
  • Shazeer et al. 2017, Sparsely-Gated Mixture-of-Experts (arXiv:1701.06538) — أصل فكرة الـ gating المتناثر.
  • Fedus et al. 2021, Switch Transformers (arXiv:2101.03961) — توجيه top-1 وتوسيع البنية.

هل استفدت من المقال؟

اطّلع على المزيد من المقالات والدروس المجانية من نفس المسار المعرفي.

تصفّح المدونة