اكتشف كيف يعمل دمج النماذج على دمج عدة نماذج مدربة مسبقًا في نموذج واحد. تعرف على كيفية دمج أوزان Ultralytics لتحسين الأداء دون زيادة زمن الاستجابة.
يُعد دمج النماذج تقنية مبتكرة في التعلم الآلي (ML) تجمع بين المعلمات (الأوزان) المُكتسبة من عدة نماذج تم تدريبها مسبقًا في نموذج واحد موحد. على عكس الإعدادات التقليدية متعددة النماذج ، يدمج الدمج أوزان النماذج مباشرةً في مساحة المعلمات. وهذا يسمح للممارسين بدمج المعرفة المتخصصة لعدة نماذج تم ضبطها بدقة على مهام أو مجموعات بيانات مختلفة دون تكبد تكاليف الذاكرة والحوسبة المترتبة على تشغيل نماذج متعددة في وقت واحد.
من خلال تطبيق العمليات مباشرةً على الأوزان، يحافظ دمج النماذج على البصمة المعمارية لشبكة واحدة. ويعد هذا الأمر ذا أهمية خاصة عند نشر مسارات معالجة متقدمة للرؤية الحاسوبية (CV) على الأجهزة الطرفية، حيث يُعد تقليل زمن الاستجابة في الاستدلال وتوفير الذاكرة أمرين بالغين الأهمية.
من المفيد التمييز بين دمج النماذج والمفاهيم ذات الصلة مثل مجموعة النماذج و التعلم الترحيلي.
طور الباحثون عدة طرق للدمج الفعال بين الأوزان دون المساس بالقدرات الأساسية للشبكة، كما يتضح من الأبحاث الأكاديمية الحديثة المنشورة على موقع arXiv.
يُعد دمج النماذج وسيلة فعالة للغاية لبناء أنظمة عامة دون الحاجة إلى إعادة التدريب من الصفر.
يمكنك بسهولة إجراء عملية دمج النماذج الأساسية باستخدام PyTorch. يوضح المثال التالي كيفية حساب متوسط قواميس الحالة لنموذجين متطابقين في البنية.
import torch
# Load the weights (state dicts) from two identical architectures
weights_a = torch.load("yolo26_task1.pt")["model"].state_dict()
weights_b = torch.load("yolo26_task2.pt")["model"].state_dict()
# Perform simple weight averaging
merged_weights = {k: (weights_a[k] + weights_b[k]) / 2.0 for k in weights_a.keys()}
# Save the newly merged model weights
torch.save({"model": merged_weights}, "yolo26_merged.pt")
بالنسبة للفرق التي تسعى إلى تبسيط سير العمل المعقد المتعلق بتعليق مجموعات البيانات وتدريب النماذج ونشرها، توفر Ultralytics واجهة سهلة الاستخدام لإدارة مشاريع الذكاء الاصطناعي الخاصة بالرؤية من البداية إلى النهاية دون عناء.
ابدأ رحلتك مع مستقبل تعلم الآلة