ClearML التكامل
نبذة عن ClearML
ClearML هو صندوق أدوات مفتوح المصدر مصمم لتوفير الوقت ⏱️.
🔨 تتبع كل عملية تدريب YOLOv5 في مدير التجربة
🔧 إصدار بيانات التدريب المخصصة الخاصة بك والوصول إليها بسهولة باستخدامأداة إصدار البيانات المدمجة ClearML
🔦 قم بتدريب ومراقبة عمليات التدريب عن بُعد YOLOv5 الخاصة بك عن بُعد باستخدام وكيل ClearML
🔬 احصل على أفضل mAP باستخدام ClearML تحسين المعلمات المفرطة
🔭 قم بتحويل نموذجYOLOv5 المدرّب حديثًا إلى واجهة برمجة تطبيقات باستخدام بعض الأوامر فقط باستخدام ClearML Serving
وغير ذلك الكثير. الأمر متروك لك فيما يتعلق بعدد هذه الأدوات التي تريد استخدامها، يمكنك الالتزام بمدير التجربة، أو ربطها جميعًا معًا في خط أنابيب مثير للإعجاب!
🦾 إعداد الأشياء
لتتبع تجاربك و/أو بياناتك، يحتاج ClearML إلى الاتصال بخادم. لديك خياران للحصول على واحد:
إما أن تشترك مجاناً في خدمةClearML المستضافة أو يمكنك إعداد خادمك الخاص، انظر هنا. حتى الخادم مفتوح المصدر، لذلك حتى لو كنت تتعامل مع بيانات حساسة، يجب أن تكون على ما يرام!
-
قم بتثبيت
clearml
python الحزمة: -
قم بتوصيل ClearML SDK بالخادم عن طريق إنشاء بيانات اعتماد (انتقل إلى أعلى اليمين إلى الإعدادات -> مساحة العمل -> إنشاء بيانات اعتماد جديدة)، ثم قم بتنفيذ الأمر أدناه واتبع التعليمات:
هذا كل شيء! لقد انتهيت 😎
🚀 التدريب YOLOv5 مع ClearML
لتمكين تتبع التجربة ClearML ، ما عليك سوى تثبيت الحزمة ClearML pip.
سيتيح ذلك التكامل مع البرنامج النصي للتدريب 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، الدقة، الاسترجاع، الخسائر، معدلات التعلم، ...)
- معلومات عامة مثل تفاصيل الجهاز ووقت التشغيل وتاريخ الإنشاء وما إلى ذلك.
- جميع المخططات المنتجة مثل مخطط ارتباط التسمية ومصفوفة الارتباك
- الصور ذات المربعات المحدودة لكل حقبة زمنية
- الفسيفساء لكل حقبة زمنية
- صور التحقق من الصحة لكل فترة زمنية
هذا كثير، أليس كذلك؟ 🤯 الآن، يمكننا الآن تصور كل هذه المعلومات في واجهة المستخدم ClearML UI للحصول على نظرة عامة على تقدم التدريب لدينا. أضف أعمدة مخصصة إلى طريقة عرض الجدول (مثل mAP_0.5) حتى تتمكن من الفرز بسهولة على النموذج الأفضل أداءً. أو حدد تجارب متعددة وقارن بينها مباشرةً!
هناك المزيد مما يمكننا القيام به مع كل هذه المعلومات، مثل تحسين المعلمة الفائقة والتنفيذ عن بُعد، لذا استمر في القراءة إذا كنت تريد أن ترى كيف يعمل ذلك!
🔗 إدارة إصدار مجموعة البيانات
يعد إصدار بياناتك بشكل منفصل عن شفرتك فكرة جيدة بشكل عام ويسهل الحصول على أحدث إصدار أيضًا. يدعم هذا المستودع توفير معرّف إصدار مجموعة البيانات، وسيحرص على الحصول على البيانات إذا لم تكن موجودة بعد. بالإضافة إلى ذلك، يقوم سير العمل هذا أيضًا بحفظ معرّف مجموعة البيانات المستخدمة كجزء من معلمات المهمة، لذلك ستعرف دائمًا على وجه اليقين البيانات التي تم استخدامها في أي تجربة!
إعداد مجموعة البيانات الخاصة بك
يدعم مستودع YOLOv5 عددًا من مجموعات البيانات المختلفة باستخدام ملفات YAML التي تحتوي على معلوماتها. يتم تنزيل مجموعات البيانات افتراضيًا إلى ../datasets
فيما يتعلق بالمجلد الجذر للمستودع. لذلك إذا قمت بتحميل coco128
مجموعة البيانات باستخدام الرابط الموجود في YAML أو باستخدام البرامج النصية التي يوفرها yolov5 ، ستحصل على بنية المجلد هذه:
لكن يمكن أن تكون هذه أي مجموعة بيانات ترغب بها. لا تتردد في استخدام البيانات الخاصة بك، طالما أنك تلتزم بهيكل المجلد هذا.
بعد ذلك،⚠️copy ملف YAML المقابل إلى جذر مجموعة البيانات folder⚠️.يحتوي ملف YAML هذا على المعلومات التي سيحتاجها ClearML لاستخدام مجموعة البيانات بشكل صحيح. يمكنك إنشاء هذا بنفسك أيضًا، بالطبع، فقط اتبع بنية ملفات YAML النموذجية.
نحتاج بشكل أساسي إلى المفاتيح التالية: 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 وكلاء لك كلما تم اكتشاف تجارب في قائمة الانتظار. بمجرد الانتهاء من معالجة المهام، سيقوم المقياس التلقائي بإيقاف تشغيل الأجهزة البعيدة تلقائيًا، وستتوقف عن الدفع!
شاهد فيديو بدء التشغيل التلقائي أدناه.