مسرد المصطلحات

معاودة الاتصال

استكشف الدور الأساسي لعمليات الاسترجاع في التعلّم الآلي - وهي أدوات تراقب وتتحكم وتؤتمت تدريب النماذج لتحسين الدقة والمرونة والكفاءة.

تدريب YOLO النماذج
ببساطة مع Ultralytics HUB

التعرف على المزيد

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

فهم عمليات الاستدعاء في التعلم الآلي

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

عمليات الاستدعاء في Ultralytics

يوفر محرك التدريب 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)


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

تتيح عمليات الاستدعاء العديد من الوظائف المفيدة أثناء تطوير نموذج تعلّم الآلة:

  • فحص النموذج: حفظ النموذج تلقائيًا (أو أوزانه فقط) بشكل دوري أو كلما تحسن الأداء على مجموعة بيانات التحقق من الصحة. هذا يضمن لك عدم فقدان التقدم ويمكنك استرجاع أفضل نسخة من نموذجك. غالبًا ما توفر الأطر عمليات استدعاء مدمجة لهذا الغرض.
  • التوقف المبكر: مراقبة مقياس محدد (على سبيل المثال، خسارة التحقق من الصحة أو الدقة) وإيقاف عملية التدريب إذا توقف المقياس عن التحسن لعدد محدد مسبقًا من الحقب (الصبر). يمنع هذا الأمر الإفراط في التركيب ويوفر الموارد الحسابية.
  • جدولة معدل التعلم: تعديل معدل التعلم ديناميكيًا أثناء التدريب. على سبيل المثال، يمكن أن يساعد تقليل معدل التعلّم عندما يستقر تحسّن النموذج على نحوٍ أكثر فعالية.
  • التسجيل والتصور: إرسال السجلات والمقاييس (مثل الفقدان والدقة) إلى أدوات المراقبة مثل TensorBoard أو المنصات السحابية مثل Weights & Biases للتصور في الوقت الفعلي وتتبع التجارب. تقدم Ultralytics عمليات تكامل سلسة لـ W&B و Comet ML.
  • مراقبة الموارد: تتبُّع استخدام الأجهزةGPUاستخدامGPUCPU GPU والذاكرة) أثناء التدريب لتحديد الاختناقات أو تحسين تخصيص الموارد، وهو أمر مهم بشكل خاص في بيئات الحوسبة السحابية.

تُعد عمليات الاستدعاء أساسية لإنشاء تدفقات عمل مرنة ومؤتمتة وقابلة للملاحظة في مجال التعلم الآلي، مما يسمح للمطورين بتوسيع عمليات التدريب وتخصيصها بكفاءة. وهي تختلف قليلاً عن مستمعي أحداث البرمجيات العامة من خلال دمجها بإحكام في مراحل دورة الحياة المحددة لتدريب وتقييم تعلّم الآلة.

قراءة الكل