استعدوا لـ YOLO Vision 2025!
25 سبتمبر، 2025
10:00 — 18:00 بتوقيت بريطانيا الصيفي
حدث هجين
مؤتمر Yolo Vision 2024

تدريب ومراقبة Ultralytics YOLOv5 عن بعد باستخدام ClearML

فريق Ultralytics

4 دقائق قراءة

21 أكتوبر 2022

اكتشف شراكتنا مع ClearML للحصول على تجربة Ultralytics YOLOv5 محسنة مع تكامل ML سلس وتتبع التجارب والمزيد.

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

ClearML هو أحدث شركائنا: صندوق أدوات مفتوح المصدر مصمم لتوفير وقتك.

تهدف ClearML، برسالتها المتمثلة في تسريع تبني تعلم الآلة (ML)، إلى جعل دمج تعلم الآلة سلسًا في أي منتج برمجي أو جهاز.

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

ارتقِ بتتبع تجاربك إلى المستوى التالي

  • تتبع كل عملية تدريب لـ YOLOv5 في مدير التجارب.
  • الإصدار والوصول بسهولة إلى بيانات التدريب المخصصة الخاصة بك باستخدام أداة ClearML Data Versioning المتكاملة.
  • احصل على أفضل قيمة لـ mAP باستخدام ClearML Hyperparameter Optimization.
  • حوّل نموذج YOLOv5 الذي تم تدريبه حديثًا إلى واجهة برمجة تطبيقات (API) ببضعة أوامر فقط باستخدام ClearML Serving.

الأمر متروك لك لتحديد عدد الأدوات التي ترغب في استخدامها، يمكنك الالتزام بمدير التجارب، أو ربطها جميعًا في مسار مثير للإعجاب.

إعداد الأمور

لتتبع تجاربك وبياناتك، تحتاج ClearML إلى التواصل مع خادم. لديك خياران لذلك: إما الاشتراك مجانًا في خدمة ClearML المستضافة أو إعداد الخادم الخاص بك، راجع هنا.

حتى الخادم مفتوح المصدر، لذلك إذا كنت تتعامل مع بيانات حساسة، فلا توجد مشكلة!

  1. ثبّت حزمة clearml python: pip install clearml
  2. قم بتوصيل ClearML SDK بالخادم عن طريق إنشاء بيانات اعتماد (انتقل إلى أعلى اليمين إلى الإعدادات → مساحة العمل → إنشاء بيانات اعتماد جديدة)، ثم قم بتنفيذ الأمر أدناه واتبع التعليمات: 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, الدقة, الاسترجاع, الخسائر, معدلات التعلم, ...)
  • معلومات عامة مثل تفاصيل الجهاز ووقت التشغيل وتاريخ الإنشاء وما إلى ذلك.
  • جميع المخططات المنتجة مثل مخطط الارتباط التسمي ومصفوفة الالتباس
  • صور مع مربعات إحاطة لكل حقبة
  • فسيفساء لكل حقبة (Mosaic per epoch)
  • صور التحقق من الصحة لكل حقبة

ليس سيئًا للغاية! الآن، يمكننا تصور كل هذه المعلومات في واجهة مستخدم ClearML للحصول على نظرة عامة على تقدم التدريب لدينا. أضف أعمدة مخصصة إلى عرض الجدول (مثل mAP_0.5) حتى تتمكن من الفرز بسهولة على أفضل نموذج أداءً. أو حدد تجارب متعددة وقارنها مباشرة!

هناك المزيد مما يمكننا فعله بكل هذه المعلومات، مثل تحسين المعلمات الفائقة والتنفيذ عن بعد، لذا استمر في القراءة لمعرفة كيف!

إدارة إصدار مجموعة البيانات

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

جهز مجموعة البيانات الخاصة بك

يدعم مستودع YOLOv5 عددًا من مجموعات البيانات المختلفة باستخدام ملفات YAML التي تحتوي على معلوماتها. بشكل افتراضي، يتم تنزيل مجموعات البيانات إلى المجلد ..\datasets بالنسبة إلى المجلد الجذر للمستودع. لذلك إذا قمت بتنزيل مجموعة بيانات coco128 باستخدام الرابط الموجود في YAML أو باستخدام البرامج النصية التي يوفرها yolov5، فستحصل على هيكل المجلد هذا:

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ LICENSE
        |_ README.txt

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

بعد ذلك، ⚠️انسخ ملف YAML المقابل إلى جذر مجلد مجموعة البيانات⚠️. تحتوي ملفات YAML هذه على المعلومات التي سيحتاجها ClearML لاستخدام مجموعة البيانات بشكل صحيح. يمكنك إنشاء ذلك بنفسك أيضًا، بالطبع، ما عليك سوى اتباع هيكل YAMLs المثال.

بشكل أساسي، نحتاج إلى المفاتيح التالية: 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 هو في الواقع أمر مختصر. يمكنك أيضًا تشغيل هذه الأوامر واحدًا تلو الآخر:

# اختياريًا، أضف --parent إذا كنت تريد أن تعتمد

# هذا الإصدار على إصدار مجموعة بيانات آخر، لذلك لن يتم تحميل أي ملفات مكررة!

clearml-data create --name coco128 --project YOLOv5/p>

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

