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

في Ultralytics، نعقد شراكات تجارية مع شركات ناشئة أخرى للمساعدة في تمويل البحث والتطوير لأدواتنا مفتوحة المصدر الرائعة، مثل YOLOv5، للحفاظ على مجانيتها للجميع. قد تحتوي هذه المقالة على روابط تابعة لشركائنا.
ClearML هو أحدث شركائنا: صندوق أدوات مفتوح المصدر مصمم لتوفير وقتك.
مع مهمة تسريع اعتماد التعلم الآلي (ML)، تجعل ClearML دمج التعلم الآلي في أي منتج برمجيات أو أجهزة أمرًا سلسًا.
يجعل هذا التكامل تدريب نموذج YOLOv5 واستخدام مدير تجارب ClearML لتتبعه تلقائيًا أسهل بكثير. يمكنك بسهولة تحديد معرف إصدار مجموعة بيانات ClearML كمدخل للبيانات، وسيتم استخدامه تلقائيًا لتدريب نموذجك.
Link to this sectionارتقِ بتتبع تجاربك إلى المستوى التالي#
- تتبع كل عملية تدريب لنموذج YOLOv5 في مدير التجارب.
- قم بضبط إصدارات بيانات التدريب المخصصة لديك والوصول إليها بسهولة باستخدام أداة إصدار البيانات المدمجة من ClearML.
- احصل على أفضل قيمة mAP ممكنة باستخدام تحسين المعاملات الفائقة (Hyperparameter Optimization) في ClearML.
- حوّل نموذج YOLOv5 الذي قمت بتدريبه حديثًا إلى API ببضعة أوامر فقط باستخدام ClearML Serving.
يعود الأمر إليك في عدد الأدوات التي ترغب في استخدامها، حيث يمكنك الاكتفاء بمدير التجارب، أو ربطها جميعًا معًا في خط سير عمل مثير للإعجاب.
Link to this sectionإعداد الأمور#
لتتبع تجاربك وبياناتك، يحتاج ClearML إلى التواصل مع خادم. لديك خياران لذلك: إما التسجيل مجانًا في خدمة ClearML المستضافة (ClearML Hosted Service) أو إعداد خادمك الخاص، راجع مستندات نشر ClearML Server.
حتى الخادم مفتوح المصدر، لذا إذا كنت تتعامل مع بيانات حساسة، فلا توجد مشكلة!
- قم بتثبيت حزمة clearml python:
pip install clearml - قم بتوصيل ClearML SDK بالخادم عن طريق إنشاء بيانات اعتماد (انتقل إلى أعلى اليمين إلى الإعدادات → مساحة العمل → إنشاء بيانات اعتماد جديدة)، ثم نفذ الأمر أدناه واتبع التعليمات:
clearml-init
وها قد انتهيت! أنت مستعد للبدء...
Link to this sectionتدريب YOLOv5 باستخدام ClearML#
لتمكين تتبع تجارب ClearML، ما عليك سوى تثبيت حزمة ClearML عبر pip.
pip install clearmlسيؤدي هذا إلى تمكين التكامل مع برنامج تدريب YOLOv5. سيتم التقاط وتخزين كل عملية تدريب من الآن فصاعدًا بواسطة مدير تجارب ClearML. إذا كنت ترغب في تغيير project_name أو task_name، توجه إلى المُسجل المخصص (logger) الخاص بنا، حيث يمكنك تغييره: 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, الدقة (precision), الاستدعاء (recall), الخسائر (losses), معدلات التعلم، ...)
- معلومات عامة مثل تفاصيل الجهاز، وقت التشغيل، تاريخ الإنشاء، إلخ.
- جميع المخططات الناتجة مثل مخطط ارتباط التصنيفات ومصفوفة الارتباك
- صور مع صناديق محددة (bounding boxes) لكل دورة تدريبية
- فسيفساء الصور لكل دورة تدريبية
- صور التحقق لكل دورة تدريبية
ليس سيئًا! الآن، يمكننا تصور كل هذه المعلومات في واجهة ClearML للحصول على نظرة عامة على تقدم تدريبنا. أضف أعمدة مخصصة إلى عرض الجدول (مثل mAP_0.5 على سبيل المثال) حتى تتمكن من الفرز بسهولة حسب النموذج الأفضل أداءً. أو حدد تجارب متعددة وقارن بينها مباشرة!
هناك المزيد الذي يمكننا القيام به بكل هذه المعلومات، مثل تحسين المعاملات الفائقة والتنفيذ عن بُعد، لذا استمر في القراءة لمعرفة الكيفية!
Link to this sectionإدارة إصدارات مجموعة البيانات#
يعد إصدار بياناتك بشكل منفصل عن الكود الخاص بك فكرة جيدة عمومًا، كما يسهل الحصول على أحدث إصدار أيضًا. يدعم هذا المستودع توفير معرف إصدار مجموعة البيانات، وسيتأكد من جلب البيانات إذا لم تكن موجودة بالفعل. بالإضافة إلى ذلك، يحفظ سير العمل هذا أيضًا معرف مجموعة البيانات المستخدم كجزء من معاملات المهمة، لذلك ستعرف دائمًا على وجه اليقين أي بيانات تم استخدامها في أي تجربة!
Link to this sectionإعداد مجموعة البيانات الخاصة بك#
يدعم مستودع 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.txtLink to this sectionتحميل مجموعة البيانات الخاصة بك#
لإدخال مجموعة البيانات هذه إلى 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 closeLink to this sectionتشغيل التدريب باستخدام مجموعة بيانات ClearML#
الآن بعد أن أصبح لديك مجموعة بيانات ClearML، يمكنك استخدامها ببساطة شديدة لتدريب نماذج YOLOv5 مخصصة.
python train.py --img 640 --batch 16 --epochs 3 --data clearml:// --weights yolov5s.pt --cacheLink to this sectionتحسين المعاملات الفائقة#
الآن بعد أن أصبح لدينا تجاربنا وإصدار بياناتنا، حان الوقت لإلقاء نظرة على ما يمكننا بناؤه فوق ذلك!
باستخدام معلومات الكود والحزم المثبتة وتفاصيل البيئة، أصبحت التجربة نفسها قابلة لإعادة الإنتاج بالكامل. في الواقع، تتيح لك ClearML استنساخ تجربة وحتى تغيير معاملاتها. يمكننا بعد ذلك إعادة تشغيلها بهذه المعاملات الجديدة تلقائيًا، وهذا هو أساسًا ما يفعله HPO!
لتشغيل تحسين المعاملات الفائقة محليًا، قمنا بتضمين نص برمجي جاهز لك. فقط تأكد من تشغيل مهمة تدريب مرة واحدة على الأقل، بحيث تكون موجودة في مدير تجارب ClearML، وسنقوم باستنساخها وتغيير معاملاتها الفائقة.
ستحتاج إلى ملء معرف مهمة القالب (template task) هذه في النص البرمجي الموجود في 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.pyLink to this sectionالتنفيذ عن بُعد (متقدم)#
يعد تشغيل HPO محليًا مفيدًا حقًا، ولكن ماذا لو أردنا تشغيل تجاربنا على جهاز بعيد بدلاً من ذلك؟ ربما لديك وصول إلى جهاز GPU قوي جدًا في الموقع، أو لديك بعض الميزانية لاستخدام وحدات معالجة الرسوميات (GPU) السحابية. هذا هو المكان الذي يأتي فيه دور ClearML Agent.
تحقق مما يمكن للوكيل القيام به هنا:
باختصار: تحتوي كل تجربة يتم تتبعها بواسطة مدير التجارب على معلومات كافية لإعادة إنتاجها على جهاز مختلف (الحزم المثبتة، التغييرات غير الملتزم بها، إلخ). لذا يقوم وكيل ClearML بذلك بالضبط: فهو يستمع إلى قائمة انتظار للمهام الواردة وعندما يجد واحدة، فإنه يعيد إنشاء البيئة ويشغلها مع الاستمرار في الإبلاغ عن القيم العددية والمخططات وما إلى ذلك إلى مدير التجارب.
يمكنك تحويل أي جهاز (جهاز افتراضي سحابي، جهاز GPU محلي، كمبيوترك المحمول الخاص) إلى وكيل ClearML ببساطة عن طريق تشغيل:
clearml-agent daemon --queue [--docker]Link to this sectionالاستنساخ والتحرير والإدراج في قائمة الانتظار#
مع تشغيل وكيلنا، يمكننا إعطاؤه بعض العمل. هل تتذكر من قسم HPO أننا نستطيع استنساخ مهمة وتعديل المعاملات الفائقة؟ يمكننا القيام بذلك من الواجهة أيضًا!
🪄 استنسخ التجربة بالنقر بزر الماوس الأيمن عليها
🎯 عدّل المعاملات الفائقة إلى ما تريده
⏳ أدرج المهمة في أي من قوائم الانتظار بالنقر بزر الماوس الأيمن عليها
Link to this sectionتنفيذ مهمة عن بُعد#
الآن يمكنك استنساخ مهمة كما أوضحنا أعلاه، أو ببساطة تحديد النص البرمجي الحالي الخاص بك عن طريق إضافة 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أي أسئلة؟ انضم إلى مجتمعنا واترك سؤالك اليوم!






