استكشف الدور الأساسي لعمليات الاسترجاع في التعلّم الآلي - وهي أدوات تراقب وتتحكم وتؤتمت تدريب النماذج لتحسين الدقة والمرونة والكفاءة.
الاستدعاءات هي دوال أو مجموعات من الدوال التي يتم تنفيذها في مراحل محددة أثناء تنفيذ عملية أكبر، مثل تدريب نموذج تعلم آلي. في سياق الذكاء الاصطناعي والتعلم الآلي، توفر عمليات الاستدعاء آلية قوية لمراقبة الحالات الداخلية، والتأثير على سلوك حلقة التدريب، وأتمتة الإجراءات دون تعديل الكود الأساسي لإطار التدريب. وهي تعمل كخطافات في خط أنابيب التدريب، مما يسمح للمطورين بإدخال منطق مخصص في نقاط محددة مسبقًا مثل بداية أو نهاية حلقة التدريب أو الدفعة أو عملية التدريب بأكملها.
أثناء تدريب النموذج، تحدث أحداث مختلفة بالتتابع: بدء التدريب، و الحقبة الزمنية تبدأ، وتتم معالجة دفعة، ويحدث التحقق، وتنتهي الحقبة، وأخيرًا ينتهي التدريب. تسمح لك عمليات الاستدعاء بتشغيل إجراءات محددة مرتبطة بهذه الأحداث. على سبيل المثال، قد ترغب في حفظ أوزان النموذج كلما تحسنت دقة التحقق من الصحة، وتسجيل المقاييس إلى أداة تصور مثل لوحة تينسور بوردأو إيقاف التدريب مبكراً إذا توقف النموذج عن التحسن. أطر مثل كيراس والمكتبات مثل ultralytics
تستفيد حزمة Python بشكل كبير من عمليات الاسترجاع لتوفير المرونة وقابلية التوسعة.
يوفر محرك التدريب Ultralytics نظامًا من عمليات إعادة الاستدعاء التي يتم تشغيلها في نقاط مختلفة خلال التدريب, التحقق من الصحة, التنبؤو التصدير العمليات. تتضمن هذه الأحداث ما يلي on_train_start
, on_epoch_end
, on_fit_epoch_end
(والذي يتضمن التحقق من الصحة), on_batch_end
, on_train_end
وغيرها الكثير. يمكن للمستخدمين تحديد عمليات الاسترجاع المخصصة لتنفيذ إجراءات مثل التسجيل التفصيلي، أو إرسال الإشعارات، أو التفاعل مع منصات مثل Ultralytics HUB.
from ultralytics import YOLO
from ultralytics.engine.callbacks import BaseCallback
# Define a simple custom callback
class MyCallback(BaseCallback):
def on_epoch_end(self, trainer): # This code will run at the end of each epoch
print(f"Epoch {trainer.epoch + 1} finished.") # Example: Access metrics like validation loss
if trainer.metrics:
val_loss = trainer.metrics.get('val/loss', None) # Example metric key, adjust as needed
if val_loss is not None:
print(f"Validation loss: {val_loss:.4f}")
# Load a model
model = YOLO('yolov8n.yaml').load('yolov8n.pt') # build from YAML and transfer weights
# Initialize your callback
my_callback = MyCallback()
# Add the callback to the training process
# Note: Direct addition via API might vary; often done via configuration or extending Trainer
# For demonstration, assume a mechanism exists like adding to a list or overriding methods.
# In Ultralytics, callbacks are often managed internally or via specific integrations.
# A conceptual example of how one might use it if Trainer exposed callbacks directly:
# trainer.add_callback(my_callback) # Hypothetical method
# Train the model (the callback methods are triggered automatically by the Trainer)
# The actual mechanism involves the Trainer checking for registered callbacks for specific events.
try: # This is a simplified representation. Callbacks are typically integrated deeper. # We can simulate adding callback logic by overriding trainer methods or using signals if available. # The Ultralytics framework automatically handles registered internal and integration callbacks. # To add custom behaviour like this, you might need to modify the source or use provided extension points.
print("Training started (callback logic would be triggered internally)...") # Example: Manually trigger for demonstration if needed for testing callback logic # my_callback.on_epoch_end(trainer_mock_object)
results = model.train(data='coco128.yaml', epochs=3, imgsz=640) # Training triggers internal events
print("Training finished.")
except Exception as e:
print(f"An error occurred: {e}")
# Example of using an existing integration callback (e.g., TensorBoard)
# This is usually enabled via arguments or configuration:
# results = model.train(data='coco128.yaml', epochs=3, imgsz=640, tensorboard=True)
تتيح عمليات الاستدعاء العديد من الوظائف المفيدة أثناء تطوير نموذج تعلّم الآلة:
تُعد عمليات الاستدعاء أساسية لإنشاء تدفقات عمل مرنة ومؤتمتة وقابلة للملاحظة في مجال التعلم الآلي، مما يسمح للمطورين بتوسيع عمليات التدريب وتخصيصها بكفاءة. وهي تختلف قليلاً عن مستمعي أحداث البرمجيات العامة من خلال دمجها بإحكام في مراحل دورة الحياة المحددة لتدريب وتقييم تعلّم الآلة.