تكامل ClearML
حول ClearML
ClearML عبارة عن منصة MLOps مفتوحة المصدر مصممة لتبسيط سير عمل التعلم الآلي وتوفير وقتك ⏱️.
🔨 تتبع كل عملية تدريب لـ YOLOv5 في مدير التجارب.
🔧 قم بإصدار بيانات التدريب المخصصة الخاصة بك والوصول إليها بسهولة باستخدام أداة إصدار البيانات المدمجة في ClearML
🔦 تدريب ومراقبة عمليات تدريب YOLOv5 الخاصة بك عن بُعد باستخدام وكيل ClearML
🔬 احصل على أفضل قيمة لـ mAP باستخدام ClearML لتحسين المعلمات الفائقة.
🔭 حوّل نموذج YOLOv5 الذي تم تدريبه حديثًا إلى واجهة برمجة تطبيقات (API) ببضع أوامر فقط باستخدام ClearML Serving.
وأكثر من ذلك بكثير. الأمر متروك لك لتحديد عدد الأدوات التي تريد استخدامها، يمكنك الالتزام بمدير التجارب، أو ربطها كلها معًا في خط أنابيب مثير للإعجاب!
🦾 إعداد الأمور
لتتبع تجاربك و/أو بياناتك، يحتاج ClearML إلى التواصل مع خادم. لديك خياران للحصول على واحد:
إما الاشتراك مجانًا في خدمة ClearML المستضافة أو يمكنك إعداد خادم ClearML الخاص بك. حتى الخادم مفتوح المصدر، لذلك حتى إذا كنت تتعامل مع بيانات حساسة، فيجب أن تكون على ما يرام!
-
قم بتثبيت
clearml
حزمة python:pip install clearml
-
قم بتوصيل ClearML SDK بالخادم عن طريق إنشاء بيانات اعتماد (انتقل إلى أعلى اليمين إلى الإعدادات -> مساحة العمل -> إنشاء بيانات اعتماد جديدة)، ثم قم بتنفيذ الأمر أدناه واتبع التعليمات:
clearml-init
هذا كل شيء! لقد انتهيت 😎
🚀 تدريب YOLOv5 باستخدام ClearML
لتمكين تتبع تجارب ClearML، ما عليك سوى تثبيت حزمة ClearML pip.
pip install clearml
سيمكن ذلك من التكامل مع برنامج تدريب YOLOv5 النصي. سيتم الآن التقاط كل عملية تدريب وتخزينها بواسطة مدير التجارب ClearML.
إذا كنت ترغب في تغيير project_name
أو task_name
، استخدم الـ --project
و --name
arguments الخاصة بـ train.py
البرنامج النصي، افتراضيًا سيتم تسمية المشروع YOLOv5
والمهمة Training
. يرجى ملاحظة ما يلي: تستخدم ClearML /
كمحدد للمشاريع الفرعية، لذا كن حذرًا عند استخدام /
في اسم مشروعك!
python train.py --img 640 --batch 16 --epochs 3 --data coco8.yaml --weights yolov5s.pt --cache
أو مع اسم مشروع ومهمة مخصصين:
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
لحفظ نقطة تفتيش كل n حقبة) - إخراج وحدة التحكم
- الكميات العددية (mAP_0.5، mAP_0.5:0.95، الدقة، الاسترجاع، الخسائر، معدلات التعلم، ...)
- معلومات عامة مثل تفاصيل الجهاز ووقت التشغيل وتاريخ الإنشاء وما إلى ذلك.
- جميع المخططات المنتجة مثل مخطط الارتباط التسمي و مصفوفة الالتباس
- صور مع مربعات محيطة لكل epoch
- فسيفساء لكل حقبة
- صور التحقق لكل حقبة
هذا كثير، أليس كذلك؟ 🤯 الآن، يمكننا تصور كل هذه المعلومات في واجهة مستخدم 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 <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 Agent دوره. تحقق مما يمكن أن يفعله الوكيل هنا:
باختصار: يحتوي كل تجربة يتم تتبعها بواسطة مدير التجارب على معلومات كافية لإعادة إنتاجها على جهاز مختلف (الحزم المثبتة والتغييرات غير الملتزم بها وما إلى ذلك). لذا فإن وكيل ClearML يفعل ذلك تمامًا: فهو يستمع إلى قائمة انتظار للمهام الواردة وعندما يجد مهمة، فإنه يعيد إنشاء البيئة ويشغلها مع الاستمرار في الإبلاغ عن القيم العددية والمخططات وما إلى ذلك إلى مدير التجارب.
يمكنك تحويل أي جهاز (جهاز افتراضي سحابي، أو جهاز GPU محلي، أو الكمبيوتر المحمول الخاص بك...) إلى وكيل ClearML ببساطة عن طريق تشغيل:
clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--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
# ...
عند تشغيل برنامج التدريب النصي بعد هذا التغيير، سيقوم الـ python بتشغيل البرنامج النصي حتى ذلك السطر، وبعد ذلك سيقوم بتعبئة الكود وإرساله إلى قائمة الانتظار بدلاً من ذلك!
توسيع نطاق العاملين تلقائيًا
يأتي ClearML مزودًا بـ autoscalers أيضًا! ستعمل هذه الأداة تلقائيًا على تشغيل أجهزة بعيدة جديدة في السحابة التي تختارها (AWS، GCP، Azure) وتحويلها إلى وكلاء ClearML لك كلما تم اكتشاف تجارب في قائمة الانتظار. بمجرد معالجة المهام، سيقوم autoscaler بإيقاف تشغيل الأجهزة البعيدة تلقائيًا، وتتوقف عن الدفع!
شاهد فيديو البدء باستخدام أدوات التحجيم التلقائي أدناه.
اعرف المزيد
لمزيد من المعلومات حول دمج ClearML مع نماذج Ultralytics، تحقق من دليل تكامل ClearML واستكشف كيف يمكنك تحسين سير عمل MLOps الخاص بك باستخدام أدوات تتبع التجارب الأخرى.