تكامل ClearML
نبذة عن ClearML
ClearML هي منصة MLOps مفتوحة المصدر تم تصميمها لتبسيط مهام سير عمل تعلم الآلة وتوفير الوقت الهندسي.
- 🔨 تتبع كل عملية تدريب لنموذج YOLOv5 في مدير التجارب.
- 🔧 قم بإصدار بيانات التدريب المخصصة والوصول إليها باستخدام أداة إصدار البيانات المدمجة في ClearML.
- 🔦 قم بالتدريب والمراقبة عن بُعد لعمليات تشغيل YOLOv5 باستخدام ClearML Agent.
- 🔬 اعثر على أفضل قيمة لـ mAP من خلال تحسين المعاملات الفائقة في ClearML.
- 🔭 حوّل نموذج YOLOv5 المُدرب الخاص بك إلى API عبر بضعة أوامر باستخدام ClearML Serving.
استخدم ما تحتاجه من هذه الأدوات - ابدأ بمدير التجارب وحده، أو اربط كل شيء معًا في خط أنابيب كامل.

🦾 إعداد الأمور
تحتاج ClearML إلى التواصل مع خادم لتتبع تجاربك وبياناتك. لديك خياران:
- اشترك في خدمة ClearML المستضافة المجانية، أو
- قم بنشر خادم ClearML الخاص بك — فهو مفتوح المصدر، مما يجعله خيارًا قابلًا للتطبيق حتى للبيانات الحساسة.
ثم قم بتثبيت حزمة clearml بلغة Python وقم بتوصيل الـ SDK بخادمك:
pip install clearmlقم بإنشاء بيانات الاعتماد في الإعدادات ← مساحة العمل ← إنشاء بيانات اعتماد جديدة (أعلى يمين واجهة ClearML)، ثم قم بتشغيل:
clearml-initاتبع التعليمات. هذا كل شيء — اكتمل الإعداد.
🚀 تدريب YOLOv5 باستخدام ClearML
لتمكين تتبع التجارب، قم بتثبيت حزمة pip الخاصة بـ ClearML إذا لم تقم بذلك بالفعل:
pip install clearmlسيؤدي هذا إلى تمكين التكامل مع برنامج تدريب YOLOv5. سيتم تسجيل كل عملية تدريب من الآن فصاعدًا وتخزينها بواسطة مدير تجارب ClearML.
لتخصيص أسماء المشروع والمهمة، قم بتمرير --project و --name إلى 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, الدقة، الاستدعاء، الخسائر، معدلات التعلم)
- تفاصيل الجهاز، وقت التشغيل، وتاريخ الإنشاء
- الرسومات المولدة مثل مخطط ارتباط التسميات ومصفوفة الارتباك
- صور مع صناديق الإحاطة لكل دورة تدريبية
- تصورات الفسيفساء لكل دورة
- صور التحقق لكل دورة
يظهر كل شيء في واجهة ClearML حتى تتمكن من مراقبة التدريب في مكان واحد. أضف أعمدة مخصصة (على سبيل المثال، mAP_0.5) للفرز حسب النموذج الأفضل أداءً، أو حدد تجارب متعددة لمقارنتها جنبًا إلى جنب.
تابع القراءة لمعرفة المزيد عن تحسين المعاملات الفائقة والتنفيذ عن بُعد.
🔗 إدارة إصدارات مجموعة البيانات
إن إصدار البيانات بشكل منفصل عن الكود يجعل من السهل سحب أحدث إصدار ويضمن إمكانية إعادة الإنتاج الكاملة. يقبل هذا المستودع معرف إصدار مجموعة البيانات، ويجلب البيانات تلقائيًا في حالة فقدانها، ويسجل المعرف كمعامل مهمة حتى تعرف دائمًا أي البيانات تم استخدامها في أي تجربة.

