تدريب Ultralytics YOLOv5 ومراقبته عن بُعد باستخدام ClearML

21 أكتوبر 2022
تعرّف على شراكتنا مع ClearML للحصول على تجربة Ultralytics YOLOv5 المحسّنة مع تكامل سلس مع تعلّم الآلة وتتبع التجارب والمزيد.

21 أكتوبر 2022
تعرّف على شراكتنا مع ClearML للحصول على تجربة Ultralytics YOLOv5 المحسّنة مع تكامل سلس مع تعلّم الآلة وتتبع التجارب والمزيد.
نحن في Ultralytics نتشارك تجاريًا مع شركات ناشئة أخرى لمساعدتنا في تمويل البحث والتطوير لأدواتنا الرائعة مفتوحة المصدر، مثل YOLOv5، لإبقائها مجانية للجميع. قد تحتوي هذه المقالة على روابط تابعة لهؤلاء الشركاء.
ClearML هو أحدث شركائنا: مجموعة أدوات مفتوحة المصدر مصممة لتوفير الوقت.
من خلال مهمة تسريع تبني تعلّم الآلة (ML)، تعمل ClearML على جعل تعلّم الآلة سلسًا للاندماج في أي منتج من البرامج والأجهزة الموجودة.
هذا التكامل يجعل من الأسهل تدريب نموذج YOLOv5 واستخدام مدير تجارب ClearML لتتبعه تلقائيًا. يمكنك بسهولة تحديد معرّف إصدار مجموعة بيانات ClearML كمُدخل للبيانات، وسيتم استخدامه تلقائيًا لتدريب نموذجك.
الأمر متروك لك فيما يتعلق بعدد هذه الأدوات التي تريد استخدامها، يمكنك الالتزام بمدير التجربة، أو ربطها جميعًا معًا في خط أنابيب مثير للإعجاب.
لتتبع تجاربك وبياناتك، يحتاج ClearML إلى الاتصال بخادم. لديك خياران لهذا الأمر: إما أن تشترك مجانًا في خدمة ClearML Hosted Service أو أن تنشئ خادمك الخاص، انظر هنا.
حتى الخادم مفتوح المصدر، لذا إذا كنت تتعامل مع بيانات حساسة، فلا مشكلة في ذلك!
وها نحن ذا! أنت جاهز للبدء...
لتمكين تعقب تجربة ClearML، ما عليك سوى تثبيت حزمة ClearML pip.
تثبيت برنامج Clearml
سيتيح ذلك التكامل مع البرنامج النصي للتدريب YOLOv5. سيتم تسجيل كل عملية تدريب من الآن فصاعدًا وتخزينها بواسطة مدير تجارب ClearML. إذا كنت ترغب في تغيير اسم_المشروع أو اسم_المهمة، توجه إلى المسجل المخصص لدينا، حيث يمكنك تغييره: utils/loggers/clearml/clearml_utils.py
python train.py --img 640 -الدفعة 16 -الدفعة 16 -البؤر 3 -بيانات coco128.yaml --الأوزان yolov5s.pt -ذاكرة التخزين المؤقت
سيؤدي ذلك إلى التقاط:
ليس سيئاً للغاية! الآن، يمكننا الآن عرض كل هذه المعلومات في ClearML UI للحصول على نظرة عامة على تقدم التدريب لدينا. أضف أعمدة مخصصة إلى طريقة عرض الجدول (مثل mAP_0.5) حتى تتمكن من الفرز بسهولة على النموذج الأفضل أداءً. أو حدد تجارب متعددة وقارن بينها مباشرةً!
هناك المزيد مما يمكننا القيام به مع كل هذه المعلومات، مثل تحسين المعلمة الفائقة والتنفيذ عن بُعد، لذا تابع القراءة لتتعلم كيف!
يعد إصدار بياناتك بشكل منفصل عن شفرتك فكرة جيدة بشكل عام ويسهل الحصول على أحدث إصدار أيضًا. يدعم هذا المستودع توفير معرّف إصدار مجموعة البيانات، وسيحرص على الحصول على البيانات إذا لم تكن موجودة بعد. بالإضافة إلى ذلك، يقوم سير العمل هذا أيضًا بحفظ معرّف مجموعة البيانات المستخدمة كجزء من معلمات المهمة، لذلك ستعرف دائمًا على وجه اليقين البيانات التي تم استخدامها في أي تجربة!
يدعم مستودع YOLOv5 عددًا من مجموعات البيانات المختلفة باستخدام ملفات YAML التي تحتوي على معلوماتها. بشكل افتراضي، يتم تنزيل مجموعات البيانات إلى مجلد ../datasetsets بالنسبة لمجلد جذر المستودع. لذلك إذا قمت بتنزيل مجموعة بيانات coco128 باستخدام الرابط الموجود في YAML أو باستخدام البرامج النصية التي يوفرها yolov5، فستحصل على بنية المجلد هذه:
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ LICENSE
|_ README.txt
لكن يمكن أن تكون هذه أي مجموعة بيانات ترغب بها. لا تتردد في استخدام البيانات الخاصة بك، طالما أنك تلتزم بهيكل المجلد هذا.
بعد ذلك، ⚠️copy ملف YAML المقابل إلى جذر مجموعة البيانات folder⚠️. تحتوي ملفات YAML هذه على المعلومات التي سيحتاجها ClearML لاستخدام مجموعة البيانات بشكل صحيح. يمكنك إنشاء هذا بنفسك أيضًا، بالطبع، فقط اتبع بنية أمثلة YAMLs.
في الأساس، نحتاج إلى المفاتيح التالية: المسار، والتدريب، والاختبار، والفال، و nc، والأسماء.
..
|_ yolov5
|_ datasets
|_ coco128
|_ images
|_ labels
|_ coco128.yaml # ← HERE!
|_ LICENSE
||| README.txt
لإدخال مجموعة البيانات هذه إلى ClearML كمجموعة بيانات ذات إصدار، انتقل إلى المجلد الجذر لمجموعة البيانات وشغّل الأمر التالي:
cd coco128
مزامنة بيانات clearml-data - مشروع YOLOv5 - الاسم coco128 - المجلد .
الأمر clearml-data sync هو في الواقع أمر مختصر. يمكنك أيضًا تشغيل هذه الأوامر واحدًا تلو الآخر:
# أضف - الوالد اختياريًا إذا كنت تريد أن يكون الأساس
# هذا الإصدار على إصدار مجموعة بيانات أخرى، حتى لا يتم تحميل ملفات مكررة!
clearml-data create --الاسم coco128 - مشروع YOLOv5/p>
cleararml-data add --files .
إغلاق بيانات واضحة
والآن بعد أن أصبحت لديك مجموعة بيانات ClearML، يمكنك ببساطة شديدة استخدامها لتدريب نماذج YOLOv5 المخصصة.
python train.py --img 640 -الدفعة 16 -الدفعة 16 -البؤر الزمنية 3 -بيانات clearml:// -الأوزان yolov5s.pt -ذاكرة التخزين المؤقت
والآن بعد أن أصبح لدينا تجاربنا ونسخة البيانات، حان الوقت لإلقاء نظرة على ما يمكننا البناء عليه!
باستخدام معلومات التعليمات البرمجية والحزم المثبتة وتفاصيل البيئة، أصبحت التجربة نفسها الآن قابلة للاستنساخ تمامًا. في الواقع، يتيح لك ClearML استنساخ تجربة ما وحتى تغيير معلماتها. يمكننا بعد ذلك إعادة تشغيلها بهذه المعلمات الجديدة تلقائيًا، وهذا ما يفعله HPO بشكل أساسي!
لتشغيل تحسين البارامتر التشعبي محليًا، قمنا بتضمين برنامج نصي مُعد مسبقًا من أجلك. فقط تأكد من تشغيل مهمة التدريب مرة واحدة على الأقل، بحيث تكون في مدير تجارب ClearML، وسنقوم باستنساخها بشكل أساسي وتغيير المعلمات التشعبية الخاصة بها.
ستحتاج إلى ملء معرف مهمة هذا القالب في النص البرمجي الموجود في utils/loggers/clearml/hpo.py ثم تشغيله. يمكنك تغيير task.execute_locally() إلى task.execute() لوضعها في قائمة انتظار ClearML وجعل وكيل بعيد يعمل عليها بدلاً من ذلك.
# لاستخدام optuna، قم بتثبيته أولاً، وإلا يمكنك تغيير المُحسِّن ليكون RandomSearch فقط قم بتثبيت optuna python utils/loggers/clearml/hpo.py
يعد تشغيل HPO محليًا مفيدًا حقًا، ولكن ماذا لو أردنا تشغيل تجاربنا على جهاز بعيد بدلاً من ذلك؟ ربما لديك إمكانية الوصول إلى جهاز وحدة معالجة رسومات قوية جدًا في الموقع، أو لديك بعض الميزانية لاستخدام وحدات معالجة الرسومات السحابية. هنا يأتي دور وكيل ClearML.
اطلع على ما يمكن للوكيل القيام به هنا:
باختصار: تحتوي كل تجربة يتم تعقبها من قبل مدير التجربة على معلومات كافية لإعادة إنتاجها على جهاز مختلف (الحزم المثبتة، والتغييرات غير الملتزم بها وما إلى ذلك). لذا فإن وكيل ClearML يفعل ذلك بالضبط: يستمع إلى قائمة انتظار للمهام الواردة وعندما يعثر على واحدة، يقوم بإعادة إنشاء البيئة وتشغيلها مع الاستمرار في إبلاغ مدير التجربة بالمقاييس والمخططات وما إلى ذلك.
يمكنك تحويل أي جهاز (جهاز افتراضي سحابي، أو جهاز وحدة معالجة رسومات محلية، أو حاسوبك المحمول الخاص بك) إلى وكيل ClearML بمجرد تشغيله:
البرنامج الخفي clearml-Aagent daemon --قائمة الانتظار [--رصيف]
مع تشغيل الوكيل، يمكننا أن نعطيه بعض العمل. هل تتذكر من قسم 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 مزودًا بأداة ClearML التلقائية أيضًا! ستعمل هذه الأداة تلقائيًا على تشغيل أجهزة بعيدة جديدة تلقائيًا في السحابة التي تختارها (AWS، GCP، Azure) وتحويلها إلى وكلاء ClearML لك كلما تم اكتشاف تجارب في قائمة الانتظار. بمجرد الانتهاء من معالجة المهام، ستقوم أداة التوسع التلقائي بإيقاف تشغيل الأجهزة البعيدة تلقائيًا، وستتوقف عن الدفع! شاهد فيديو بدء تشغيل أدوات القياس التلقائي أدناه.
هل لديك أي أسئلة؟ انضم إلى مجتمعنا واترك سؤالك اليوم!