انتقل إلى المحتوى

Efficient Hyperparameter Tuning with Ray Tune and YOLO11

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

Accelerate Tuning with Ultralytics YOLO11 and Ray Tune

Ultralytics YOLO11 incorporates Ray Tune for hyperparameter tuning, streamlining the optimization of YOLO11 model hyperparameters. With Ray Tune, you can utilize advanced search strategies, parallelism, and early stopping to expedite the tuning process.

راي تيون

راي لحن نظرة عامة

Ray Tune is a hyperparameter tuning library designed for efficiency and flexibility. It supports various search strategies, parallelism, and early stopping strategies, and seamlessly integrates with popular machine learning frameworks, including Ultralytics YOLO11.

التكامل مع Weights & Biases

YOLO11 also allows optional integration with Weights & Biases for monitoring the tuning process.

تركيب

لتثبيت الحزم المطلوبة ، قم بتشغيل:

تركيب

# Install and update Ultralytics and Ray Tune packages
pip install -U ultralytics "ray[tune]"

# Optionally install W&B for logging
pip install wandb

استخدام

استخدام

from ultralytics import YOLO

# Load a YOLO11n model
model = YOLO("yolo11n.pt")

# Start tuning hyperparameters for YOLO11n training on the COCO8 dataset
result_grid = model.tune(data="coco8.yaml", use_ray=True)

tune() معلمات الطريقة

ال tune() method in YOLO11 provides an easy-to-use interface for hyperparameter tuning with Ray Tune. It accepts several arguments that allow you to customize the tuning process. Below is a detailed explanation of each parameter:

البارامترنوعوصفالقيمة الافتراضية
datastrThe dataset configuration file (in YAML format) to run the tuner on. This file should specify the training and validation data paths, as well as other dataset-specific settings.
spacedict, optionalA dictionary defining the hyperparameter search space for Ray Tune. Each key corresponds to a hyperparameter name, and the value specifies the range of values to explore during tuning. If not provided, YOLO11 uses a default search space with various hyperparameters.
grace_periodint, optionalThe grace period in epochs for the ASHA scheduler in Ray Tune. The scheduler will not terminate any trial before this number of epochs, allowing the model to have some minimum training before making a decision on early stopping.10
gpu_per_trialint, optionalعدد وحدات معالجة الرسومات المراد تخصيصها لكل تجربة أثناء الضبط. يساعد ذلك في إدارة استخدام GPU ، خاصة في البيئات متعددةGPU . إذا لم يتم توفيره، سيستخدم الموالف جميع وحدات معالجة الرسومات المتاحة.اي
iterationsint, optionalالحد الأقصى لعدد الإصدارات التجريبية التي سيتم تشغيلها أثناء الضبط. تساعد هذه المعلمة في التحكم في العدد الإجمالي لمجموعات المعلمات الفائقة التي تم اختبارها، مما يضمن عدم تشغيل عملية الضبط إلى أجل غير مسمى.10
**train_argsdict, optionalوسيطات إضافية لتمريرها إلى train() method during tuning. These arguments can include settings like the number of training epochs, batch size, and other training-specific configurations.{}

من خلال تخصيص هذه المعلمات، يمكنك ضبط عملية تحسين المعلمات الفائقة لتناسب احتياجاتك الخاصة والموارد الحسابية المتاحة.

وصف مساحة البحث الافتراضية

The following table lists the default search space parameters for hyperparameter tuning in YOLO11 with Ray Tune. Each parameter has a specific value range defined by tune.uniform().

