Model Pruning
يزيل تقليم النماذج الأوزان أو المرشحات أو الطبقات منخفضة الأهمية من الشبكة العصبية لتقليل حجمها وعملياتها الحسابية. تعرّف على التقليم غير المنظم والمنظم، مع الشيفرة.
يزيل تقليم النماذج المعلمات ذات الإسهام الضئيل في مخرجات الشبكة العصبية المدرّبة، بدءاً من الأوزان المفردة وصولاً إلى المرشحات الكاملة أو رؤوس الانتباه أو الطبقات، لجعل النموذج أصغر وأقل كلفة في التشغيل. معظم الشبكات مفرطة المعلمات، لذا يمكن حذف حصة كبيرة من أوزانها مع خسارة طفيفة في الدقة، ولا سيما إذا أُجري لها ضبط دقيق بعد ذلك. قلّصت طريقة التقليم وإعادة التدريب لعام 2015 نموذج AlexNet من 61 مليون معلَمة إلى 6.7 ملايين، ونموذج VGG-16 من 138 مليوناً إلى 10.3 ملايين، دون أي خسارة في دقة ImageNet. ويُعد التقليم خطوة قياسية لإعداد النماذج للهواتف والكاميرات وغيرها من عتاد الذكاء الاصطناعي الطرفي، كما يُطبّق الآن على النماذج اللغوية الكبيرة (LLMs) أيضاً.
آلية عمل تقليم النماذج#
يقيّم التقليم أهمية كل وزن أو بنية مرشحة، ويحذف الجزء الأقل تقييماً، ثم يضبط أوزان النموذج المتبقية بدقة لاستعادة الدقة. أبسط المعايير وأكثرها شيوعاً هو المقدار: فالأوزان القريبة من الصفر، أو المرشحات ذات معيار L1 أو L2 الصغير، أقل ما يغيّر المخرجات عند حذفها. وتستخدم معايير أخرى التدرجات أو التنشيطات لتقدير مقدار ارتفاع الخسارة إذا حُذف كل جزء. يميل حذف نسبة كبيرة دفعة واحدة إلى الإضرار بالدقة، لذا يجري التقليم عادةً على جولات، تلي كل جولة منها عملية ضبط دقيق، حتى يبلغ النموذج الحجم المستهدف أو تنخفض دقته عن حد التسامح:
غيّر التقليم أيضاً نظرة الباحثين إلى حجم الشبكات. تفترض فرضية تذكرة اليانصيب أن الشبكة الكثيفة تحتوي شبكات فرعية صغيرة تصل، عند تدريبها منفردةً انطلاقاً من أوزان التهيئة الأصلية، إلى دقة الشبكة الكاملة؛ وقد وجد واضعو الفرضية باستمرار شبكات فرعية كهذه يقل حجمها عن 10-20% من الحجم الأصلي في MNIST وCIFAR-10.
التقليم غير المنظّم مقابل التقليم المنظّم#
يصفّر التقليم غير المنظّم أوزاناً مفردة في أي موضع من الموتر. ويحقق تناثراً عالياً مع خسارة طفيفة في الدقة، لكن الموترات تحتفظ بأبعادها، فتنجز النوى الكثيفة القياسية العمل نفسه، ولا تتحقق زيادة السرعة إلا باستخدام نوى متناثرة أو بدعم من العتاد. تشغّل وحدات GPU من NVIDIA منذ جيل Ampere نمطاً من هذا النوع، وهو تناثر 2:4 بوجود صفرين في كل أربعة أوزان متتالية، بسرعة تصل إلى ضعف معدل العمليات الحسابية الكثيفة. أما التقليم المنظّم فيزيل مرشحات أو قنوات أو رؤوساً أو طبقات كاملة، ليترك نموذجاً كثيفاً أصغر يعمل بسرعة أكبر على أي معالج، مقابل كلفة أعلى على الدقة عند حذف العدد نفسه من الأوزان. ويؤدي حذف مرشح إلى إزالة قناة الإدخال المطابقة من الطبقة التالية أيضاً، وتتتبّع مكتبات مثل Torch-Pruning هذه الاعتماديات تلقائياً. وتوضّح أدوات التقليم في PyTorch الفرق بين الأسلوبين:
import torch
from torch.nn.utils import prune
# Two identical convolution layers, one for each pruning style
torch.manual_seed(0)
a = torch.nn.Conv2d(16, 32, kernel_size=3)
b = torch.nn.Conv2d(16, 32, kernel_size=3)
# Unstructured: zero the 50% of individual weights with the smallest magnitude
prune.l1_unstructured(a, name="weight", amount=0.5)
# Structured: zero the 50% of output filters with the smallest L2 norm
prune.ln_structured(b, name="weight", amount=0.5, n=2, dim=0)
for name, layer in [("unstructured", a), ("structured", b)]:
zeros = (layer.weight == 0).float().mean().item()
empty = (layer.weight.flatten(1) == 0).all(dim=1).sum().item()
print(f"{name}: {zeros:.0%} of weights zero, {empty} of 32 filters empty")تنتهي كلتا الطبقتين بوجود أصفار في 50% من أوزانهما. وتحتوي الطبقة المنظّمة وحدها على مرشحات فارغة، وعددها 16 من أصل 32؛ وحذفها يترك طبقة كثيفة بنصف عدد المرشحات، ما يخفض عملياتها الحسابية إلى النصف على العتاد العادي. ويستفيد العتاد المصمم للتعامل مع التناثر من النوع غير المنظّم أيضاً: إذ يطبّق تكامل CVflow من Ambarella مع Ultralytics YOLO، الذي تصونه Ambarella في تفرّعها الخاص من الحزمة، تقليماً تدريجياً للأوزان أثناء تدريب YOLO، ويحافظ على ذلك التناثر عبر تصدير ONNX لتجميع النموذج على شرائحها الطرفية للذكاء الاصطناعي.
التقليم مقارنةً بالتقنيات ذات الصلة#
- تكميم النموذج: يخفض دقة كل وزن، مثلاً من أعداد عائمة ذات 32 بتاً إلى أعداد صحيحة ذات 8 بتات، مع الاحتفاظ بجميع الأوزان. وكثيراً ما يُجمع التقليم والتكميم، إذ يقلل التقليم عدد العمليات ويجعل التكميم كل عملية أقل كلفة.
- تقطير المعرفة: يدرّب نموذجاً طالباً أصغر على محاكاة نموذج معلّم أكبر، وغالباً ما يُستخدم بعد التقليم المنظّم لاستعادة الدقة التي يفقدها النموذج عند إزالة مرشحات أو طبقات كاملة.
- الإسقاط: يصفّر التنشيطات عشوائياً وبصفة مؤقتة أثناء التدريب كنوع من التنظيم، ويُستخدم النموذج الكامل عند الاستدلال.
تقليم النماذج اللغوية الكبيرة#
ترتفع كلفة إعادة تدريب نموذج LLM بعد كل جولة تقليم كثيراً، لذا تقلّمه طرائق المرة الواحدة في تمريرة واحدة باستخدام مجموعة معايرة صغيرة. قلّمت SparseGPT نموذجي OPT ذي 175 مليار معلَمة وBLOOM ذي 176 مليار معلَمة إلى تناثر غير منظّم بنسبة 60% في أقل من 4.5 ساعات، مع زيادة ضئيلة في الحيرة، كما تدعم نمط 2:4 الذي تسرّع وحدات GPU تنفيذه. وينتج عن الجمع بين التقليم المنظّم وتقطير المعرفة نماذج كثيفة أصغر: إذ اشتقت Minitron من NVIDIA نموذجين بحجم 8B و4B من نموذج مدرّب مسبقاً بحجم 15B، عبر تقليم قنوات التضمين وعصبونات MLP ورؤوس الانتباه، ثم إعادة تدريبهما باستخدام عدد من الرموز يقل حتى 40 مرة عن التدريب من الصفر.










