Callback
الاستدعاء الراجع دالة تستدعيها حلقة التدريب عند أحداث محددة، مثل نهاية كل حقبة، لإضافة الإيقاف المبكر أو نقاط الحفظ أو التسجيل.
الاستدعاء الراجع هو دالة تُمرر إلى جزء آخر من الكود، فيستدعيها ذلك الجزء عند وقوع حدث محدد. وتُعد معالجات الأحداث في واجهات المستخدم، ودوال الإكمال في الشيفرات غير المتزامنة، ودالة المقارنة الممررة إلى روتين للفرز، كلها استدعاءات راجعة. وفي أطر عمل التعلم العميق، تتمثل الأحداث في نقاط ضمن حلقة التدريب، مثل بدء التدريب وانتهاء كل دفعة أو حقبة ولحظة اكتمال التحقق. وتُنفّذ الاستدعاءات الراجعة المسجلة لحدث ما عند وقوعه، مع إتاحة الوصول إلى حالة المدرّب؛ لذا يمكن للمستخدمين إضافة الإيقاف المبكر لمواجهة فرط التوافق وحفظ نقاط التحقق وجداول معدل التعلم أو التسجيل، من دون تعديل الحلقة نفسها.
كيفية ارتباط الاستدعاءات الراجعة بالتدريب#
يحتفظ إطار العمل بقائمة من الاستدعاءات الراجعة لكل حدث مسمى، ويستدعيها جميعًا عند وصول الحلقة إلى ذلك الحدث، مع تمرير كائن المدرّب أو النموذج كي يتمكن الاستدعاء الراجع من قراءة المقاييس وتغيير الإعدادات. تجمع Keras الاستدعاءات في وحدتها keras.callbacks، ويجمعها PyTorch Lightning في أصناف فرعية من Callback، بينما يجمعها Hugging Face Transformers في TrainerCallback. تختلف أسماء الأساليب بين المكتبات، لكن الأحداث تتبع الحلقة نفسها:
بما أن الاستدعاءات الراجعة تعمل داخل الحلقة، يمكنها أيضًا تغييرها: فالاستدعاء الذي يضبط علامة إيقاف ينهي التدريب بعد الحقبة الحالية، والذي يعدّل المُحسِّن يغيّر كل خطوة لاحقة. وتعمل الاستدعاءات الراجعة الخاصة بالحدث نفسه حسب ترتيب تسجيلها، كما تُنفّذ استدعاءات مستوى الدفعة آلاف المرات في كل حقبة؛ لذا تُناسب الأعمال البطيئة، مثل رفع الملفات، أحداث مستوى الحقبة. وفي التدريب الموزع، تشغّل كل عملية نسختها الخاصة من الحلقة واستدعاءاتها الراجعة؛ لذلك لا تعمل استدعاءات التسجيل وحفظ نقاط التحقق عادةً إلا في العملية الرئيسية، ذات الرتبة 0، لتجنب كتابة الملف نفسه من عدة وحدات GPU.
استدعاءات التدريب الراجعة الشائعة#
- الإيقاف المبكر: يوقف التدريب عندما لا يتحسن مقياس التحقق لعدد محدد من الحقب، يُسمى الصبر، ما يحد من فرط التوافق ويوفر موارد الحوسبة. ويمكن للاستدعاء
EarlyStoppingفي Keras أيضًا استعادة أفضل أوزان رصدها قبل الإيقاف. - حفظ نقاط التحقق: يحفظ النموذج في كل حقبة أو كلما تحسن مقياس مراقب، لضمان بقاء أفضل الأوزان وإمكانية استئناف التشغيل بعد تعطل. ويستخدم الاستدعاء
BackupAndRestoreفي Keras الحالة المحفوظة لاستئناف التشغيل المتوقف تلقائيًا. - جدولة معدل التعلم: تخفض معدل التعلم عندما يستقر مقياس ما، كما يفعل
ReduceLROnPlateauفي Keras، أو تتبع جدولًا ثابتًا مثل الاضمحلال الجيبي. - تتبع التجارب: يرسل الخسائر والمقاييس والصور النموذجية إلى أدوات مثل TensorBoard أو MLflow أو Weights & Biases بعد كل حقبة.
- ضبط المعلمات الفائقة: يرسل نتيجة كل حقبة إلى أداة ضبط مثل Ray Tune، التي توقف مجدولاتها التجارب غير الواعدة مبكرًا.
كتابة استدعاء راجع مخصص#
يطلق Ultralytics YOLO أحداثًا مسماة أثناء التدريب والتحقق والتنبؤ والتصدير، مثل on_train_epoch_end وon_fit_epoch_end، كما تسجّل عمليات التكامل الخاصة به مع MLflow وComet وClearML وTensorBoard وUltralytics Platform بوصفها استدعاءات راجعة لهذه الأحداث. يقرأ هذا الاستدعاء الراجع mAP50-95 الخاص بالتحقق بعد كل حقبة، ويوقف تشغيل YOLO26 فور بلوغه قيمة مستهدفة:
from ultralytics import YOLO
def stop_at_target(trainer):
"""Stop training once validation mAP50-95 reaches 0.6."""
score = trainer.metrics["metrics/mAP50-95(B)"]
print(f"Epoch {trainer.epoch + 1}: mAP50-95 {score:.3f}")
if score >= 0.6:
trainer.stop = True # the trainer ends the run after this epoch
model = YOLO("yolo26n.pt")
model.add_callback("on_fit_epoch_end", stop_at_target) # runs after each epoch's validation
model.train(data="coco8.yaml", epochs=20)يُطلق الحدث on_fit_epoch_end بعد التدريب والتحقق للحقبة، لذا يحتوي trainer.metrics بالفعل على نتائج تلك الحقبة. ويؤدي ضبط trainer.stop إلى خروج المدرّب من حلقة الحقب، وإجراء التحقق النهائي المعتاد على أفضل الأوزان، وحفظ النتائج، تمامًا كما يحدث عند بلوغ حد patience المضمن.
وظائف رد الاتصال مقابل الخطافات#
غالبًا ما تشير الكلمتان إلى الشيء نفسه: إذ تسمي PyTorch Lightning الأساليب التي ينفذها الاستدعاء الراجع خطافات. أما في PyTorch نفسه، فترتبط خطافات الوحدات المسجلة باستخدام register_forward_hook أو register_full_backward_hook بالتمرير الأمامي أو الخلفي لطبقة واحدة بدلًا من حدث في حلقة التدريب، وتُستخدم لقراءة خرائط الميزات بغرض التصوير المرئي، أو لفحص التدرجات وتعديلها أثناء الانتشار العكسي.










