Yolo فيجن شنتشن
شنتشن
انضم الآن
مسرد المصطلحات

تقليم النموذج (Model Pruning)

حسّن نماذج تعلم الآلة باستخدام تقليم النموذج. حقق استدلالًا أسرع، وتقليل استخدام الذاكرة، وكفاءة الطاقة لعمليات النشر محدودة الموارد.

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

المفاهيم والآليات الأساسية

تتضمن عملية التقليم عادةً ثلاث مراحل رئيسية: التدريب، والتشذيب، و والتشذيب. في البداية، يتم تدريب نموذج كبير على التقارب لالتقاط الميزات المعقدة. أثناء مرحلة التقليم، تقوم خوارزمية بتقييم أهمية معلمات محددة محددة - عادةً weights and biases-بناءً على معايير مثل الحجم أو الحساسية. يتم تعيين المعلمات التي تعتبر غير مهمة إلى الصفر أو إزالتها بالكامل.

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

أنواع تقليم النماذج

يتم تصنيف استراتيجيات التقليم بشكل عام حسب بنية المكونات التي تتم إزالتها:

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

التقليم مقابل التكميم الكمي

على الرغم من أن كلاهما من تقنيات التحسين الشائعة، إلا أنه من المهم التمييز بين التقليم التقليم الكمي للنموذج. يركز التقليم على تقليل عدد المعلمات (الوصلات أو الخلايا العصبية)، مما يؤدي إلى تغيير بنية النموذج بشكل فعال. في المقابل على النقيض من ذلك، يقلل التكميم من دقة تلك المعلمات، على سبيل المثال، تحويل 32 بت من 32 بت إلى أعداد صحيحة من 8 بت. غالباً ما تكون هذه الطرق مكملة لبعضها البعض؛ قد يقوم المطور أولاً بتهذيب النموذج لإزالة التكرار ومن ثم تكميمه لتقليل بصمة الذاكرة الخاصة به من أجل للنشر.

تطبيقات واقعية

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

  1. الكشف عن الأجسام المتحركة: تستخدم التطبيقات التي تعمل على الهواتف الذكية، مثل تطبيقات الواقع المعزز أو أو منظمي الصور، تستخدم النماذج المشذبة لإجراء اكتشاف الأجسام محليًا. هذا يحافظ على البطارية عمر البطارية ويضمن خصوصية بيانات المستخدم من خلال تجنب المعالجة السحابية المعالجة السحابية.
  2. أنظمة سلامة السيارات: تعتمد المركبات ذاتية القيادة على المعالجة السريعة للبيانات المرئية detect المشاة والعوائق. تمكّن النماذج المشذبة محرك الاستدلال من اتخاذ قرارات في جزء من الثانية. دون الحاجة إلى استهلاك الطاقة الهائل GPU على مستوى الخادم.

مثال على التنفيذ

أطر عمل مثل PyTorch توفر أدوات مساعدة مدمجة لتطبيق التقليم برمجيًا. يوضّح المثال التالي كيفية تطبيق التقليم غير المهيكل على طبقة التلافيف وهي عملية شائعة قبل تصدير نموذج إلى صيغة محسّنة مثل ONNX.

import torch
import torch.nn.utils.prune as prune

# Initialize a standard convolutional layer
layer = torch.nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3)

# Apply L1 unstructured pruning to remove 30% of the connections
# This sets the smallest 30% of weights (by absolute value) to zero
prune.l1_unstructured(layer, name="weight", amount=0.3)

# Verify sparsity: calculate the percentage of zero parameters
sparsity = float(torch.sum(layer.weight == 0)) / layer.weight.nelement()
print(f"Layer sparsity: {sparsity:.2%}")

انضم إلى مجتمع Ultralytics

انضم إلى مستقبل الذكاء الاصطناعي. تواصل وتعاون وانمو مع المبتكرين العالميين

انضم الآن