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

🦾 إعداد الأمور#
تحتاج ClearML إلى التواصل مع خادم لتتبع تجاربك وبياناتك. لديك خياران:
- سجل للحصول على خدمة ClearML المستضافة المجانية، أو
- قم بتوزيع خادم ClearML الخاص بك — فهو مفتوح المصدر، لذا يظل خيارًا قابلاً للتطبيق حتى بالنسبة للبيانات الحساسة.
ثم قم بتثبيت حزمة Python clearml وقم بتوصيل SDK بخادمك:
pip install clearmlقم بتوليد بيانات الاعتماد في الإعدادات ← مساحة العمل ← إنشاء بيانات اعتماد جديدة (الزاوية العليا اليمنى من واجهة ClearML)، ثم قم بتشغيل:
clearml-initاتبع التعليمات. هذا كل شيء - اكتمل الإعداد.
🚀 تدريب YOLOv5 باستخدام ClearML#
لتمكين تتبع التجارب، قم بتثبيت حزمة ClearML عبر pip إذا لم تقم بذلك بالفعل:
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يلتقط كل تشغيل ما يلي:
- الكود المصدري وأي تغييرات لم يتم الالتزام بها (uncommitted changes)
- الحزم المثبتة
- المعاملات التشعبية (Hyperparameters)
- نقاط تفتيش النموذج (استخدم
--save-period nلحفظ كلnمن العصور) - مخرجات وحدة التحكم
- القيم القياسية (mAP_0.5, mAP_0.5:0.95, الدقة، الاستدعاء، الخسائر، معدلات التعلم)
- تفاصيل الجهاز، وقت التشغيل، وتاريخ الإنشاء
- المخططات المولدة مثل مخطط الارتباط التخطيطي للتسميات ومصفوفة الارتباك
- الصور ذات مربعات التحديد لكل عصر
- تصورات الفسيفساء (Mosaic) لكل حقبة
- صور التحقق من الصحة لكل حقبة
يظهر كل شيء في واجهة 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👀 تحسين المعاملات التشعبية (Hyperparameter Optimization)#
مع وجود التجارب والبيانات ذات إصدار، يمكنك البناء فوقها. نظرًا لأن كل تجربة يتم تتبعها تلتقط البيئة الكاملة - الكود، الحزم المثبتة، والتكوين - فإن التشغيلات تكون قابلة لإعادة الإنتاج بالكامل. تتيح لك 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 ليلتقطها وكيل عن بُعد.

🤯 التنفيذ عن بُعد (متقدم)#
يعد تشغيل تحسين المعلمات الفائقة محليًا أمرًا مريحًا، ولكنك سترغب غالبًا في إجراء التجارب على أجهزة أكثر قوة — جهاز وحدة معالجة رسومية محلي أو مثيل سحابي. هذا هو دور وكيل ClearML:
تحتوي كل تجربة يتم تتبعها على كل ما يلزم لإعادة إنتاجها على جهاز آخر (الحزم المثبتة، التغييرات غير الملتزم بها، والتكوين). يستمع عامل ClearML إلى طابور، ويلتقط المهام الواردة، ويعيد إنشاء البيئة، ويشغل المهمة، ويبث القيم القياسية والمخططات عودةً إلى مدير التجارب.
حول أي جهاز - جهاز سحابي افتراضي (VM)، جهاز 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
# ...بعد هذا التغيير، يقوم تشغيل نص التدريب بالتنفيذ حتى ذلك السطر، ويحزم الكود، ويرسله إلى الطابور.
عمال القياس التلقائي (Autoscaling Workers)#
يأتي ClearML مع موسعات تلقائية تقوم بتشغيل الأجهزة عن بُعد في AWS أو GCP أو Azure عندما يكون لدى الطابور تجارب معلقة، وتحويلها إلى وكلاء ClearML، وإيقاف تشغيلها عند الانتهاء من العمل — بحيث تدفع فقط مقابل الحوسبة قيد التشغيل بالفعل.
شاهد فيديو البدء أدناه:
تعلم المزيد#
لمزيد من المعلومات حول دمج ClearML مع نماذج Ultralytics، تحقق من دليل تكامل ClearML الخاص بنا واستكشف كيف يمكنك تحسين سير عمل MLOps الخاص بك باستخدام أدوات تتبع التجارب الأخرى.