أحمد حايس
الرئيسيةمن أناالدوراتالمدونةالعروض
أحمد حايس

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

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

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

المنصة

  • الرئيسية
  • من أنا
  • الدورات
  • العروض
  • المدونة

الدعم

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

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

الرئيسيةالدوراتالعروضالمدونةالدخول

Mixture of Experts للمتوسط: ليه DeepSeek V3 بـ 671B parameter بيشتغل بتكلفة 37B

📅 ١١ مايو ٢٠٢٦⏱ 6 دقائق قراءة
Mixture of Experts للمتوسط: ليه DeepSeek V3 بـ 671B parameter بيشتغل بتكلفة 37B

المستوى المطلوب: متوسط — محتاج معرفة أساسية بـ Transformers وفكرة الـ feed-forward layer داخل الـ LLM. لو لسه مبتدئ، اقرأ أول مقال عن البنية العامة للموديلات قبل ده.

DeepSeek V3 بـ 671 مليار parameter بيرد على prompt في نفس الوقت اللي بياخده موديل 37 مليار. مش سحر، ده Mixture of Experts. هتفهم في 8 دقايق ليه الـ architecture دي بقت معيار 2026، ازاي تطبقها، وإمتى لازم تتفاداها.

Mixture of Experts: 8 خبراء بدل عقل واحد ضخم

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

الـ Dense Transformer التقليدي بيشغّل كل الـ parameters على كل token بيمر في الموديل. لو الموديل 70 مليار parameter، انت بتدفع compute لـ 70 مليار في كل كلمة بتطلع — حتى لو السؤال "السلام عليكم". ده هدر طاقة فعلي وفاتورة GPU بتطلع للسماء على شغل غير محتاج.

MoE بيقسّم الـ feed-forward layer لـ N "خبير" منفصل (8 في Mixtral، 256 في DeepSeek V3). في كل token، router صغير بيختار k خبراء يشتغلوا بس. الباقي بياخد إجازة. النتيجة: موديل بسعة هائلة لكن بتكلفة شغل صغيرة.

تصور بصري لشبكة عصبية متفرّعة تمثل architecture الـ Mixture of Experts مع موجّه يوزع المعالجة على خبراء متخصصين

تقريب للمبتدئ: عيادة تخصصات

تخيل عيادة فيها 8 دكاترة: قلب، عظام، عيون، جلد، أعصاب، أسنان، أطفال، باطنة. لما المريض بيدخل، موظف الاستقبال (الـ router) بيقرأ شكواه ويوديه للدكتور المناسب. مش معقول كل دكتور يقعد يكشف على كل مريض.

الـ Dense Transformer زي عيادة فيها نفس الـ 8 دكاترة بس كلهم بيكشفوا على كل مريض بالترتيب. التشخيص في الآخر هو هو، بس استهلكت 8 ساعات شغل بدل ساعة. الـ MoE بيختار 2 دكاترة فقط لكل مريض. نفس جودة التشخيص، 25% من الوقت والتكلفة.

دلوقتي بعد ما المثال واضح، نروح للتعريف الرياضي الدقيق.

التعريف العلمي بالظبط

Mixture of Experts تاريخها بيرجع لـ ورقة Jacobs et al. 1991، لكن النسخة المعاصرة في LLMs مبنية على ورقة Shazeer et al. 2017 (Sparsely-Gated Mixture-of-Experts) من Google Brain، وبعدها Switch Transformer من Fedus et al. 2022. الفكرة الرياضية:

  • عندك N خبراء، كل واحد عبارة عن feed-forward network مستقل بـ d parameter.
  • Router function G(x) بياخد الـ token x ويرجّع توزيع احتمالي على N.
  • بنختار أعلى k خبراء فقط (في DeepSeek V3: k=8 من 256 expert + خبير مشترك).
  • الـ output النهائي = مجموع موزون لمخرجات الخبراء المختارين.

اقتصاد الـ compute: لو الموديل فيه 671 مليار parameter لكن نختار 37 مليار بس في كل forward pass، التكلفة الفعلية لكل token = 5.5% من حجم الموديل الكامل. بتدفع compute لموديل 37B وبتاخد سعة معرفية لموديل 671B.

الكود الفعلي: MoE في 24 سطر PyTorch

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

class SimpleMoE(nn.Module):
    def __init__(self, dim=512, num_experts=8, top_k=2):
        super().__init__()
        self.num_experts = num_experts
        self.top_k = top_k
        self.router = nn.Linear(dim, num_experts)
        self.experts = nn.ModuleList([
            nn.Sequential(
                nn.Linear(dim, dim * 4),
                nn.GELU(),
                nn.Linear(dim * 4, dim),
            )
            for _ in range(num_experts)
        ])

    def forward(self, x):
        logits = self.router(x)
        weights, indices = torch.topk(logits, self.top_k, dim=-1)
        weights = F.softmax(weights, dim=-1)

        output = torch.zeros_like(x)
        for i in range(self.top_k):
            expert_idx = indices[..., i]
            for e in range(self.num_experts):
                mask = (expert_idx == e)
                if mask.any():
                    expert_out = self.experts[e](x[mask])
                    output[mask] += weights[..., i][mask].unsqueeze(-1) * expert_out
        return output

