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

ضبط المعلمات الفائقة الفعال باستخدام Ray Tune و YOLOv8

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

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

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

راي تيون

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

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

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

YOLOv8 يسمح أيضا بالتكامل الاختياري مع 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 YOLOv8n model
model = YOLO("yolov8n.pt")

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

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

ال tune() الطريقة في YOLOv8 يوفر واجهة سهلة الاستخدام لضبط المعلمات الفائقة باستخدام Ray Tune. يقبل العديد من الحجج التي تسمح لك بتخصيص عملية الضبط. فيما يلي شرح مفصل لكل معلمة:

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

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

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

يسرد الجدول التالي معلمات مساحة البحث الافتراضية لضبط المعلمات الفائقة في YOLOv8 مع راي تون. كل معلمة لها نطاق قيم محدد محدد بواسطة 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 و YOLOv8. من خلال توفير مساحة بحث مخصصة ، يمكنك تركيز عملية الضبط على معلمات فائقة محددة ذات أهمية.

استخدام

from ultralytics import YOLO

# Define a YOLO model
model = YOLO("yolov8n.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 نموذج مع "yolov8n.pt" الأوزان المدربة مسبقا. بعد ذلك، نسمي 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 result in 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 لتحقيق أقصى استفادة من تجارب ضبط المعلمة الفائقة.

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

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

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

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

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

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

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

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

Ultralytics YOLOv8 يستخدم المعلمات الفائقة الافتراضية التالية للضبط باستخدام 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 مع ضبط النموذج YOLOv8 الخاص بي ؟

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

  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("yolov8n.pt")
    
    # Tune hyperparameters
    result_grid = model.tune(data="coco8.yaml", use_ray=True)
    

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

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

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

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

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

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

لتحديد مساحة بحث مخصصة لضبط المعرف التشعبي YOLOv8 الخاص بك باستخدام Ray Tune:

from ray import tune

from ultralytics import YOLO

model = YOLO("yolov8n.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)

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



تم الإنشاء 2023-11-12-2023، تم التحديث 2024-07-05
المؤلفون: جلين-جوتشر (10)

التعليقات