تدريب Ultralytics YOLOv5 ومراقبته عن بُعد باستخدام ClearML
استكشف شراكتنا مع ClearML للحصول على تجربة محسّنة مع Ultralytics YOLOv5، تشمل تكامل ML السلس، وتتبع التجارب، وغير ذلك.

في Ultralytics، نعقد شراكات تجارية مع شركات ناشئة أخرى لمساعدتنا في تمويل البحث والتطوير لأدواتنا الرائعة مفتوحة المصدر، مثل YOLOv5، والحفاظ على إتاحتها مجانًا للجميع. قد تحتوي هذه المقالة على روابط تابعة لشركائنا.
ClearML هو أحدث شركائنا: مجموعة أدوات مفتوحة المصدر صُممت لتوفير وقتك.
بمهمة تسريع اعتماد ML، يجعل ClearML دمج ML في أي منتج برمجي أو عتادي متاح أمرًا سلسًا.
يجعل هذا التكامل تدريب نموذج YOLOv5 واستخدام مدير تجارب ClearML لتتبعه تلقائيًا أكثر بساطة. يمكنك بسهولة تحديد معرّف إصدار مجموعة بيانات ClearML كمدخل للبيانات، وسيُستخدم تلقائيًا لتدريب نموذجك.
ارتقِ بتتبّع تجاربك إلى مستوى جديد#
- تتبّع كل عملية تدريب لـ YOLOv5 في مدير التجارب.
- أنشئ إصدارات من بيانات التدريب المخصصة لديك، وتمكّن من الوصول إليها بسهولة باستخدام أداة ClearML المتكاملة لإدارة إصدارات البيانات.
- احصل على أفضل mAP باستخدام تحسين المعلمات الفائقة في ClearML.
- حوّل نموذج YOLOv5 المدرّب حديثًا إلى API باستخدام بضعة أوامر فقط عبر ClearML Serving.
الأمر متروك لك في تحديد عدد الأدوات التي تريد استخدامها؛ إذ يمكنك الاكتفاء بمدير التجارب أو ربطها جميعًا في خط أنابيب مثير للإعجاب.
إعداد المكونات#
لتتبّع تجاربك وبياناتك، يحتاج ClearML إلى التواصل مع خادم. لديك خياران لذلك: إما التسجيل مجانًا في خدمة ClearML المستضافة، أو إعداد خادمك الخاص؛ راجع وثائق نشر خادم ClearML.
حتى الخادم مفتوح المصدر، لذا إذا كنت تتعامل مع بيانات حساسة، فلا مشكلة في ذلك!
- ثبّت حزمة clearml في Python:
pip install clearml - اربط SDK الخاص بـ ClearML بالخادم عبر إنشاء بيانات اعتماد (انتقل إلى أعلى اليمين إلى Settings → Workspace → Create new credentials)، ثم نفّذ الأمر أدناه واتبع التعليمات:
clearml-init
وها أنت ذا! أنت مستعد للبدء...
تدريب YOLOv5 باستخدام ClearML#
لتمكين تتبّع تجارب ClearML، ثبّت حزمة ClearML pip فحسب.
pip install clearmlسيؤدي ذلك إلى تمكين التكامل مع نص تدريب YOLOv5. ومن الآن فصاعدًا، سيسجل مدير تجارب ClearML كل عملية تدريب ويخزنها. إذا أردت تغيير project_name أو task_name، فانتقل إلى المسجّل المخصص لدينا، حيث يمكنك تغييرهما: utils/loggers/clearml/clearml_utils.py
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cacheسيسجل هذا ما يلي:
- التعليمات البرمجية المصدرية + التغييرات غير المُرسلة إلى المستودع
- الحزم المثبّتة
- المعلمات (الفائقة)
- ملفات النموذج (استخدم --save-period n لحفظ نقطة تحقق كل n حقبة)
- مخرجات وحدة التحكم
- القيم العددية (mAP_0.5، mAP_0.5:0.95، الدقة، الاستدعاء، الخسائر، معدلات التعلم، ...)
- معلومات عامة مثل تفاصيل الجهاز ووقت التشغيل وتاريخ الإنشاء وغير ذلك.
- جميع المخططات الناتجة، مثل مخطط الترابط للتسميات ومصفوفة الالتباس
- الصور التي تحتوي على مربعات إحاطة لكل حقبة
- الفسيفساء لكل حقبة
- صور التحقق لكل حقبة
ليس الأمر سيئًا! يمكننا الآن تصور كل هذه المعلومات في واجهة مستخدم ClearML للحصول على نظرة عامة على تقدم التدريب. أضف أعمدة مخصصة إلى عرض الجدول (مثل mAP_0.5) لتتمكن بسهولة من فرز النماذج بحسب أفضل أداء. أو حدّد تجارب متعددة وقارن بينها مباشرةً!
يمكننا فعل المزيد بهذه المعلومات، مثل تحسين المعلمات الفائقة والتنفيذ عن بُعد، لذا تابع القراءة لمعرفة الطريقة!
إدارة إصدارات مجموعات البيانات#
يُعد إنشاء إصدارات لبياناتك بشكل منفصل عن التعليمات البرمجية فكرة جيدة عمومًا، كما يسهّل الحصول على أحدث إصدار. يدعم هذا المستودع توفير معرّف إصدار مجموعة بيانات، وسيتأكد من جلب البيانات إذا لم تكن موجودة بعد. إضافةً إلى ذلك، يحفظ سير العمل هذا أيضًا معرّف مجموعة البيانات المستخدمة ضمن معلمات المهمة، ولذلك ستعرف دائمًا وبشكل مؤكد البيانات المستخدمة في كل تجربة!
إعداد مجموعة البيانات#
يدعم مستودع YOLOv5 عددًا من مجموعات البيانات المختلفة باستخدام ملفات YAML التي تحتوي على معلوماتها. تُنزّل مجموعات البيانات افتراضيًا إلى مجلد ../datasets بالنسبة إلى مجلد جذر المستودع. لذلك، إذا نزّلت مجموعة بيانات coco128 باستخدام الرابط الموجود في YAML أو باستخدام النصوص البرمجية التي يوفرها yolov5، فستحصل على بنية المجلدات التالية:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtلكن يمكن أن تكون هذه أي مجموعة بيانات تختارها. لا تتردد في استخدام مجموعتك الخاصة، ما دمت تلتزم ببنية المجلدات هذه.
بعد ذلك، ⚠️انسخ ملف YAML المطابق إلى جذر مجلد مجموعة البيانات⚠️. تحتوي ملفات YAML هذه على المعلومات التي سيحتاج إليها ClearML لاستخدام مجموعة البيانات بشكل صحيح. وبالطبع، يمكنك إنشاء هذا الملف بنفسك أيضًا، ما عليك سوى اتباع بنية ملفات YAML النموذجية.
نحتاج أساسًا إلى المفاتيح التالية: path، train، test، val، nc، names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # ← HERE!
|_ LICENSE
|_ README.txtتحميل مجموعة البيانات#
لإدخال مجموعة البيانات هذه إلى ClearML كمجموعة بيانات ذات إصدارات، انتقل إلى مجلد جذر مجموعة البيانات وشغّل الأمر التالي:
cd coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .الأمر clearml-data sync هو في الواقع أمر مختصر. يمكنك أيضًا تشغيل الأوامر التالية واحدًا تلو الآخر:
# Optionally add --parent if you want to base
# this version on another dataset version, so no duplicate files are uploaded!
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data closeتشغيل التدريب باستخدام مجموعة بيانات ClearML#
بعد أن أصبحت لديك مجموعة بيانات ClearML، يمكنك استخدامها ببساطة لتدريب نماذج YOLOv5 مخصصة.
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cacheتحسين المعلمات الفائقة#
بعد أن أصبحت لدينا تجاربنا وإصدار البيانات، حان الوقت لإلقاء نظرة على ما يمكننا بناؤه فوق ذلك!
باستخدام معلومات التعليمات البرمجية والحزم المثبّتة وتفاصيل البيئة، أصبحت التجربة نفسها قابلة لإعادة الإنتاج بالكامل الآن. في الواقع، يتيح لك ClearML استنساخ تجربة وحتى تغيير معلماتها. ويمكننا بعد ذلك إعادة تشغيلها تلقائيًا بهذه المعلمات الجديدة؛ وهذا أساسًا ما يفعله HPO!
لتشغيل تحسين المعلمات الفائقة محليًا، أدرجنا نصًا برمجيًا مُعدًا مسبقًا من أجلك. ما عليك سوى التأكد من تشغيل مهمة تدريب مرة واحدة على الأقل، بحيث تكون موجودة في مدير تجارب ClearML؛ إذ سنستنسخها ونغيّر معلماتها الفائقة أساسًا.
ستحتاج إلى إدخال معرّف مهمة القالب هذه في النص البرمجي الموجود في utils/loggers/clearml/hpo.py ثم تشغيله. يمكنك تغيير task.execute_locally() إلى task.execute() لوضعها في قائمة انتظار ClearML وجعل وكيل بعيد ينفذها بدلًا من ذلك.
# To use optuna, install it first, otherwise you can change the optimizer to just be RandomSearch
pip install optuna
python utils/loggers/clearml/hpo.pyالتنفيذ عن بُعد (متقدم)#
يُعد تشغيل HPO محليًا مفيدًا جدًا، ولكن ماذا لو أردنا تشغيل تجاربنا على جهاز بعيد بدلًا من ذلك؟ ربما يمكنك الوصول إلى جهاز GPU قوي جدًا في الموقع، أو لديك ميزانية لاستخدام وحدات GPU سحابية. هنا يأتي دور ClearML Agent.
اطّلع هنا على ما يستطيع الوكيل فعله:
باختصار: تحتوي كل تجربة يتتبعها مدير التجارب على معلومات كافية لإعادة إنتاجها على جهاز مختلف (الحزم المثبّتة والتغييرات غير المُرسلة إلى المستودع وغير ذلك). لذلك، يفعل وكيل ClearML ذلك تحديدًا: يستمع إلى قائمة انتظار للمهام الواردة، وعندما يعثر على مهمة، يعيد إنشاء البيئة ويشغّلها، مع الاستمرار في إرسال القيم العددية والمخططات وغير ذلك إلى مدير التجارب.
يمكنك تحويل أي جهاز (آلة افتراضية سحابية، أو جهاز GPU محلي، أو حاسوبك المحمول) إلى وكيل ClearML عبر تشغيل ما يلي ببساطة:
clearml-agent daemon --queue [--docker]الاستنساخ والتحرير والإضافة إلى قائمة الانتظار#
بعد تشغيل وكيلنا، يمكننا تزويده ببعض العمل. تذكّر من قسم HPO أنه يمكننا استنساخ مهمة وتحرير المعلمات الفائقة؟ يمكننا فعل ذلك من الواجهة أيضًا!
🪄 استنسخ التجربة بالنقر بزر الفأرة الأيمن عليها
🎯 حرّر المعلمات الفائقة لتصبح بالقيم التي تريدها
⏳ أضف المهمة إلى أي من قوائم الانتظار بالنقر بزر الفأرة الأيمن عليها
تنفيذ مهمة عن بُعد#
يمكنك الآن استنساخ مهمة كما أوضحنا أعلاه، أو ببساطة تحديد النص البرمجي الحالي بإضافة task.execute_remotely()، وعند التنفيذ ستُضاف المهمة إلى قائمة انتظار ليبدأ الوكيل العمل عليها!
لتشغيل نص تدريب YOLOv5 عن بُعد، كل ما عليك فعله هو إضافة هذا السطر إلى النص البرمجي train.py بعد إنشاء مسجّل ClearML:
# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
loggers = Loggers(save_dir, weights, opt, hyp, LOGGER) # loggers instance
if loggers.clearml:
loggers.clearml.task.execute_remotely(queue="my_queue") # <------ ADD THIS LINEهل لديك أي أسئلة؟ انضم إلى مجتمعنا واترك سؤالك اليوم!









