تكامل ClearML#
نبذة عن ClearML#
ClearML هي منصة مفتوحة المصدر لعمليات تعلّم الآلة، صُممت لتبسيط سير عمل تعلّم الآلة وتوفير وقت الهندسة.
- 🔨 تتبّع كل عملية تدريب لـ YOLOv5 في مدير التجارب.
- 🔧 أنشئ إصدارات من بيانات التدريب المخصّصة لك واطّلع عليها باستخدام أداة إصدار البيانات المدمجة في ClearML.
- 🔦 درّب عمليات YOLOv5 وراقبها عن بُعد باستخدام ClearML Agent.
- 🔬 اعثر على أفضل mAP باستخدام تحسين المعلمات الفائقة في ClearML.
- 🔭 حوّل نموذج YOLOv5 المدرّب إلى API باستخدام بضعة أوامر عبر ClearML Serving.
استخدم ما تحتاج إليه من هذه الأدوات، سواءً أداة واحدة أو جميعها — ابدأ بمدير التجارب وحده، أو اربطها كلها معًا في خط أنابيب متكامل.
🦾 إعداد المكوّنات#
يحتاج ClearML إلى الاتصال بخادم لتتبّع تجاربك وبياناتك. لديك خياران:
- سجّل للحصول على خدمة ClearML المستضافة المجانية، أو
- انشر خادم ClearML الخاص بك — فهو مفتوح المصدر، ولذلك يظل خيارًا مناسبًا حتى للبيانات الحساسة.
بعد ذلك، ثبّت حزمة clearml Python، وصِل SDK بخادمك:
pip install clearmlأنشئ بيانات الاعتماد من Settings → Workspace → Create new credentials (في أعلى يمين واجهة 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تلتقط كل عملية تشغيل ما يلي:
- التعليمات البرمجية المصدرية والتغييرات غير الملتزم بها
- الحزم المثبّتة
- المعلمات الفائقة
- نقاط حفظ النموذج (استخدم
--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 باستخدام أدوات أخرى لتتبّع التجارب.
