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

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

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

المنصة

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

الدعم

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

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

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

التقطير المعرفي: إزاي يتعلّم نموذج صغير من نموذج عملاق

متوسط31 يوليو 20265 دقائق قراءة
التقطير المعرفي: إزاي يتعلّم نموذج صغير من نموذج عملاق

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

لو عايز نموذج أصغر 40% وأسرع 60% في الاستدلال، بس يحتفظ بحوالي 97% من دقة النموذج الكبير، التقطير المعرفي هو الطريقة اللي بتوصّلك لده. المقال ده بيشرحلك إزاي، بمثال بسيط الأول، وبعدين بالكود والأرقام.

التقطير المعرفي (Knowledge Distillation): إزاي يتعلّم نموذج صغير من نموذج عملاق

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

عندك نموذج كبير دقته ممتازة، بس بطيء وغالي في التشغيل. الطريقة الشائعة إنك تدرّب نموذج صغير من الصفر على نفس البيانات. الطريقة دي بتفشل غالبًا: النموذج الصغير بيوصل لدقة أقل بفرق واضح، لأنه بيتعلّم من "إجابات صحيحة/خطأ" بس، من غير ما يشوف تفكير النموذج الكبير. التقطير بيحل ده: النموذج الصغير (الطالب) يتعلّم يقلّد مخرجات النموذج الكبير (المعلّم)، مش بس الإجابة النهائية.

مثال بسيط: المدرّس اللي بيشرح ليه الإجابة غلط

تخيّل طالبين بيتعلّموا يفرّقوا بين صور الحيوانات. الطالب الأول عنده كتاب فيه الإجابة الصحيحة بس: "الصورة دي قطة". خلاص، معلومة واحدة.

الطالب التاني عنده مدرّس شاطر بيقوله: "دي قطة باحتمال 72%، بس فيها شبه من كلب بنسبة 19%، وممكن تتلخبط مع ثعلب بنسبة 7%، ومستحيل تكون مركب". المدرّس هنا مبيديش الإجابة وبس، بيدّي "درجات التشابه" اللي في دماغه.

الطالب التاني هيتعلّم أسرع وأحسن، لأنه عرف إن القطة والكلب قريبين في الشكل، والقطة والمركب بعيدين تمامًا. المعلومة الزيادة دي اسمها بالظبط "المعرفة المظلمة" (dark knowledge)، وهي جوهر التقطير.

المفهوم علميًا: الاحتمالات الناعمة ودرجة الحرارة

النموذج العادي بيتدرّب على "تسمية صلبة" (one-hot): القطة = 1 وكل الباقي = 0. ده بيرمي معلومة مهمة: العلاقات بين الفئات. التقطير بيستبدل ده بـ"تسمية ناعمة" (soft labels) جايه من المعلّم، وهي توزيع احتمالات كامل على كل الفئات.

المشكلة إن النموذج الكبير بيبقى واثق جدًا، فبيطلع احتمال زي 0.99 للقطة وشبه صفر للباقي، وده بيخفي المعرفة المظلمة. الحل اللي قدّمه Hinton وزملاؤه سنة 2015 هو "درجة الحرارة" (temperature). بنقسم الـ logits على T قبل الـ softmax:

p_i = softmax(z_i / T)

لمّا T = 1 ده الـ softmax العادي. لمّا نرفع T (مثلًا 4)، التوزيع بيبقى "أنعم" وبتظهر الفروق الصغيرة بين الفئات. الافتراض هنا إن الفروق الصغيرة دي فيها إشارة تعليمية حقيقية، مش ضوضاء. الطالب بيتدرّب على هدفين: يقلّد التوزيع الناعم للمعلّم (خسارة KL divergence عند نفس T)، ويصيب الإجابة الحقيقية كمان (خسارة cross-entropy عادية).

الحل عمليًا: كود خسارة التقطير

ده مثال شغّال بـ PyTorch لدالة الخسارة المركّبة. الطالب بياخد الاتنين: هدف المعلّم الناعم، والإجابة الحقيقية.

Python
import torch
import torch.nn.functional as F

def distillation_loss(student_logits, teacher_logits, true_labels,
                      T=4.0, alpha=0.7):
    # 1) خسارة التقطير: قلّد توزيع المعلّم الناعم
    soft_teacher = F.softmax(teacher_logits / T, dim=1)
    soft_student = F.log_softmax(student_logits / T, dim=1)
    kd = F.kl_div(soft_student, soft_teacher, reduction="batchmean")
    kd = kd * (T * T)   # مهم: نعوّض تصغير التدرّج بسبب القسمة على T

    # 2) الخسارة الصلبة: أصِب الإجابة الحقيقية
    hard = F.cross_entropy(student_logits, true_labels)

    # 3) اخلطهم: alpha للمعلّم، الباقي للإجابة الحقيقية
    return alpha * kd + (1.0 - alpha) * hard

