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

في Ultralytics، نعقد شراكات تجارية مع شركات ناشئة أخرى للمساعدة في تمويل البحث والتطوير لأدواتنا مفتوحة المصدر الرائعة، مثل YOLOv5، للحفاظ على مجانيتها للجميع. قد تحتوي هذه المقالة على روابط تابعة لشركائنا.
ClearML هو أحدث شريك لنا: صندوق أدوات مفتوح المصدر مصمم لتوفير وقتك.
مع مهمة تسريع اعتماد التعلم الآلي (ML)، تجعل ClearML دمج التعلم الآلي في أي منتج برمجيات أو أجهزة أمرًا سلسًا.
هذا التكامل يسهّل أكثر تدريب نموذج YOLOv5 واستخدام مدير تجارب ClearML لتتبعه تلقائيًا. يمكنك بسهولة تحديد معرف إصدار مجموعة بيانات ClearML كمدخل للبيانات، وسيتم استخدامه تلقائيًا لتدريب نموذجك.
ارتقِ بتتبع تجاربك إلى المستوى التالي#
- تتبع كل عملية تدريب لنموذج YOLOv5 في مدير التجارب.
- قم بضبط إصدارات بيانات التدريب المخصصة لديك والوصول إليها بسهولة باستخدام أداة إصدار البيانات المدمجة من ClearML.
- احصل على أفضل قيمة mAP ممكنة باستخدام تحسين المعاملات الفائقة (Hyperparameter Optimization) في ClearML.
- حوّل نموذج YOLOv5 الذي قمت بتدريبه حديثًا إلى API ببضعة أوامر فقط باستخدام ClearML Serving.
يعود الأمر إليك في عدد الأدوات التي ترغب في استخدامها، حيث يمكنك الاكتفاء بمدير التجارب، أو ربطها جميعًا معًا في خط سير عمل مثير للإعجاب.
إعداد الأمور#
لتتبع تجاربك وبياناتك، يحتاج ClearML إلى التواصل مع خادم. لديك خياران لذلك: إما التسجيل مجانًا في خدمة ClearML المستضافة أو إعداد خادمك الخاص، راجع وثائق نشر خادم ClearML.
حتى الخادم مفتوح المصدر، لذا إذا كنت تتعامل مع بيانات حساسة، فلا توجد مشكلة!
- قم بتثبيت حزمة Python الخاصة بـ clearml:
pip install clearml - قم بتوصيل ClearML SDK بالخادم عن طريق إنشاء بيانات الاعتماد (انتقل إلى أعلى اليمين إلى 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, الدقة (precision), الاستدعاء (recall), الخسائر (losses), معدلات التعلم، ...)
- معلومات عامة مثل تفاصيل الجهاز، وقت التشغيل، تاريخ الإنشاء، إلخ.
- جميع المخططات الناتجة مثل مخطط ارتباط التصنيفات ومصفوفة الارتباك
- صور مع صناديق محددة (bounding boxes) لكل دورة تدريبية
- فسيفساء الصور لكل دورة تدريبية
- صور التحقق لكل دورة تدريبية
ليس سيئًا! الآن، يمكننا تصور كل هذه المعلومات في واجهة 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 وجعل عميل بعيد (remote agent) يعمل عليه بدلاً من ذلك.
# 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هل لديك أي أسئلة؟ انضم إلى مجتمعنا واترك سؤالك اليوم!