الكود ده شغّال على PyTorch 2.4+. الـ active parameters لكل token = top_k × parameters(expert) + router. لو كل expert فيه 100 مليون parameter وعندك 8 منهم، الموديل الكامل 800M لكن الـ compute الفعلي لكل token = 200M بس.

الأرقام الحقيقية: DeepSeek V3 ضد Llama 3.1 70B

رسوم بيانية تقارن أداء DeepSeek V3 و Llama 70B على معايير MMLU و HumanEval

على أساس قياسات DeepSeek V3 الرسمية (تقرير DeepSeek-AI، ديسمبر 2024) و Llama 3.1 70B (Meta technical report، يوليو 2024):

  • إجمالي الـ parameters: DeepSeek V3 = 671B / Llama 70B = 70.6B.
  • Active parameters لكل token: DeepSeek V3 = 37B / Llama 70B = 70.6B.
  • MMLU score: DeepSeek V3 = 88.5% / Llama 70B = 86.0%.
  • HumanEval: DeepSeek V3 = 82.6% / Llama 70B = 80.5%.
  • تكلفة output token لكل مليون: DeepSeek V3 API = $1.10 / Llama 70B عبر Together AI = $0.88.
  • الذاكرة المطلوبة للموديل: DeepSeek V3 = 1.3TB FP16 / Llama 70B = 140GB FP16.

اللي بيحصل فعلًا: DeepSeek بياخد ذاكرة 10× أكتر، لكنه بيشغل compute 2× أقل لكل token وبيتفوّق في الـ benchmarks. لو عندك GPU memory كتير لكن compute محدود، MoE يكسب بسهولة. لو عندك memory محدودة و compute فايض، Dense يكسب.

الـ trade-offs الخفية اللي محدش بيقولك عليها

Trade-off 1: الذاكرة قاتلة. لازم تحمّل كل الـ experts في الذاكرة حتى لو 2 بس بيشتغلوا في كل token. ده بيخلي MoE لا يصلح لـ edge devices ولا حتى GPUs بـ 24GB. لازم 8× H100 على الأقل علشان تشغّل DeepSeek V3 بكفاءة.

Trade-off 2: Expert Collapse. في تجارب التدريب، الـ router بيختار نفس 2-3 خبراء بس وباقي الخبراء مش بيتدرّبوا. الحل: auxiliary load-balancing loss يجبر التوزيع المتساوي — بتكلف 3-5% من جودة الموديل النهائية.

Trade-off 3: Batch Inefficiency. لو الـ batch فيه 8 tokens وكل واحد بيختار خبراء مختلفين، GPU بيستحيل عليه يعمل matrix multiplication كفؤ. ده بيقلل throughput بنسبة 30-40% مقارنة بـ Dense على نفس الـ active parameter count. الحل التطبيقي: token grouping قبل الـ expert dispatch.

Trade-off 4: تعقيد الـ distributed training. Expert Parallelism (كل GPU بياخد expert أو اتنين) بيتطلب all-to-all communication بين الـ GPUs في كل MoE layer. لو الـ network مش InfiniBand بسرعة 400Gbps، التدريب هيقف على الـ communication overhead.

متى MoE بيكون اختيار غلط

الافتراض إن MoE دايمًا أحسن غلط. متستخدمش MoE في الحالات دي:

  • Edge inference: لو هتشغّل الموديل على لاب توب أو موبايل، الـ memory pressure هيقتلك. ابعد عنه واستخدم Phi-4 أو Llama 3.2 3B.
  • موديلات تحت 7B: الـ overhead بتاع الـ router مش بيستحق التوفير. Dense أبسط وأسرع.
  • Fine-tuning متخصص: Dense models أسهل بكتير في الـ LoRA و QLoRA. MoE بيتطلب تقنيات خاصة (Expert-LoRA, PESC).
  • Latency-critical (real-time): الـ routing بيضيف 8-12ms في كل MoE layer، بيتراكم بسرعة في الموديلات اللي فيها 32+ layer.
  • Single-GPU deployment: لو عندك GPU واحدة، Dense هيستغل الذاكرة بشكل أفضل بكتير.

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

لو فضولك زاد، نزّل DeepSeek V3 من Hugging Face وشغّله محليًا باستخدام sglang أو vllm — الـ inference engines الوحيدة اللي بتدعم MoE بكفاءة في 2026. لو ما عندكش 8 GPUs، جرّب Mixtral 8x7B (47B total، 13B active) — أرخص نقطة دخول لـ MoE وبيشتغل على 2× A100. قارن tokens/sec مع Llama 3.1 70B على نفس الـ hardware وهتشوف الفرق بنفسك.

المصادر

  • Shazeer et al. 2017 — Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer (arXiv:1701.06538)
  • DeepSeek-AI 2024 — DeepSeek-V3 Technical Report (arXiv:2412.19437)
  • Fedus, Zoph, Shazeer 2022 — Switch Transformer: Scaling to Trillion Parameter Models (arXiv:2101.03961)
  • Jiang et al. 2024 — Mixtral of Experts (arXiv:2401.04088)
  • Meta AI 2024 — The Llama 3 Herd of Models (arXiv:2407.21783)
  • Jacobs et al. 1991 — Adaptive Mixtures of Local Experts (Neural Computation 3(1))

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

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

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