البارامترنطاق القيمةوصف
lr0tune.uniform(1e-5, 1e-1)Initial learning rate
lrftune.uniform(0.01, 1.0)عامل معدل التعلم النهائي
momentumtune.uniform(0.6, 0.98)الزخم
weight_decaytune.uniform(0.0, 0.001)تسوس الوزن
warmup_epochstune.uniform(0.0, 5.0)عصور الاحماء
warmup_momentumtune.uniform(0.0, 0.95)زخم الاحماء
boxtune.uniform(0.02, 0.2)صندوق فقدان الوزن
clstune.uniform(0.2, 4.0)فئة فقدان الوزن
hsv_htune.uniform(0.0, 0.1)نطاق زيادة تدرج اللون
hsv_stune.uniform(0.0, 0.9)نطاق زيادة التشبع
hsv_vtune.uniform(0.0, 0.9)نطاق زيادة القيمة (السطوع)
degreestune.uniform(0.0, 45.0)نطاق زيادة الدوران (بالدرجات)
translatetune.uniform(0.0, 0.9)نطاق زيادة الترجمة
scaletune.uniform(0.0, 0.9)توسيع نطاق الزيادة
sheartune.uniform(0.0, 10.0)نطاق زيادة القص (بالدرجات)
perspectivetune.uniform(0.0, 0.001)نطاق زيادة المنظور
flipudtune.uniform(0.0, 1.0)احتمال زيادة الوجه العمودي
fliplrtune.uniform(0.0, 1.0)احتمال زيادة الوجه الأفقي
mosaictune.uniform(0.0, 1.0)احتمال زيادة الفسيفساء
mixuptune.uniform(0.0, 1.0)احتمال زيادة الخلط
copy_pastetune.uniform(0.0, 1.0)احتمال زيادة النسخ واللصق

مثال على مساحة البحث المخصصة

In this example, we demonstrate how to use a custom search space for hyperparameter tuning with Ray Tune and YOLO11. By providing a custom search space, you can focus the tuning process on specific hyperparameters of interest.

استخدام

from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolo11n.pt")

# Run Ray Tune on the model
result_grid = model.tune(
    data="coco8.yaml",
    space={"lr0": tune.uniform(1e-5, 1e-1)},
    epochs=50,
    use_ray=True,
)

In the code snippet above, we create a YOLO model with the "yolo11n.pt" pretrained weights. Then, we call the tune() ، مع تحديد تكوين مجموعة البيانات باستخدام "coco8.yaml". نحن نقدم مساحة بحث مخصصة لمعدل التعلم الأولي lr0 باستخدام قاموس بالمفتاح "LR0" والقيمة tune.uniform(1e-5, 1e-1). أخيرا ، نقوم بتمرير وسيطات تدريب إضافية ، مثل عدد الفترات مباشرة إلى طريقة اللحن ك epochs=50.

معالجة نتائج راي لحن

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

تحميل نتائج تجربة Tune من دليل

بعد تشغيل تجربة الضبط مع tuner.fit()، يمكنك تحميل النتائج من دليل. هذا مفيد ، خاصة إذا كنت تجري التحليل بعد خروج البرنامج النصي للتدريب الأولي.

experiment_path = f"{storage_path}/{exp_name}"
print(f"Loading results from {experiment_path}...")

restored_tuner = tune.Tuner.restore(experiment_path, trainable=train_mnist)
result_grid = restored_tuner.get_results()

التحليل الأساسي على مستوى التجربة

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

if result_grid.errors:
    print("One or more trials failed!")
else:
    print("No errors!")

التحليل الأساسي على مستوى التجربة

الوصول إلى تكوينات المعلمات الفائقة للإصدار التجريبي الفردي وآخر المقاييس التي تم الإبلاغ عنها.

for i, result in enumerate(result_grid):
    print(f"Trial #{i}: Configuration: {result.config}, Last Reported Metrics: {result.metrics}")

رسم التاريخ الكامل للمقاييس المبلغ عنها للتجربة

يمكنك رسم سجل المقاييس التي تم الإبلاغ عنها لكل تجربة لمعرفة كيفية تطور المقاييس بمرور الوقت.

import matplotlib.pyplot as plt

for i, result in enumerate(result_grid):
    plt.plot(
        result.metrics_dataframe["training_iteration"],
        result.metrics_dataframe["mean_accuracy"],
        label=f"Trial {i}",
    )

plt.xlabel("Training Iterations")
plt.ylabel("Mean Accuracy")
plt.legend()
plt.show()

ملخص

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

استكشف المزيد من خلال الاطلاع على صفحة مستندات تحليل النتائج الخاصة بـ Ray Tune لتحقيق أقصى استفادة من تجارب ضبط المعلمة الفائقة.

الأسئلة المتداولة

