ClearML تكامل
عن ClearML
ClearML هو صندوق أدوات مفتوح المصدر مصمم لتوفير الوقت ⏱️.
🔨 تتبع كل YOLOv5 تشغيل التدريب في مدير التجربة
🔧 Version and easily access your custom training data with the integrated ClearML Data Versioning Tool
🔦 تدريب ومراقبة عن بعدYOLOv5 يدير التدريب باستخدام ClearML عامل
🔬 احصل على أفضل mAP باستخدام ClearML تحسين المعلمات الفائقة
🔭 قم بتحويل مدربك حديثا YOLOv5 نموذج في واجهة برمجة التطبيقات مع عدد قليل من الأوامر باستخدام ClearML خدمه
وأكثر من ذلك بكثير. الأمر متروك لك كم من هذه الأدوات التي تريد استخدامها ، يمكنك التمسك بمدير التجربة ، أو ربطها جميعا معا في خط أنابيب مثير للإعجاب!
🦾 إعداد الأشياء
لتتبع تجاربك و/أو بياناتك، ClearML يحتاج إلى الاتصال بالخادم. لديك 2 خيارات للحصول على واحد:
إما الاشتراك مجانا في ClearML الخدمة المستضافة أو يمكنك إعداد الخادم الخاص بك ، انظر هنا. حتى الخادم مفتوح المصدر ، لذلك حتى إذا كنت تتعامل مع بيانات حساسة ، يجب أن تكون على ما يرام!
قم بتثبيت الزر
clearml
python حزمة:قم بتوصيل ClearML SDK إلى الخادم عن طريق إنشاء بيانات اعتماد (انتقل إلى الجزء العلوي الأيمن إلى الإعدادات -> Workspace -> إنشاء بيانات اعتماد جديدة) ، ثم قم بتنفيذ الأمر أدناه واتبع التعليمات:
هذا هو! لقد انتهيت 😎
🚀 تدريب YOLOv5 مع ClearML
لتمكين ClearML تتبع التجربة ، ما عليك سوى تثبيت ملف ClearML حزمة النقطة.
سيمكن هذا التكامل مع YOLOv5 نص التدريب. سيتم التقاط كل تدريب يتم تشغيله من الآن فصاعدا وتخزينه بواسطة ClearML مدير التجربة.
إذا كنت تريد تغيير project_name
أو task_name
، استخدم الزر --project
و --name
حجج train.py
البرنامج النصي ، بشكل افتراضي سيتم استدعاء المشروع YOLOv5
والمهمة Training
. يرجى الملاحظة: ClearML يستخدم /
كمحدد للمشاريع الفرعية ، لذا كن حذرا عند استخدام /
في اسم مشروعك!
أو مع اسم المشروع والمهمة المخصصين:
python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache
هذا سوف يلتقط:
- شفرة المصدر + التغييرات غير الملتزم بها
- الحزم المثبتة
- المعلمات (المفرطة)
- ملفات النموذج (استخدم
--save-period n
لحفظ نقطة تفتيش كل حقبة) - إخراج وحدة التحكم
- الأعداد القياسية (mAP_0.5 ، mAP_0.5: 0.95 ، الدقة ، الاستدعاء ، الخسائر ، معدلات التعلم ، ...)
- معلومات عامة مثل تفاصيل الجهاز ووقت التشغيل وتاريخ الإنشاء وما إلى ذلك.
- All produced plots such as label correlogram and confusion matrix
- Images with bounding boxes per epoch
- فسيفساء لكل حقبة
- صور التحقق من الصحة لكل حقبة
هذا كثير أليس كذلك؟ 🤯 والآن، يمكننا تمثيل كل هذه المعلومات في ClearML واجهة المستخدم للحصول على نظرة عامة على تقدمنا التدريبي. أضف أعمدة مخصصة إلى عرض الجدول (على سبيل المثال mAP_0.5) حتى تتمكن من الفرز بسهولة على النموذج الأفضل أداء. أو حدد تجارب متعددة وقارنها مباشرة!
هناك المزيد الذي يمكننا القيام به مع كل هذه المعلومات ، مثل تحسين المعلمات الفائقة والتنفيذ عن بعد ، لذا استمر في القراءة إذا كنت تريد أن ترى كيف يعمل ذلك!
🔗 إدارة إصدار مجموعة البيانات
يعد تعيين إصدارات بياناتك بشكل منفصل عن التعليمات البرمجية فكرة جيدة بشكل عام ويجعل من السهل الحصول على أحدث إصدار أيضا. يدعم هذا المستودع توفير معرف إصدار مجموعة البيانات ، وسيتأكد من الحصول على البيانات إذا لم تكن موجودة بعد. بجانب ذلك ، يحفظ سير العمل هذا أيضا معرف مجموعة البيانات المستخدم كجزء من معلمات المهمة ، لذلك ستعرف دائما على وجه اليقين البيانات التي تم استخدامها في أي تجربة!
إعداد مجموعة البيانات الخاصة بك
ال YOLOv5 يدعم المستودع عددا من مجموعات البيانات المختلفة باستخدام ملفات YAML التي تحتوي على معلوماتها. بشكل افتراضي ، يتم تنزيل مجموعات البيانات إلى ../datasets
فيما يتعلق بالمجلد الجذر للمستودع. لذلك إذا قمت بتنزيل ملف coco128
مجموعة البيانات باستخدام الارتباط الموجود في YAML أو مع البرامج النصية التي توفرها yolov5، تحصل على بنية المجلد هذه:
ولكن هذا يمكن أن يكون أي مجموعة بيانات ترغب فيها. لا تتردد في استخدام الخاصة بك ، طالما أنك تحافظ على بنية المجلد هذه.
بعد ذلك ، ⚠️انسخ ملف YAML المقابل إلى جذر مجلد⚠️ مجموعة البيانات. هذا YAML الملفات يحتوي على المعلومات ClearML سوف تحتاج إلى استخدام مجموعة البيانات بشكل صحيح. يمكنك جعل هذا بنفسك أيضا ، بالطبع ، ما عليك سوى اتباع بنية مثال YAMLs.
نحتاج بشكل أساسي إلى المفاتيح التالية: path
, train
, test
, val
, nc
, names
.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # <---- HERE!
|_ LICENSE
|_ README.txt
تحميل مجموعة البيانات الخاصة بك
للحصول على مجموعة البيانات هذه في ClearML كمجموعة بيانات تم إصدارها، انتقل إلى المجلد الجذر لمجموعة البيانات وقم بتشغيل الأمر التالي:
الأمر clearml-data sync
هو في الواقع أمر مختصر. يمكنك أيضا تشغيل هذه الأوامر واحدا تلو الآخر:
# Optionally add --parent <parent_dataset_id> 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://<your_dataset_id> --weights yolov5s.pt --cache
👀 تحسين المعلمات الفائقة
الآن بعد أن تم إصدار تجاربنا وبياناتنا ، حان الوقت لإلقاء نظرة على ما يمكننا البناء عليه في الأعلى!
باستخدام معلومات التعليمات البرمجية والحزم المثبتة وتفاصيل البيئة ، أصبحت التجربة نفسها الآن قابلة للتكرار تماما. في الحقيقة 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.py
🤯 التنفيذ عن بعد (متقدم)
يعد تشغيل HPO محليًا مفيدًا حقًا، ولكن ماذا لو أردنا تشغيل تجاربنا على جهاز بعيد بدلاً من ذلك؟ ربما لديك إمكانية الوصول إلى جهاز قوي جدًا GPU في الموقع، أو لديك بعض الميزانية لاستخدام وحدات معالجة الرسومات السحابية. هنا يأتي دور الوكيل ClearML . تحقق مما يمكن للوكيل القيام به هنا:
باختصار: تحتوي كل تجربة يتتبعها مدير التجربة على معلومات كافية لإعادة إنتاجها على جهاز مختلف (الحزم المثبتة والتغييرات غير الملتزم بها وما إلى ذلك). لذلك أ ClearML يقوم الوكيل بذلك بالضبط: فهو يستمع إلى قائمة انتظار للمهام الواردة وعندما يعثر على واحدة ، فإنه يعيد إنشاء البيئة ويشغلها مع الاستمرار في الإبلاغ عن الأعداد القياسية والمخططات وما إلى ذلك إلى مدير التجربة.
يمكنك تحويل أي جهاز (جهاز سحابي افتراضي، أو جهاز محلي GPU ، أو حاسوبك المحمول الخاص ... ) إلى وكيل ClearML بمجرد تشغيله:
الاستنساخ والتحرير والانتظار
مع تشغيل وكيلنا ، يمكننا أن نعطيه بعض العمل. تذكر من قسم 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
# ...
عند تشغيل البرنامج النصي للتدريب بعد هذا التغيير ، python سيتم تشغيل البرنامج النصي حتى هذا السطر ، وبعد ذلك سيقوم بحزم الرمز وإرساله إلى قائمة الانتظار بدلا من ذلك!
عمال التحجيم التلقائي
ClearML يأتي مع أدوات التحجيم التلقائي أيضا! ستقوم هذه الأداة تلقائيا بتدوير الأجهزة البعيدة الجديدة في السحابة التي تختارها (AWS و GCP و Azure) وتحويلها إلى ClearML وكلاء لك كلما تم اكتشاف تجارب في قائمة الانتظار. بمجرد معالجة المهام ، سيقوم Autoscaler تلقائيا بإيقاف تشغيل الأجهزة البعيدة ، وتتوقف عن الدفع!
تحقق من فيديو بدء تشغيل autoscalers أدناه.