إعداد مجموعة البيانات الخاصة بك
يدعم مستودع YOLOv5 العديد من مجموعات البيانات عبر ملفات تهيئة YAML. افتراضيًا، يتم تنزيل مجموعات البيانات إلى المجلد ../datasets بالنسبة لجذر المستودع. بعد تنزيل coco128، يبدو هيكل المجلد كالتالي:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtأي مجموعة بيانات تعمل، بشرط الحفاظ على هذا الهيكل.
بعد ذلك، انسخ ملف YAML الخاص بمجموعة البيانات إلى مجلد جذر مجموعة البيانات — تقرأ ClearML هذا الملف لاستخدام مجموعة البيانات بشكل صحيح. يمكنك كتابة ملف YAML الخاص بك باتباع نموذج التنسيق، مع التأكد من تحديد path و train و test و val و nc و names.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # <---- HERE
|_ LICENSE
|_ README.txtتحميل مجموعة البيانات الخاصة بك
لتسجيل مجموعة البيانات كمجموعة بيانات ClearML ذات إصدار، انتقل إلى مجلد الجذر الخاص بها وقم بتشغيل:
cd ../datasets/coco128
clearml-data sync --project YOLOv5 --name coco128 --folder .clearml-data sync هو اختصار للتسلسل التالي، والذي يمكنك أيضًا تشغيله بشكل صريح:
# Add --parent <parent_dataset_id> to base this version on a previous one.
# Duplicate files are not re-uploaded.
clearml-data create --name coco128 --project YOLOv5
clearml-data add --files .
clearml-data closeالتدريب على مجموعة بيانات ClearML
مع تسجيل مجموعة البيانات، قم بتوجيه التدريب إليها عبر المعرف:
python train.py --img 640 --batch 16 --epochs 3 --data clearml://YOUR_DATASET_ID --weights yolov5s.pt --cache👀 تحسين المعاملات الفائقة
مع إصدار التجارب والبيانات، يمكنك البناء فوقها. نظرًا لأن كل تجربة يتم تتبعها تلتقط البيئة الكاملة — الكود، والحزم المثبتة، والتهيئة — فإن عمليات التشغيل قابلة لإعادة الإنتاج بالكامل. تسمح لك ClearML باستنساخ تجربة، وتغيير معاملاتها، وإعادة تشغيلها تلقائيًا، وهو ما يمثل أساس تحسين المعاملات الفائقة (HPO).
لتشغيل HPO محليًا، استخدم البرنامج النصي المرفق. تأكد أولاً من وجود مهمة تدريب في مدير التجارب — حيث يقوم البرنامج النصي باستنساخها وتغيير معاملاتها الفائقة.
املأ معرف المهمة النموذجية في utils/loggers/clearml/hpo.py، ثم قم بتشغيل:
# Install Optuna or change the optimizer to RandomSearch.
pip install optuna
python utils/loggers/clearml/hpo.pyقم بتبديل task.execute_locally() إلى task.execute() لدفع المهمة إلى قائمة انتظار ClearML ليقوم عامل عن بُعد بالتقاطها.

🤯 التنفيذ عن بُعد (متقدم)
تشغيل HPO محليًا مريح، لكنك ستحتاج غالبًا إلى إجراء التجارب على أجهزة أكثر قوة — جهاز GPU محلي أو مثيل سحابي. هذا هو دور ClearML Agent:
تحتوي كل تجربة يتم تتبعها على كل ما يلزم لإعادة إنتاجها على جهاز آخر (الحزم المثبتة، التغييرات غير الملتزم بها، والتهيئة). يستمع وكيل ClearML إلى قائمة انتظار، ويلتقط المهام الواردة، ويعيد إنشاء البيئة، ويشغل المهمة، ويبث القيم القياسية والرسوم البيانية إلى مدير التجارب.
حوّل أي جهاز — جهاز افتراضي سحابي، أو جهاز GPU محلي، أو كمبيوتر محمول — إلى وكيل ClearML باستخدام:
clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]الاستنساخ، التحرير، ووضع المهام في قائمة الانتظار
مع تشغيل وكيل، يمكنك تعيين العمل له مباشرة من الواجهة:
- 🪄 انقر بزر الماوس الأيمن على تجربة واستنسخها.
- 🎯 قم بتحرير معاملاتها الفائقة.
- ⏳ انقر بزر الماوس الأيمن على المهمة المستنسخة وأضفها إلى قائمة انتظار مستهدفة.

تنفيذ مهمة عن بُعد
يمكنك أيضًا وضع علامة على برنامج نصي قيد التشغيل للتنفيذ عن بُعد برمجياً عن طريق إضافة task.execute_remotely() بعد تهيئة مسجل ClearML. أضف السطر المميز إلى train.py:
# ...
# 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 None unless the user selected a ClearML dataset, in which case ClearML fills it in.
data_dict = loggers.clearml.data_dict
# ...بعد هذا التغيير، يقوم تشغيل برنامج التدريب النصي بالتنفيذ حتى ذلك السطر، ويحزم الكود، ويرسله إلى قائمة الانتظار.
عمال القياس التلقائي
تأتي ClearML مزودة بـ أدوات قياس تلقائي التي تقوم بتشغيل أجهزة عن بُعد في AWS أو GCP أو Azure عندما يكون هناك تجارب معلقة في قائمة الانتظار، وتحويلها إلى وكلاء ClearML، وإيقاف تشغيلها عند انتهاء العمل — لذا فأنت تدفع فقط مقابل الحوسبة التي يتم تشغيلها فعليًا.
شاهد فيديو البدء أدناه:
تعلم المزيد
لمزيد من المعلومات حول دمج ClearML مع نماذج Ultralytics، تحقق من دليل تكامل ClearML الخاص بنا واستكشف كيف يمكنك تحسين سير عمل MLOps الخاص بك باستخدام أدوات تتبع التجارب الأخرى.