ضبط المعلمات الفائقة الفعال باستخدام Ray Tune و YOLOv8
يعد ضبط المعلمات الفائقة أمرا حيويا في تحقيق ذروة أداء النموذج من خلال اكتشاف المجموعة المثلى من المعلمات الفائقة. يتضمن ذلك تشغيل الإصدارات التجريبية بمعلمات فائقة مختلفة وتقييم أداء كل تجربة.
تسريع الضبط باستخدام Ultralytics YOLOv8 وراي تيون
Ultralytics YOLOv8 يتضمن Ray Tune لضبط المعلمات الفائقة ، مما يبسط تحسين YOLOv8 المعلمات الفائقة النموذجية. باستخدام Ray Tune ، يمكنك استخدام استراتيجيات البحث المتقدمة والتوازي والتوقف المبكر لتسريع عملية الضبط.
راي تيون
Ray Tune هي مكتبة ضبط المعلمات الفائقة المصممة لتحقيق الكفاءة والمرونة. وهو يدعم استراتيجيات البحث المختلفة ، والتوازي ، واستراتيجيات التوقف المبكر ، ويتكامل بسلاسة مع أطر التعلم الآلي الشائعة ، بما في ذلك Ultralytics YOLOv8.
التكامل مع Weights & Biases
YOLOv8 يسمح أيضا بالتكامل الاختياري مع Weights & Biases لمراقبة عملية الضبط.
تركيب
لتثبيت الحزم المطلوبة ، قم بتشغيل:
تركيب
استخدام
استخدام
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. من خلال توفير مساحة بحث مخصصة ، يمكنك تركيز عملية الضبط على معلمات فائقة محددة ذات أهمية.
استخدام
في مقتطف الشفرة أعلاه ، نقوم بإنشاء ملف 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()
التحليل الأساسي على مستوى التجربة
احصل على نظرة عامة حول كيفية إجراء التجارب. يمكنك التحقق بسرعة مما إذا كانت هناك أي أخطاء أثناء التجارب.
التحليل الأساسي على مستوى التجربة
الوصول إلى تكوينات المعلمات الفائقة للإصدار التجريبي الفردي وآخر المقاييس التي تم الإبلاغ عنها.
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، اتبع الخطوات التالية:
-
قم بتثبيت الحزم المطلوبة:
-
قم بتحميل الطراز YOLOv8 وابدأ الضبط:
يستخدم هذا الأمر استراتيجيات البحث المتقدمة والتوازي في 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 الخاصة بك :
-
تثبيت W&B:
-
قم بتعديل البرنامج النصي للضبط:
سيسمح لك هذا الإعداد بمراقبة عملية الضبط، وتتبع تكوينات المعرف الفائق، وتصور النتائج في 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)
يعمل ذلك على تخصيص نطاق المعلمات الفائقة مثل معدل التعلّم الأولي والزخم الذي سيتم استكشافه أثناء عملية الضبط. للحصول على تكوينات متقدمة، راجع قسم مثال مساحة البحث المخصصة.