ضغط النماذج2019متوسط10 دقيقة قراءة
DistilBERT: نسخة مُقطَّرة من BERT — أصغر وأسرع وأرخص وأخفّ
DistilBERT, a Distilled Version of BERT: Smaller, Faster, Cheaper and Lighter
Sanh, V. · Debut, L. · Chaumond, J. · Wolf, T. — EMC @ NeurIPS 2019
المشكلة
بحلول عام 2019، صار BERT والمحوِّلات الكبيرة المُدرَّبة مسبقاً هي المعيار السائد في معالجة اللغة الطبيعية، غير أن حجمها الضخم — أكثر من 110 مليون معامل — جعل تشغيلها عند مُكلفاً للغاية. لم يكن من الواقعي نشر BERT على الهواتف الذكية أو الأجهزة الطرفية أو في سيناريوهات تتطلّب استجابة فورية. وكانت الأبحاث السابقة في تُركّز على مخصّص لمهمة واحدة: تضبط النموذج أولاً على مهمة محدّدة ثم تضغطه. أي أنك تحتاج نموذجاً مضغوطاً مستقلاً لكل مهمة، ولم يكن هناك نموذج مضغوط واحد يصلح نقطةَ انطلاق عامة لأي مهمة لاحقة.
الإسهام
يُقدّم DistilBERT مُرمِّزاً محوِّلاً من ست طبقات، مُدرَّباً مسبقاً من BERT-base دون تخصيص لمهمة بعينها. يتعلّم من خلال دالة خسارة ثلاثية تجمع بين الإنتروبيا التقاطعية مع الأهداف الليّنة (خسارة التقطير)، وخسارة ، ومحاذاة الحالات الخفية عبر . المحصّلة: نموذج أصغر بنسبة 40% (66 مليون معامل مقابل 110 مليون)، وأسرع بنسبة 60% عند الاستدلال، ويحتفظ مع ذلك بنحو 97% من أداء BERT على معيار GLUE. والأهمّ أن DistilBERT نموذج عام الأغراض يمكن ضبطه الدقيق على أي مهمة لاحقة، تماماً كما نفعل مع BERT نفسه.
الأثر
أثبت DistilBERT أن إجراء تقطير المعرفة في مرحلة — لا بعد فحسب — يُنتج نماذج مدمجة صالحة لأي غرض. سرعان ما تحوّل إلى الخيار الأول كعمود فقري خفيف لمعالجة اللغة الطبيعية لدى Hugging Face وغيرها، وبات يعمل فعلياً على الهواتف والأجهزة الطرفية. فتح هذا النهج الباب أمام موجة من أبحاث التقطير شملت TinyBERT وMiniLM وDistilGPT-2، ورسّخ توجّهاً أوسع نحو ضغط النماذج التأسيسية تمهيداً لنشرها في بيئات الإنتاج.
تخيّل أنك بنيت موسوعة ضخمة — شاملة ومفصّلة لكنها ثقيلة لا يمكن حملها في كل مكان. ماذا لو استطعت أن تُدرّب طالباً يقرأ تلك الموسوعة ويكتب منها دليل جيب يحتفظ بـ 97% من معرفتها؟
هذا بالضبط ما يفعله تقطير المعرفة. نموذج BERT الأصلي يلعب دور : لقد قرأ ملايين الجمل وبنى فهماً عميقاً لبنية اللغة. أما DistilBERT فيلعب دور الطالب: يملك نصف عدد الطبقات فقط، لكنه بدلاً من أن يتعلّم من النصوص الخام وحدها، يُراقب للمعلّم — أي التوزيعات الاحتمالية المفصّلة على كل كلمة — فيستوعب ما يُسمّى «»: تلك المعلومات المُضمَّنة في الإجابات الخاطئة التي كادت أن تكون صحيحة.
المشكلة: BERT أكبر من أن يعمل في العالم الحقيقي
يتألّف BERT-base من 110 مليون موزّعة على 12 طبقة من نوع . على معالج رسومي حديث يعمل النموذج بسلاسة، لكن في بيئة الإنتاج الفعلية — حيث تحتاج إلى تصنيف آلاف الجمل في الثانية، أو التشغيل على هاتف ذكي، أو تقديم الخدمة ضمن ميزانية صارمة — يصبح BERT ببساطة أكبر وأبطأ ممّا يُحتمل. ملف النموذج وحده يتجاوز 400 ميغابايت، وتمريرة استدلال واحدة على المعالج المركزي قد تستغرق مئات الملّي ثانية.
النهج السائد حتى عام 2019 كان التقطير المُخصَّص لمهمة واحدة: تبدأ بـالضبط الدقيق لـ BERT على مهمتك، ثم تضغط النموذج المضبوط إلى نموذج أصغر. المشكلة أنك تحتاج بهذا الأسلوب إلى نموذج مضغوط منفصل لكل مهمة — تحليل المشاعر، والإجابة عن الأسئلة، واستخراج الكيانات المُسمّاة — لكل واحدة منها خطّ تقطير خاص. هذا الأسلوب لا يتوسّع عملياً.
السؤال الذي يطرحه DistilBERT: هل يمكننا تقطير BERT أثناء المسبق نفسه، فنحصل على نموذج مدمج واحد يصلح نقطةَ انطلاق شاملة لأي مهمة لاحقة؟
تقطير المعرفة: التعلّم من الآراء الليّنة للمعلّم
تقطير المعرفة، الذي قدّمه هينتون وزملاؤه عام 2015، ينطلق من ملاحظة جوهرية: التوزيع الاحتمالي الذي يُخرجه النموذج المُدرَّب يحمل معلومات أغنى بكثير من التصنيف الصحيح وحده. حين يتنبّأ BERT بكلمة مُقنَّعة ويُعطي 70% لكلمة «قطة» و15% لـ«هريرة» و10% لـ«كلب» و5% لـ«حيوان أليف»، فإن هذه الأهداف الليّنة تكشف أن «هريرة» قريبة دلالياً من «قطة»، بينما «كلب» بديل معقول لكنه أبعد. أما التصنيف الصلب الذي يقول فقط «قطة» فيُهدر كل تلك العلاقات الدلالية.
لتوضيح الفكرة، تخيّل امتحان اختيار من متعدّد. التصنيف الصلب يقول لك: «الجواب هو أ» ولا شيء أكثر. لكن الاحتمالات الليّنة للمعلّم تقول: «أ هي الأرجح، وب معقولة لأنها تتشارك خصائص مع أ، وج مستبعدة لكنها ليست مستحيلة، ود خاطئة تماماً.» الطالب الذي يطّلع على هذا التفكير المُفصَّل يتعلّم العلاقات بين المفاهيم، لا مجرد الإجابة الصحيحة. هينتون أطلق على هذا مصطلح «المعرفة الخفية» — أي المعرفة المدفونة داخل الإجابات الخاطئة.
معامل T يتحكّم في مدى «ليونة» التوزيع الاحتمالي. عند T=1 (أي دالة العادية)، يكون التوزيع حاداً تهيمن عليه الفئة الأعلى. كلّما رفعنا T، تسطَّح التوزيع وأعطى وزناً أكبر للخيارات الثانية والثالثة. أثناء التقطير، يستخدم كلٌّ من المعلّم والطالب درجة الحرارة المرتفعة ذاتها T، حتى يتعلّم الطالب من الترتيب الكامل للمعلّم لا من تنبّؤه الأعلى فقط.
البنية: نصف الطبقات، نفس العرض
يحتفظ DistilBERT بنفس حجم (768)، ونفس عدد رؤوس (12)، ونفس بُعد (3072) الموجودة في BERT-base — لكنه يستخدم 6 طبقات مُرمِّز فقط بدلاً من 12. بعبارة أخرى: نصف العمق مع الحفاظ الكامل على العرض.
لماذا نُقلّص العمق تحديداً بدلاً من العرض؟ لأن كل طبقة تلتقط ظواهر لغوية مختلفة: الطبقات السفلى تتعامل مع البنية النحوية، والوسطى مع الدلالات، والعليا مع أنماط خاصة بالمهمة. حين نأخذ طبقة من كل طبقتين من المعلّم، نحافظ على تنوّع أنماط الانتباه في كل طبقة. أما تقليص حجم الحالة الخفية فسيضغط القدرة التمثيلية لكل طبقة بشكل متساوٍ، وهذا يضرّ بالأداء أكثر بكثير.
ثمة تبسيطان إضافيان يُقلّصان عدد المعاملات أكثر: أولاً، يُزال الذي يستخدمه BERT للتمييز بين الجملتين في مهام أزواج الجمل. ثانياً، تُزال طبقة المُجمِّع (الطبقة الخطية فوق رمز [CLS]). كلاهما غير ضروري أثناء التدريب المسبق، ويمكن إعادة إضافتهما عند الضبط الدقيق إن دعت الحاجة.
الخسارة الثلاثية: ثلاثة معلّمين في دالة واحدة
يجمع هدف تدريب DistilBERT بين ثلاث ، كل واحدة تنقل إلى الطالب جانباً مختلفاً من معرفة المعلّم. تخيّل طالباً يتعلّم من ثلاث قنوات في الوقت نفسه: ما يقوله المعلّم (الأهداف الليّنة)، وما يقوله الكتاب المقرّر (التصنيفات الصلبة من نمذجة اللغة المُقنَّعة)، وكيف يُفكّر المعلّم من الداخل (محاذاة الحالات الخفية).
1. (L_ce): تُقارَن تنبؤات الطالب الليّنة (عند درجة حرارة T) بتنبؤات المعلّم الليّنة عبر (وهو مكافئ لـ مع الأهداف الليّنة). هذه هي القناة الرئيسية لنقل المعرفة الخفية — أي البنية العلائقية بين مفردات القاموس التي اكتسبها المعلّم.
2. خسارة نمذجة اللغة المُقنَّعة (L_mlm): وهي هدف التدريب المعياري في BERT. يتنبّأ الطالب بالرموز المُقنَّعة من تصنيفاتها الصلبة الحقيقية. هذه الخسارة تربط الطالب بالبيانات الفعلية وتمنعه من الانزلاق إلى مجرد تقليد أخطاء المعلّم.
3. خسارة تشابه جيب التمام (L_cos): تُحاذَى الحالات الخفية للطالب مع نظيراتها عند المعلّم باستخدام تشابه جيب التمام. الهدف هنا أن الطالب لا يكتفي بمطابقة مخرجات المعلّم النهائية، بل يبني كذلك تمثيلات داخلية مشابهة — أي يحافظ على الهندسة الكلية لفضاء التمثيل.
وصفة التدريب: اقتباسات من RoBERTa
يستعير DistilBERT عدة تحسينات تدريبية من RoBERTa ثبت أنها تُحسّن التدريب المسبق لـ BERT:
— بدلاً من تقنيع المواضع نفسها في كل حقبة تدريبية، يُعاد توليد نمط التقنيع في كل مرة تُمرَّر فيها سلسلة إلى النموذج. هذا يخلق تنوّعاً أكبر في أمثلة التدريب من البيانات ذاتها.
إلغاء (NSP) — أثبت RoBERTa أن هذا الهدف التدريبي في BERT لا يُضيف فائدة تُذكر. لذلك يحذفه DistilBERT بالكامل ممّا يُبسّط خط التدريب.
دفعات كبيرة — يستخدم التدريب دفعات ضخمة تصل إلى 4,000 مثال، استناداً إلى الاكتشاف بأن زيادة تُحسّن جودة التدريب المسبق.
الشيفرة: حلقة تدريب التقطير
مبسَّط لإظهار الفكرة — ليس التنفيذ الحقيقي.
import torch
import torch.nn.functional as F
def distillation_step(student, teacher, batch, T=2.0, alpha=0.5):
"""خطوة تدريب واحدة لتقطير DistilBERT."""
# تمرير أمامي عبر النموذجين
student_out = student(batch["input_ids"], batch["attention_mask"])
with torch.no_grad():
teacher_out = teacher(batch["input_ids"], batch["attention_mask"])
# 1) خسارة التقطير: تباعد KL على اللوغيتات المُلطَّفة
s_logits = student_out.logits / T
t_logits = teacher_out.logits / T
loss_ce = F.kl_div(
F.log_softmax(s_logits, dim=-1),
F.softmax(t_logits, dim=-1),
reduction="batchmean"
) * (T ** 2) # الضرب في T² لموازنة التدرّجات
# 2) خسارة نمذجة اللغة المُقنَّعة: التصنيفات الصلبة الحقيقية
loss_mlm = F.cross_entropy(
student_out.logits.view(-1, vocab_size),
batch["labels"].view(-1),
ignore_index=-100
)
# 3) خسارة تشابه جيب التمام: محاذاة الحالات الخفية
loss_cos = 1 - F.cosine_similarity(
student_out.hidden_states[-1],
teacher_out.hidden_states[-1],
dim=-1
).mean()
# تجميع الخسارة الثلاثية
loss = alpha * loss_ce + (1 - alpha) * loss_mlm + loss_cos
return loss
النتائج: 97% من الجودة بـ 60% من الحجم
قُيِّم DistilBERT على GLUE (9 مهام لفهم اللغة)، ومهمة تصنيف المشاعر على IMDb، ومعيار SQuAD v1.1 (الإجابة عن الأسئلة).
على GLUE، حقّق DistilBERT درجة 77.0 — أي 97% من نتيجة BERT-base البالغة 79.5. وهو يُعادل أو يتفوّق على أساس ELMo في جميع المهام. على IMDb الفارق أضيق: 0.6% فقط خلف BERT. وعلى SQuAD v1.1 يقع ضمن 3.9 نقطة F1 من BERT، وإضافة خطوة تقطير ثانية أثناء الضبط الدقيق تُقلّص الفارق أكثر.
أما من حيث السرعة — باستثناء مرحلة — فإن DistilBERT أسرع من BERT بنسبة 71% على المعالج المركزي. حجم النموذج الكامل نحو 207 ميغابايت، وهو صغير بما يكفي للنشر على الأجهزة المحمولة مع إمكانية تطبيق لتصغيره أكثر.
النشر على الجهاز: معالجة اللغة في جيبك
تضمّنت الورقة تجربة إثبات مفهوم بنشر DistilBERT على هاتف محمول (iPhone 7 Plus). باستخدام خط معالجة للإجابة عن الأسئلة مبنيّ على SQuAD، نفّذ النموذج الاستدلال على الجهاز مباشرة بـزمن استجابة مقبول — وهذا يُثبت عملياً أن ضغط النموذج عبر التقطير يجعل معالجة اللغة الطبيعية في الوقت الحقيقي على الجهاز أمراً ممكناً.
كانت هذه نتيجة بارزة في عام 2019: قبل DistilBERT، كان تشغيل نموذج لغوي مبنيّ على المُحوِّل على جهاز طرفي يُعدّ أمراً غير واقعي. أثبت DistilBERT أن مسار «درِّب مسبقاً ← قطِّر ← اضبط ← انشر» قادر على إيصال أحدث تقنيات معالجة اللغة الطبيعية إلى بيئات محدودة الموارد.
المسار الزمني لضغط النماذج
2015
تقطير المعرفة (هينتون وآخرون)
قدّم إطار المعلّم والطالب مع الأهداف الليّنة ومعايرة درجة الحرارة. أظهر أن المعرفة الكامنة في التنبؤات الخاطئة تُساعد الطالب على التعلّم بفعالية أكبر.
2018
BERT (ديفلن وآخرون)
مُرمِّز ثنائي الاتجاه مُدرَّب مسبقاً بنمذجة اللغة المُقنَّعة والتنبؤ بالجملة التالية. أرسى معايير جديدة في معالجة اللغة الطبيعية، لكنه تطلّب موارد حوسبية كبيرة عند الاستدلال.
2019
DistilBERT (سان وآخرون)
تقطير عام الأغراض أثناء التدريب المسبق. أصغر بنسبة 40%، وأسرع بنسبة 60%، مع الاحتفاظ بـ 97% من أداء BERT. أول محوِّل مُقطَّر للأغراض العامة.
2020
TinyBERT (جياو وآخرون)
أضاف آلية نقل خرائط الانتباه وتقطير الطبقات الوسيطة. حقّق 96% من أداء BERT بمعاملات أقلّ بـ 7.5 مرة، عبر تقطير كلٍّ من خرائط الانتباه والحالات الخفية.
2020
MiniLM (وانغ وآخرون)
تقطير الانتباه الذاتي من الطبقة الأخيرة للمعلّم. أتاح مرونة أكبر في بنية الطالب، إذ يمكن أن يختلف العرض والعمق معاً عن المعلّم.
2021
DeiT (توفرون وآخرون)
وسّع نهج التقطير ليشمل محوِّلات الرؤية. يتعلّم رمز تقطير خاص من معلّم التفافي، ممّا يُتيح تدريب محوِّلات الرؤية بكفاءة عالية دون الحاجة إلى مجموعات بيانات ضخمة.
إرث DistilBERT يتجاوز كونه مجرد نموذج أصغر — إنه إثبات عملي غيّر طريقة تعامل المجال مع مسألة النشر. قبل DistilBERT، كان النهج المعتاد هو التقطير بعد الضبط الدقيق، فيخرج نموذج مضغوط مستقل لكل مهمة. ما أثبته DistilBERT هو أن التقطير أثناء التدريب المسبق يمنحك عموداً فقرياً مضغوطاً شاملاً، يعمل تماماً مثل BERT لكن بتكلفة أقلّ بكثير. هذا النمط — درِّب نموذجاً كبيراً، قطِّره مرة واحدة، ثم اضبطه على مهام كثيرة — صار هو المعيار المعتمد في أنظمة معالجة اللغة الطبيعية العملية.
المرجعSanh, Debut, Chaumond, Wolf. DistilBERT, a distilled version of BERT: smaller, faster, cheaper and lighter. EMC @ NeurIPS 2019, 2019.
مصطلحات هذه الورقة
- تقطير المعرفةKnowledge Distillation
- نموذج المعلمTeacher Model
- نموذج الطالبStudent Model
- الأهداف المرنةSoft Targets
- الحرارةTemperature
- ضغط النماذجModel Compression
- فقد التقطيرDistillation Loss
- تشابه جيب التمامCosine Similarity
- نمذجة اللغة المُقنَّعة (MLM)Masked Language Modeling (MLM)
- الاستدلالInference
- زمن الاستجابة (التأخير البيني)Latency
- الضبط الدقيقFine-Tuning
- العشوائية المتقاطعةCross Entropy
- الحالة المخفيةHidden State
- سوفت ماكسSoftmax