How do I tune the hyperparameters of my YOLO11 model using Ray Tune?

To tune the hyperparameters of your Ultralytics YOLO11 model using Ray Tune, follow these steps:

  1. قم بتثبيت الحزم المطلوبة:

    pip install -U ultralytics "ray[tune]"
    pip install wandb  # optional for logging
    
  2. Load your YOLO11 model and start tuning:

    from ultralytics import YOLO
    
    # Load a YOLO11 model
    model = YOLO("yolo11n.pt")
    
    # Start tuning with the COCO8 dataset
    result_grid = model.tune(data="coco8.yaml", use_ray=True)
    

يستخدم هذا الأمر استراتيجيات البحث المتقدمة والتوازي في Ray Tune لتحسين المعلمات الفائقة لنموذجك بكفاءة. لمزيد من المعلومات، راجع وثائق راي تيون.

What are the default hyperparameters for YOLO11 tuning with Ray Tune?

Ultralytics YOLO11 uses the following default hyperparameters for tuning with Ray Tune:

البارامترنطاق القيمةوصف
lr0tune.uniform(1e-5, 1e-1)معدل التعلم الأولي
lrftune.uniform(0.01, 1.0)عامل معدل التعلم النهائي
momentumtune.uniform(0.6, 0.98)الزخم
weight_decaytune.uniform(0.0, 0.001)تسوس الوزن
warmup_epochstune.uniform(0.0, 5.0)عصور الاحماء
boxtune.uniform(0.02, 0.2)صندوق فقدان الوزن
clstune.uniform(0.2, 4.0)فئة فقدان الوزن
hsv_htune.uniform(0.0, 0.1)نطاق زيادة تدرج اللون
translatetune.uniform(0.0, 0.9)نطاق زيادة الترجمة

يمكن تخصيص هذه المعلمات الفائقة لتناسب احتياجاتك الخاصة. للاطلاع على قائمة كاملة ومزيد من التفاصيل، راجع دليل ضبط المعلمات الفائقة.

How can I integrate Weights & Biases with my YOLO11 model tuning?

To integrate Weights & Biases (W&B) with your Ultralytics YOLO11 tuning process:

  1. تثبيت W&B:

    pip install wandb
    
  2. قم بتعديل البرنامج النصي للضبط:

    import wandb
    
    from ultralytics import YOLO
    
    wandb.init(project="YOLO-Tuning", entity="your-entity")
    
    # Load YOLO model
    model = YOLO("yolo11n.pt")
    
    # Tune hyperparameters
    result_grid = model.tune(data="coco8.yaml", use_ray=True)
    

سيسمح لك هذا الإعداد بمراقبة عملية الضبط، وتتبع تكوينات المعرف الفائق، وتصور النتائج في W&B.

Why should I use Ray Tune for hyperparameter optimization with YOLO11?

يوفر Ray Tune العديد من المزايا لتحسين المعلمة الفائقة:

  • استراتيجيات بحث متقدمة: يستخدم خوارزميات مثل Bayesian Optimization و HyperOpt للبحث الفعال عن المعلمات.
  • التوازي: يدعم التنفيذ المتوازي لتجارب متعددة، مما يسرّع عملية الضبط بشكل كبير.
  • الإيقاف المبكر: توظف استراتيجيات مثل الإيقاف المبكر للتجارب ذات الأداء الضعيف لإنهاء التجارب ذات الأداء الضعيف في وقت مبكر، مما يوفر الموارد الحسابية.

Ray Tune seamlessly integrates with Ultralytics YOLO11, providing an easy-to-use interface for tuning hyperparameters effectively. To get started, check out the Efficient Hyperparameter Tuning with Ray Tune and YOLO11 guide.

How can I define a custom search space for YOLO11 hyperparameter tuning?

To define a custom search space for your YOLO11 hyperparameter tuning with Ray Tune:

from ray import tune

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
search_space = {"lr0": tune.uniform(1e-5, 1e-1), "momentum": tune.uniform(0.6, 0.98)}
result_grid = model.tune(data="coco8.yaml", space=search_space, use_ray=True)

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

📅 Created 11 months ago ✏️ Updated 22 days ago

التعليقات