تخطي إلى المحتوى

الضبط الفعال للمقياس الفائق الفعال مع راي تيون و YOLO11

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

تسريع الضبط باستخدام Ultralytics YOLO11 وراي تيون

Ultralytics YOLO11 يشتمل على Ray Tune لضبط المعلمات التشعبية، مما يبسط عملية تحسين المعلمات التشعبية للنموذج YOLO11 . باستخدام Ray Tune، يمكنك استخدام استراتيجيات البحث المتقدمة والتوازي والتوقف المبكر لتسريع عملية الضبط.

راي تيون

نظرة عامة على راي تون

Ray Tune هي مكتبة لضبط المعلمات الفائقة مصممة لتحقيق الكفاءة والمرونة. وهي تدعم العديد من استراتيجيات البحث، والتوازي، واستراتيجيات التوقف المبكر، وتتكامل بسلاسة مع أطر التعلم الآلي الشائعة، بما في ذلك Ultralytics YOLO11 .

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

YOLO11 يسمح أيضًا بالتكامل الاختياري مع Weights & Biases لمراقبة عملية الضبط.

التركيب

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

التركيب

# 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() في YOLO11 يوفر واجهة سهلة الاستخدام لضبط المعلمة الفائقة باستخدام Ray Tune. وهي تقبل العديد من الوسيطات التي تسمح لك بتخصيص عملية الضبط. فيما يلي شرح مفصل لكل معلمة:

المعلمة النوع الوصف القيمة الافتراضية
data str ملف تكوين مجموعة البيانات (بتنسيق YAML) لتشغيل الموالف عليه. يجب أن يحدد هذا الملف مسارات بيانات التدريب والتحقق من الصحة، بالإضافة إلى الإعدادات الأخرى الخاصة بمجموعة البيانات.
space dict, optional قاموس يحدد مساحة بحث المعرف التشعبي ل Ray Tune. يتوافق كل مفتاح مع اسم معيار تشعبي، وتحدد القيمة نطاق القيم المراد استكشافها أثناء الضبط. إذا لم يتم توفيره، يستخدم YOLO11 مساحة بحث افتراضية مع مختلف المعلمات التشعبية.
grace_period int, optional فترة السماح بالحلقات الزمنية لجدولة ASHA في Ray Tune. لن يقوم المجدول بإنهاء أي تجربة قبل هذا العدد من الحقب الزمنية، مما يسمح للنموذج بالحصول على حد أدنى من التدريب قبل اتخاذ قرار بشأن التوقف المبكر. 10
gpu_per_trial int, optional عدد وحدات معالجة الرسومات المراد تخصيصها لكل تجربة أثناء الضبط. يساعد ذلك في إدارة استخدام GPU ، خاصة في البيئات متعددةGPU . إذا لم يتم توفيره، سيستخدم الموالف جميع وحدات معالجة الرسومات المتاحة. لا يوجد
iterations int, optional الحد الأقصى لعدد التجارب التي سيتم تشغيلها أثناء الضبط. تساعد هذه المعلمة في التحكم في العدد الإجمالي لتركيبات المعلمة الفائقة التي تم اختبارها، مما يضمن عدم تشغيل عملية الضبط إلى ما لا نهاية. 10
**train_args dict, optional وسيطات إضافية لتمريرها إلى train() أثناء الضبط. يمكن أن تتضمن هذه الوسيطات إعدادات مثل عدد حلقات التدريب, حجم الدُفعةوالتكوينات الأخرى الخاصة بالتدريب. {}

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

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

يسرد الجدول التالي قائمة بمعلمات مساحة البحث الافتراضية لضبط المعلمة الفائقة في YOLO11 مع Ray Tune. كل معلمة لها نطاق قيمة محددة محددة محددة بواسطة tune.uniform().

