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

ضبط المعلمات الفائقة الفعال باستخدام 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 عدد وحدات معالجة الرسومات التي يجب تخصيصها لكل تجربة أثناء الضبط. يساعد هذا في إدارة استخدام وحدة معالجة الرسومات، خاصة في بيئات وحدات معالجة الرسومات المتعددة. إذا لم يتم توفيره ، فسيستخدم الموالف جميع وحدات معالجة الرسومات المتاحة. اي
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="coco128.yaml",
                         space={"lr0": tune.uniform(1e-5, 1e-1)},
                         epochs=50,
                         use_ray=True)

في مقتطف الشفرة أعلاه ، نقوم بإنشاء ملف YOLO نموذج مع "yolov8n.pt" الأوزان المدربة مسبقا. بعد ذلك، نسمي tune() ، مع تحديد تكوين مجموعة البيانات باستخدام "coco128.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 لتحقيق أقصى استفادة من تجارب ضبط المعلمات الفائقة.



تم إنشاؤه في 2023-11-12, اخر تحديث 2023-11-18
المؤلفون: جلين جوشر (2)

التعليقات