# داخل حلقة التدريب:
# teacher في وضع eval و no_grad، الطالب بس اللي بيتدرّب
with torch.no_grad():
    t_logits = teacher(x)
s_logits = student(x)
loss = distillation_loss(s_logits, t_logits, y, T=4.0, alpha=0.7)
loss.backward()

لاحظ ضرب الخسارة في T*T. ده مش تفصيلة تجميلية: القسمة على T بتصغّر التدرّجات بمعامل 1/T²، فبنضرب في T² علشان نرجّع حجم التدرّج لوضعه الطبيعي ونوازن بين الهدفين. لو نسيته، الطالب هيتعلّم من الإجابة الصلبة أكتر بكتير من المعلّم.

سيناريو واقعي وأرقام

لو عندك خدمة تصنيف نصوص بتخدم مليون طلب في اليوم على نموذج BERT كامل، وكل طلب بياخد ~40 مللي ثانية. لو قطّرت لـ DistilBERT، هتنزل لحوالي 16 مللي ثانية للطلب. النتيجة المنشورة من فريق Hugging Face: DistilBERT أصغر بـ40% في عدد الباراميترات، أسرع بـ60% في الاستدلال، ويحتفظ بـ97% من أداء BERT على مقياس GLUE. عمليًا ده معناه سيرفرات أقل وتكلفة أقل، مقابل نقطة أو نقطتين في الدقة.

الاتجاه نفسه ظهر بقوة في 2025 مع نماذج DeepSeek-R1 المقطّرة: قدرة الاستدلال اتنقلت من نموذج ضخم لنماذج أصغر مبنية على Qwen وLlama، فبقى ممكن تشغّل استدلال محترم على كارت شاشة واحد بدل عنقود كامل.

الـ trade-offs وما يجب الانتباه له

  • بتكسب: نموذج أصغر وأسرع وأرخص في التشغيل، بدقة قريبة من الكبير.
  • بتخسر: محتاج المعلّم شغّال وقت التدريب (تكلفة حساب زيادة مؤقتة)، ولازم تظبط T وalpha بالتجربة. قيم البداية المعقولة: T بين 2 و5، وalpha حوالي 0.7.
  • الافتراض: إن المعلّم فعلًا أدق من أي نموذج صغير هتدرّبه من الصفر. لو المعلّم ضعيف، التقطير هيورّث ضعفه.

متى لا تستخدم هذه الطريقة

متستخدمش التقطير لو النموذج الصغير لوحده بيوصل لنفس الدقة المطلوبة من غير معلّم — بتضيف تعقيد بلا مقابل. وكمان لو مبقاش عندك وصول لـ logits المعلّم (بس API نصّي بيرجّع الإجابة النهائية فقط)، فالتقطير الكلاسيكي بالاحتمالات الناعمة مش هينفع، وساعتها بتلجأ لتقطير على مستوى الإجابات (response-based) وهو أضعف. وأخيرًا، لو الفجوة بين المعلّم والطالب ضخمة جدًا (مثلًا معلّم 70B وطالب صغير جدًا)، الطالب ممكن ميقدرش يقلّد، والمكسب بيقل.

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

خُد نموذجك الكبير الحالي، خزّن مخرجاته (logits) على مجموعة تدريبك مرة واحدة، وبعدين درّب طالب أصغر بالكود اللي فوق بـ T=4 وalpha=0.7. قيس الفرق في الدقة والزمن قبل وبعد. لو الطالب نزل أكتر من نقطتين في الدقة، جرّب تنزّل T لـ2 أو ترفع alpha؛ ده غالبًا معناه إن التوزيع الناعم أنعم من اللازم.

المصادر

  • Hinton, Vinyals, Dean — "Distilling the Knowledge in a Neural Network" (2015), arXiv:1503.02531 — مصدر فكرة الاحتمالات الناعمة ودرجة الحرارة ومعامل T².
  • Sanh et al. — "DistilBERT, a distilled version of BERT" (2019), arXiv:1910.01108 — مصدر أرقام: أصغر 40%، أسرع 60%، 97% من أداء BERT على GLUE.
  • DeepSeek-AI — "DeepSeek-R1" (2025), arXiv:2501.12948 — مصدر أمثلة تقطير قدرة الاستدلال في نماذج أصغر (Qwen/Llama).
  • توثيق PyTorch — torch.nn.functional.kl_div وcross_entropy: pytorch.org/docs.

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

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

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