المعلمة نطاق القيمة الوصف
lr0 tune.uniform(1e-5, 1e-1) معدل التعلم الأولي
lrf tune.uniform(0.01, 1.0) عامل معدل التعلم النهائي
momentum tune.uniform(0.6, 0.98) الزخم
weight_decay tune.uniform(0.0, 0.001) اضمحلال الوزن
warmup_epochs tune.uniform(0.0, 5.0) فترات الإحماء
warmup_momentum tune.uniform(0.0, 0.95) زخم الإحماء
box tune.uniform(0.02, 0.2) وزن الصندوق المفقود
cls tune.uniform(0.2, 4.0) فقدان الوزن في الفصل
hsv_h tune.uniform(0.0, 0.1) نطاق زيادة الصبغة
hsv_s tune.uniform(0.0, 0.9) نطاق زيادة التشبع
hsv_v tune.uniform(0.0, 0.9) نطاق زيادة القيمة (السطوع) زيادة القيمة (السطوع)
degrees tune.uniform(0.0, 45.0) نطاق زيادة الدوران (بالدرجات)
translate tune.uniform(0.0, 0.9) نطاق زيادة الترجمة التحريرية
scale tune.uniform(0.0, 0.9) توسيع نطاق الزيادة في النطاق
shear tune.uniform(0.0, 10.0) نطاق زيادة القص (بالدرجات)
perspective tune.uniform(0.0, 0.001) نطاق تكبير المنظور
flipud tune.uniform(0.0, 1.0) احتمالية الزيادة الرأسية للوجه العمودي
fliplr tune.uniform(0.0, 1.0) احتمالية زيادة التقليب الأفقي للوجه الأفقي
mosaic tune.uniform(0.0, 1.0) احتمال زيادة الفسيفساء
mixup tune.uniform(0.0, 1.0) احتمال زيادة الاختلاط
copy_paste tune.uniform(0.0, 1.0) احتمال زيادة النسخ واللصق

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

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

الاستخدام

from ray import tune

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,
)

في المقتطف البرمجي أعلاه، نقوم بإنشاء نموذج YOLO باستخدام أوزان "yolo11n.pt" التي تم تدريبها مسبقًا. بعد ذلك، نستدعي tune() طريقة تحديد تكوين مجموعة البيانات باستخدام "coco8.yaml". نوفر مساحة بحث مخصصة لمعدل التعلم الأولي lr0 باستخدام قاموس يحتوي على المفتاح "lr0" والقيمة tune.uniform(1e-5, 1e-1). أخيرًا، نقوم بتمرير وسيطات تدريب إضافية، مثل عدد الحقب الزمنية مباشرةً إلى طريقة الضبط على النحو التالي epochs=50.

معالجة نتائج ضبط الأشعة السينية

بعد إجراء تجربة ضبط المعرف الفائق باستخدام Ray 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 لتحقيق أقصى استفادة من تجارب ضبط المعلمة الفائقة.

الأسئلة الشائعة

كيف يمكنني ضبط المعلمات الفائقة لنموذجي YOLO11 باستخدام راي تيون؟

لضبط المعلمات الفائقة لنموذج Ultralytics YOLO11 الخاص بك باستخدام Ray Tune، اتبع الخطوات التالية:

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

    pip install -U ultralytics "ray[tune]"
    pip install wandb  # optional for logging
    
  2. قم بتحميل الطراز YOLO11 وابدأ الضبط:

    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 لتحسين المعلمات الفائقة لنموذجك بكفاءة. لمزيد من المعلومات، راجع وثائق راي تيون.

ما هي المعلمات الفائقة الافتراضية لضبط YOLO11 باستخدام راي تيون؟

Ultralytics YOLO11 يستخدم المعلمات الفائقة الافتراضية التالية للضبط باستخدام Ray Tune:

المعلمة نطاق القيمة الوصف
lr0 tune.uniform(1e-5, 1e-1) معدل التعلم الأولي
lrf tune.uniform(0.01, 1.0) عامل معدل التعلم النهائي
momentum tune.uniform(0.6, 0.98) الزخم
weight_decay tune.uniform(0.0, 0.001) اضمحلال الوزن
warmup_epochs tune.uniform(0.0, 5.0) فترات الإحماء
box tune.uniform(0.02, 0.2) وزن الصندوق المفقود
cls tune.uniform(0.2, 4.0) فقدان الوزن في الفصل
hsv_h tune.uniform(0.0, 0.1) نطاق زيادة الصبغة
translate tune.uniform(0.0, 0.9) نطاق زيادة الترجمة التحريرية

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

كيف يمكنني دمج Weights & Biases مع ضبط النموذج YOLO11 الخاص بي ؟

لدمج Weights & Biases (W&B) مع عملية الضبط Ultralytics YOLO11 الخاصة بك :

  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.

لماذا يجب أن أستخدم Ray Tune لتحسين المعامل التشعبي باستخدام YOLO11 ؟

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

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

يتكامل راي تيون بسلاسة مع Ultralytics YOLO11 ، مما يوفر واجهة سهلة الاستخدام لضبط المعلمات الفائقة بفعالية. للبدء، اطلع على دليل الضبط الفعال للمقاييس التشعبية باستخدام راي تيون و YOLO11.

كيف يمكنني تحديد مساحة بحث مخصصة لضبط المعرف التشعبي YOLO11 ؟

لتحديد مساحة بحث مخصصة لضبط المعرف التشعبي YOLO11 الخاص بك باستخدام 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)

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

📅 تم إنشاؤها منذ 1 سنة مضت ✏️ تم التحديث منذ 12 يومًا

التعليقات