درّب Ultralytics YOLOv5 وراقبه عن بُعد باستخدام ClearML
تعلّم كيفية تتبّع التجارب وإدارة إصدارات مجموعات البيانات وضبط المعلمات الفائقة وتدريب نماذج Ultralytics YOLOv5 على أجهزة بعيدة باستخدام ClearML.
Nuvola Ladi6 دقيقة قراءة
في Ultralytics، نعقد شراكات تجارية مع شركات ناشئة أخرى للمساعدة في تمويل البحث والتطوير لأدواتنا مفتوحة المصدر، مثل YOLOv5، وإتاحتها مجانًا للجميع. قد تتضمن هذه المقالة روابط تابعة لشركائنا.
ClearML هو أحدث شركائنا: مجموعة أدوات مفتوحة المصدر مصممة لتوفير وقتك.
تسعى ClearML إلى تسريع اعتماد التعلّم الآلي (ML)، وتجعل دمجه في أي منتج برمجي أو عتادي أمرًا سهلًا.
يجعل هذا التكامل تدريب نموذج YOLOv5 أبسط، ويتيح استخدام مدير تجارب ClearML لتعقّبه تلقائيًا. ويمكنك بسهولة تحديد معرّف إصدار مجموعة بيانات ClearML كمدخل للبيانات، وسيُستخدم تلقائيًا لتدريب نموذجك.
ارتقِ بتتبع تجاربك إلى مستوى جديد#
- تتبّع كل عملية تدريب لـ YOLOv5 في مدير التجارب.
- أنشئ إصدارات من بيانات التدريب المخصصة، وتمكّن من الوصول إليها بسهولة باستخدام أداة ClearML المدمجة لإصدار بيانات التدريب.
- احصل على أفضل قيمة ممكنة لـ mAP باستخدام تحسين المعلمات الفائقة في ClearML.
- حوّل نموذج YOLOv5 الذي درّبته حديثًا إلى API باستخدام بضعة أوامر فقط عبر ClearML Serving.
الأمر متروك لك لتحديد عدد هذه الأدوات التي تريد استخدامها: يمكنك الاكتفاء بمدير التجارب، أو ربطها جميعًا في مسار عمل متكامل ومتميز.
الإعداد#
لتعقّب تجاربك وبياناتك، يحتاج ClearML إلى التواصل مع خادم. ويتوفر لك خياران: إما التسجيل مجانًا في خدمة ClearML المستضافة، أو إعداد خادمك الخاص.
حتى الخادم مفتوح المصدر، لذا لن تكون البيانات الحساسة مشكلة!
- ثبّت حزمة ClearML الخاصة بـ Python:
pip install clearml - اربط ClearML SDK بالخادم من خلال إنشاء بيانات الاعتماد (انتقل إلى أعلى اليمين، ثم إلى Settings → Workspace → Create new credentials)، وبعد ذلك نفّذ الأمر أدناه واتبع التعليمات:
clearml-init
أصبحت الآن مستعدًا للبدء.
تدريب YOLOv5 باستخدام ClearML#
لتفعيل تعقّب التجارب في ClearML، ما عليك سوى تثبيت حزمة ClearML عبر pip.
pip install clearmlسيؤدي ذلك إلى تفعيل التكامل مع برنامج تدريب YOLOv5 النصي. ومن الآن فصاعدًا، سيسجل مدير التجارب ClearML كل عملية تدريب ويخزنها. وإذا أردت تغيير project_name أو task_name، فتوجه إلى مسجلنا المخصص لتغييره: utils/loggers/clearml/clearml_utils.py
python train.py --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cacheسيسجل ذلك ما يلي:
- الشيفرة المصدرية + التغييرات غير المودعة
- الحزم المثبّتة
- المَعلمات (الفائقة)
- ملفات النموذج (استخدم --save-period n لحفظ نقطة تحقق كل n حقب)
- مخرجات وحدة التحكم
- المقاييس العددية (mAP50، mAP50-95، الدقة، الاستدعاء، الخسائر، معدلات التعلّم، ...)
- معلومات عامة مثل تفاصيل الجهاز ووقت التشغيل وتاريخ الإنشاء وما إلى ذلك.
- جميع المخططات الناتجة، مثل مخطط ترابط التسميات ومصفوفة الالتباس
- صور تتضمن مربعات إحاطة لكل حقبة
- التركيب الفسيفسائي لكل حقبة
- صور التحقق لكل حقبة
يمكننا الآن عرض كل هذه المعلومات في واجهة ClearML للحصول على نظرة عامة على تقدّم التدريب. أضف أعمدة مخصّصة إلى عرض الجدول (مثل mAP50) لتتمكن من فرز النماذج بسهولة حسب الأفضل أداءً. أو حدّد تجارب متعددة وقارن بينها مباشرةً!
يمكننا الاستفادة من هذه المعلومات بطرق أكثر، مثل تحسين المعلمات الفائقة والتنفيذ عن بُعد، لذا تابع القراءة لمعرفة الطريقة!
إدارة إصدارات مجموعات البيانات#
يُعدّ إصدار بياناتك بشكل منفصل عن شيفرتك فكرة جيدة عمومًا، كما يسهّل الحصول على أحدث إصدار. يتيح هذا المستودع تحديد معرّف إصدار مجموعة البيانات، ويتولى جلب البيانات إن لم تكن موجودة بعد. وإضافة إلى ذلك، يحفظ سير العمل هذا معرّف مجموعة البيانات المستخدمة ضمن معلمات المهمة، لذا ستعرف دائمًا على وجه اليقين البيانات المستخدمة في كل تجربة!
إعداد مجموعة البيانات#
يدعم مستودع YOLOv5 عددًا من مجموعات البيانات المختلفة باستخدام ملفات YAML التي تتضمن معلوماتها. وتُنزل مجموعات البيانات افتراضيًا إلى المجلد ../datasets نسبةً إلى المجلد الجذر للمستودع. لذلك، إذا نزّلت مجموعة بيانات COCO128 باستخدام الرابط الوارد في ملف YAML أو النصوص البرمجية التي يوفرها YOLOv5، فستحصل على بنية المجلدات التالية:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txtلكن يمكن أن تكون هذه أي مجموعة بيانات تريدها. لا تتردد في استخدام مجموعة بياناتك، ما دمت تحافظ على بنية المجلدات هذه.
بعد ذلك، انسخ ملف YAML الموافق إلى جذر مجلد مجموعة البيانات. وتحتوي ملفات YAML هذه على المعلومات التي يحتاج إليها ClearML لاستخدام مجموعة البيانات على نحو صحيح. وبالطبع، يمكنك إنشاء الملف بنفسك أيضًا؛ ما عليك سوى اتباع بنية ملفات YAML النموذجية.
يجب أن يتضمن ملف 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 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:// --weights yolov5s.pt --cacheتحسين المعلمات الفائقة#
بعد أن أصبحت لدينا تجاربنا وإصدار البيانات، حان الوقت لمعرفة ما يمكننا إنشاؤه بالاستناد إليهما!
باستخدام معلومات الشيفرة والحزم المثبتة وتفاصيل البيئة، أصبح بالإمكان الآن إعادة إنتاج التجربة بالكامل. ويسمح ClearML في الواقع باستنساخ تجربة، بل وتغيير معلماتها أيضًا. ويمكننا بعد ذلك إعادة تشغيلها تلقائيًا بهذه المعلمات الجديدة، وهذا هو جوهر تحسين المعلمات الفائقة (HPO).
لتشغيل تحسين المعلمات الفائقة محليًا، أعددنا لك نصًا برمجيًا جاهزًا. ما عليك سوى التأكد من تشغيل مهمة تدريب مرة واحدة على الأقل وإضافتها إلى مدير تجارب ClearML؛ إذ يستنسخها النص البرمجي ويغيّر معلماتها الفائقة.
ستحتاج إلى إدخال معرّف المهمة النموذجية في النص البرمجي الموجود في 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التنفيذ عن بُعد (متقدم)#
إن تشغيل تحسين المعلمات الفائقة محليًا مفيد جدًا، لكن ماذا لو أردنا تشغيل تجاربنا على جهاز بعيد بدلًا من ذلك؟ ربما يمكنك استخدام جهاز GPU قوي جدًا في الموقع، أو لديك ميزانية للاستفادة من وحدات GPU السحابية. وهنا يأتي دور وكيل ClearML.
اطّلع هنا على إمكانات الوكيل:
باختصار: تتضمن كل تجربة يتتبعها مدير التجارب معلومات كافية لإعادة إنتاجها على جهاز آخر (الحزم المثبّتة والتغييرات غير المودعة وما إلى ذلك). وهذا بالضبط ما يفعله وكيل ClearML: يستمع إلى قائمة انتظار للمهام الواردة، وعندما يعثر على مهمة، يعيد إنشاء البيئة ويشغّلها، مع الاستمرار في إرسال المقاييس العددية والمخططات وما إلى ذلك إلى مدير التجارب.
يمكنك تحويل أي جهاز (آلة افتراضية سحابية، أو جهاز GPU محلي، أو حاسوبك المحمول) إلى وكيل ClearML بمجرد تشغيل:
clearml-agent daemon --queue QUEUES_TO_LISTEN_TO [--docker]الاستنساخ والتحرير والإضافة إلى قائمة الانتظار#
بعد تشغيل وكيلنا، يمكننا إسناد بعض المهام إليه. تذكّر من قسم تحسين المعلمات الفائقة أنه يمكننا استنساخ مهمة وتحرير معلماتها الفائقة. ويمكننا فعل ذلك من الواجهة أيضًا!
- استنسخ التجربة بالنقر بزر الفأرة الأيمن عليها.
- عدّل المعلمات الفائقة إلى القيم التي تريدها.
- أضف المهمة إلى أي من قوائم الانتظار بالنقر بزر الفأرة الأيمن عليها.
تنفيذ مهمة عن بُعد#
يمكنك الآن استنساخ مهمة كما أوضحنا أعلاه، أو ببساطة وضع علامة على النص البرمجي الحالي بإضافة task.execute_remotely()؛ وعند التنفيذ، ستُضاف المهمة إلى قائمة انتظار ليبدأ الوكيل العمل عليها!
لتشغيل نص تدريب YOLOv5 البرمجي عن بُعد، ما عليك سوى إضافة هذا السطر إلى النص البرمجي train.py بعد إنشاء مسجّل ClearML:
# ...
# Loggers
data_dict = None
if RANK in {-1, 0}:
loggers = Loggers(save_dir, weights, opt, hyp, LOGGER) # مثيل المسجّلات
if loggers.clearml:
loggers.clearml.task.execute_remotely(queue="my_queue") # <------ أضف هذا السطرهل لديك أي أسئلة؟ انضم إلى مجتمعنا واطرح سؤالك اليوم!
بقلم
التعليقات
اطرح سؤالًا، أو شارك نتائجك، أو ساعد شخصًا آخر.










