Pruning
يزيل التقليم الأوزان أو المرشحات أو الطبقات منخفضة الأهمية من شبكة عصبية مدرّبة لتقليصها وتسريع الاستدلال، ثم يضبطها ضبطًا دقيقًا لاستعادة الأداء.
التقليم تقنية من تحسين النماذج تزيل الأوزان أو العصبونات أو المرشحات أو رؤوس الانتباه أو الطبقات الكاملة التي لا تسهم كثيرًا في مخرجات الشبكة العصبية المدرَّبة، لتترك نموذجًا أصغر يحتاج إلى ذاكرة وحوسبة وطاقة أقل. وفي التعلم العميق، يُعد المصطلح مرادفًا لـتقليم النماذج. معظم الشبكات مفرطة في عدد المعلمات: قلّص هان وآخرون عدد معلمات AlexNet من 61 مليونًا إلى 6.7 مليون، وVGG-16 من 138 مليونًا إلى 10.3 ملايين على ImageNet، من دون فقدان الدقة، وذلك بالتدريب وإزالة الوصلات منخفضة المقدار ثم إعادة تدريب البقية. ويُعد التقليم خطوة شائعة قبل نشر الذكاء الاصطناعي الطرفي، حيث تكون ميزانيات الذاكرة والطاقة وزمن استجابة الاستدلال محدودة.
آلية عمل التقليم#
تحدد كل طريقة تقليم المعلمات التي ستُزال ووقت إزالتها. وغالبًا ما يكون مقياس الأهمية هو مقدار الوزن، إذ لا تغيّر الأوزان القريبة من الصفر المخرجات إلا قليلًا، بينما تقدّر المقاييس القائمة على التدرج تأثير كل معلمة في دالة الخسارة على نحو مباشر أكثر. وتميل إزالة نسبة كبيرة دفعة واحدة إلى خفض الدقة أكثر من التقليم التكراري، الذي يزيل نسبة صغيرة، ثم يضبط بدقة الأوزان المتبقية لاستعادة الأداء، ويكرر العملية حتى بلوغ الحجم أو السرعة المستهدفين. وتضيف فرضية تذكرة اليانصيب أن الشبكات الكثيفة تحتوي على شبكات فرعية متناثرة يمكنها، بعد إعادتها إلى قيم التهيئة الأصلية، أن تتدرب وحدها وتحقق دقة تقارب دقة الشبكة الكاملة.
التقليم غير المنظم والمنظم وشبه المنظم#
يصفر التقليم غير المنظم أوزانًا فردية في أي موضع من الموتر. ويحقق أعلى درجة من التناثر عند دقة معينة، لكن الناتج يكون مصفوفة متناثرة غير منتظمة، تظل نوى GPU وCPU الكثيفة تعالجها بكامل كلفتها ما لم يتجاوزها وقت التشغيل المتناثر. أما التقليم المنظم فيزيل مرشحات أو قنوات أو رؤوس انتباه أو طبقات كاملة من الشبكة العصبية الالتفافية أو المحوّل، بحيث تصبح كل طبقة مقلمة طبقة كثيفة أصغر تعمل بسرعة أكبر على أي عتاد، على حساب خسارة أكبر في الدقة مقابل كل معلمة محذوفة. وتطبق أدوات التقليم في PyTorch كلا النوعين على هيئة أقنعة في طبقة موجودة:
import copy
from torch import nn
from torch.nn.utils import prune
# Two copies of one convolution layer with 32 filters of shape 16x3x3
unstructured = nn.Conv2d(16, 32, kernel_size=3)
structured = copy.deepcopy(unstructured)
# Unstructured: zero the 50% of individual weights with the smallest magnitude
prune.l1_unstructured(unstructured, name="weight", amount=0.5)
# Structured: zero the 50% of whole filters (dim=0) with the smallest L2 norm
prune.ln_structured(structured, name="weight", amount=0.5, n=2, dim=0)
for name, layer in [("Unstructured", unstructured), ("Structured", structured)]:
zeros = (layer.weight == 0).float().mean()
empty_filters = (layer.weight.flatten(1).abs().sum(dim=1) == 0).sum()
print(f"{name}: {zeros:.0%} of weights zeroed, {empty_filters}/32 filters entirely empty")تفقد الطبقتان 50% من أوزانهما، لكن الطبقة المنظمة وحدها تنتهي بـ16 مرشحًا فارغًا بالكامل من أصل 32؛ ويمكن إزالة هذه المرشحات فعليًا لتكوين طبقة التفافية كثيفة تضم 16 مرشحًا.
يقع التقليم شبه المنظم بين النوعين. يصفّر نمط التناثر 2:4 من NVIDIA وزنين من كل أربعة أوزان متتالية، وتتخطى أنوية Sparse Tensor Cores في Ampere ووحدات GPU الأحدث هذه الأوزان لإجراء العمليات المصفوفية نفسها في نصف الوقت؛ وقد قاست NVIDIA مكاسب شاملة تصل إلى 20% لنموذج ResNeXt-101 متناثر باستخدام TensorRT على A100. أما في العتاد الكثيف، فلا تحقق الأصفار المتناثرة وحدها أي تسريع: أدى تقليم Ultralytics YOLOv5x إلى تناثر عام غير منظم بنسبة 30% باستخدام الأداة prune()، من دون ضبط دقيق، إلى خفض COCO mAP50-95 من 0.507 إلى 0.489، مع بقاء زمن الاستدلال على V100 دون تغيير عند 5.2 مللي ثانية للصورة.
تطبيقات عملية#
تكون أهمية التقليم أكبر حين يتعين تشغيل النموذج على عتاد محدود الموارد. وتلائم شبكات اكتشاف الكائنات المقلمة بحسب القنوات ميزانيات الذاكرة والطاقة للطائرات المسيّرة والكاميرات الذكية والهواتف، ما يتيح الاستدلال في الوقت الفعلي دون اتصال سحابي، ويبقي الصور على الجهاز حفاظًا على خصوصية البيانات. وفي فحص التصنيع، يتيح الضغط نفسه تشغيل كاشف العيوب على وحدة طرفية منخفضة التكلفة بجانب خط الإنتاج.
تُقلَّم نماذج اللغة الكبيرة أيضًا. يقلّم SparseGPT النموذجين OPT-175B وBLOOM-176B إلى تناثر غير منظم بنسبة 60% دفعة واحدة، دون إعادة تدريب، مع زيادة ضئيلة في الحيرة. كما قلّم عمل Minitron من NVIDIA نموذج Llama 3.1 8B إلى نموذج 4B بإزالة الطبقات أو الأبعاد المخفية، ثم استعاد الجودة باستخدام تقطير المعرفة من النموذج الأصلي.
التقليم مقارنةً بالتقنيات ذات الصلة#
غالبًا ما يُجمع التقليم مع أساليب ضغط النماذج الأخرى، وللمصطلح أيضًا معنى أقدم خارج نطاق الشبكات العصبية.
- تكميم النماذج: يحتفظ التكميم بكل وزن ويخفض دقته العددية، مثل التحول من الأعداد العشرية ذات 32 بت إلى الأعداد الصحيحة ذات 8 بت. وغالبًا ما تُكمَّم النماذج المقلمة لاحقًا لتحقيق مزيد من التوفير.
- تقطير المعرفة: يدرّب التقطير نموذجًا طالبًا منفصلًا وصغيرًا لمحاكاة نموذج معلم أكبر، وهو وسيلة شائعة لاستعادة الدقة التي يفقدها النموذج عند تقليمه بشدة.
- طبقة الإسقاط: تصفّر طبقة الإسقاط تنشيطات عشوائية لخطوة تدريب واحدة لأغراض التنظيم، وتُبقي عدد المعلمات دون تغيير، بينما يزيل التقليم المعلمات نهائيًا.
- تقليم شجرة القرار: في التعلم الآلي التقليدي، يزيل التقليم الفروع من شجرة قرار مكيّفة للحد من فرط التكيّف، كما في تقليم تعقيد التكلفة في scikit-learn، الذي يزيل أضعف الأشجار الفرعية كلما زادت قيمة المعلمة
ccp_alpha.