تحسين المعلمات الفائقة (Hyperparameter Optimization)

الآن بعد أن أصبح لدينا تجاربنا وإصدار بياناتنا، فقد حان الوقت لإلقاء نظرة على ما يمكننا بناؤه فوقها!

باستخدام معلومات التعليمات البرمجية والحزم المثبتة وتفاصيل البيئة، أصبحت التجربة نفسها قابلة للتكرار تمامًا الآن. في الواقع، يسمح لك ClearML باستنساخ تجربة وحتى تغيير معاييرها. يمكننا بعد ذلك إعادة تشغيلها بهذه المعلمات الجديدة تلقائيًا، وهذا هو في الأساس ما يفعله HPO!

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

ستحتاج إلى ملء معرف مهمة القالب هذه في البرنامج النصي الموجود في utils/loggers/clearml/hpo.py ثم تشغيله فقط. يمكنك تغيير task.execute_locally() إلى task.execute() لوضعه في قائمة انتظار ClearML وجعل وكيلًا بعيدًا يعمل عليه بدلاً من ذلك.

# لاستخدام optuna، قم بتثبيته أولاً، وإلا يمكنك تغيير المحسن ليكون مجرد RandomSearch pip install optuna python utils/loggers/clearml/hpo.py

التنفيذ عن بعد (متقدم)

يُعد تشغيل HPO محليًا أمرًا مفيدًا حقًا، ولكن ماذا لو أردنا تشغيل تجاربنا على جهاز بعيد بدلاً من ذلك؟ ربما لديك حق الوصول إلى جهاز GPU قوي جدًا في الموقع، أو لديك بعض الميزانية لاستخدام وحدات معالجة الرسومات السحابية. هذا هو المكان الذي يلعب فيه وكيل ClearML.

تحقق مما يمكن للوكيل القيام به هنا:

باختصار: يحتوي كل تجربة يتم تتبعها بواسطة مدير التجارب على معلومات كافية لإعادة إنتاجها على جهاز مختلف (الحزم المثبتة والتغييرات غير الملتزم بها وما إلى ذلك). لذلك، يقوم وكيل ClearML بذلك تمامًا: فهو يستمع إلى قائمة انتظار للمهام الواردة وعندما يجد مهمة، فإنه يعيد إنشاء البيئة وتشغيلها مع الاستمرار في الإبلاغ عن القيم العددية والمخططات وما إلى ذلك إلى مدير التجارب.

يمكنك تحويل أي جهاز (جهاز VM سحابي، أو جهاز GPU محلي، أو جهاز الكمبيوتر المحمول الخاص بك) إلى وكيل ClearML ببساطة عن طريق تشغيل:

clearml-agent daemon --queue [--docker]

الاستنساخ والتحرير والإدراج في قائمة الانتظار

مع تشغيل الوكيل الخاص بنا، يمكننا أن نعطيه بعض العمل. تذكر من قسم HPO أنه يمكننا استنساخ مهمة وتعديل المعلمات الفائقة؟ يمكننا فعل ذلك من الواجهة أيضًا!

🪄 استنساخ التجربة عن طريق النقر بزر الماوس الأيمن عليها

🎯 تعديل المَعلمات الفائقة لتتوافق مع ما تريده

⏳ ضع المهمة في أي من قوائم الانتظار بالنقر بزر الماوس الأيمن عليها

تنفيذ مهمة عن بعد

الآن يمكنك استنساخ مهمة كما أوضحنا أعلاه، أو ببساطة تحديد البرنامج النصي الحالي الخاص بك عن طريق إضافة task.execute_remotely() وعند التنفيذ، سيتم وضعه في قائمة انتظار، ليبدأ الوكيل في العمل عليه!

لتشغيل برنامج تدريب YOLOv5 عن بُعد، كل ما عليك فعله هو إضافة هذا السطر إلى برنامج training.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 # Data_dict is either None is user did not choose for ClearML dataset or is filled in by ClearML data_dict = loggers.clearml.data_dict # ...

عند تشغيل برنامج التدريب النصي بعد هذا التغيير، سيقوم بايثون بتشغيل البرنامج النصي حتى ذلك السطر، وبعد ذلك سيقوم بتعبئة الكود وإرساله إلى قائمة الانتظار بدلاً من ذلك!

توسيع نطاق العاملين تلقائيًا

تأتي ClearML مع أدوات تغيير الحجم التلقائي أيضًا! ستقوم هذه الأداة تلقائيًا بتشغيل أجهزة بعيدة جديدة في السحابة التي تختارها (AWS، GCP، Azure) وتحويلها إلى وكلاء ClearML لك كلما تم اكتشاف تجارب في قائمة الانتظار. بمجرد معالجة المهام، ستعمل أداة تغيير الحجم التلقائي على إيقاف تشغيل الأجهزة البعيدة تلقائيًا، وتتوقف عن الدفع! تحقق من فيديو البدء الخاص بأدوات تغيير الحجم التلقائي أدناه.

هل لديك أي أسئلة؟ انضم إلى مجتمعنا واترك سؤالك اليوم!

لنبنِ مستقبل
الذكاء الاصطناعي معًا!

ابدأ رحلتك مع مستقبل تعلم الآلة

ابدأ مجانًا
تم نسخ الرابط إلى الحافظة