تقطيع المعرفة

term_id: knowledge_distillation

Category: training_techniques

Definition

تقطيع المعرفة هو طريقة في تعلم الآلة تُستخدم لضغط شبكة عصبية كبيرة ومعقدة (المعلّم) إلى شبكة أصغر وأكثر كفاءة (الطالب). يتم تدريب نموذج الطالب لمحاكاة مخرجات النموذج الأكبر.

Summary

تقطيع المعرفة هو تقنية لضغط النموذج حيث يتعلم نموذج أصغر (طالب) محاكاة سلوك نموذج أكبر (معلّم).

Key Concepts

  • نموذج المعلّم والطالب
  • ضغط النموذج
  • الأهداف الناعمة
  • الكفاءة

Use Cases

  • نشر النماذج على الأجهزة الطرفية
  • تقليل زمن الاستجابة للاستنتاج
  • خفض تكاليف الحوسبة السحابية

Code Example

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import torch
import torch.nn as nn

def distillation_loss(student_logits, teacher_logits, temperature=2.0):
    T = temperature
    student_probs = nn.functional.softmax(student_logits / T, dim=1)
    teacher_probs = nn.functional.softmax(teacher_logits / T, dim=1)
    return nn.functional.kl_div(
        nn.functional.log_softmax(student_logits / T, dim=1),
        teacher_probs,
        reduction='batchmean'
    ) * (T * T)