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

فريق Ultralytics

4 دقائق للقراءة

21 أكتوبر 2022

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

نحن في Ultralytics نتشارك تجاريًا مع شركات ناشئة أخرى لمساعدتنا في تمويل البحث والتطوير لأدواتنا الرائعة مفتوحة المصدر، مثل YOLOv5، لإبقائها مجانية للجميع. قد تحتوي هذه المقالة على روابط تابعة لهؤلاء الشركاء.

ClearML هو أحدث شركائنا: مجموعة أدوات مفتوحة المصدر مصممة لتوفير الوقت.

من خلال مهمة تسريع تبني تعلّم الآلة (ML)، تعمل ClearML على جعل تعلّم الآلة سلسًا للاندماج في أي منتج من البرامج والأجهزة الموجودة.

هذا التكامل يجعل من الأسهل تدريب نموذج YOLOv5 واستخدام مدير تجارب ClearML لتتبعه تلقائيًا. يمكنك بسهولة تحديد معرّف إصدار مجموعة بيانات ClearML كمُدخل للبيانات، وسيتم استخدامه تلقائيًا لتدريب نموذجك.

ارتقِ بتجربتك في تتبع التجارب إلى المستوى التالي

  • تتبع كل عملية تدريب YOLOv5 في مدير التجارب.
  • قم بإصدار بيانات التدريب المخصصة الخاصة بك والوصول إليها بسهولة باستخدام أداة إصدار بيانات ClearML المدمجة.
  • احصل على أفضل mAP باستخدام ClearML Hyperparameter Optimization.
  • حوِّل نموذج YOLOv5 المدرَّب حديثًا إلى واجهة برمجة تطبيقات باستخدام بضعة أوامر فقط باستخدام ClearML Serving.

الأمر متروك لك فيما يتعلق بعدد هذه الأدوات التي تريد استخدامها، يمكنك الالتزام بمدير التجربة، أو ربطها جميعًا معًا في خط أنابيب مثير للإعجاب.

إعداد الأشياء

لتتبع تجاربك وبياناتك، يحتاج ClearML إلى الاتصال بخادم. لديك خياران لهذا الأمر: إما أن تشترك مجانًا في خدمة ClearML Hosted Service أو أن تنشئ خادمك الخاص، انظر هنا.

حتى الخادم مفتوح المصدر، لذا إذا كنت تتعامل مع بيانات حساسة، فلا مشكلة في ذلك!

  1. تثبيت حزمة cleararml python: تثبيت clearml: pip install clearml
  2. قم بتوصيل ClearML SDK بالخادم من خلال إنشاء بيانات اعتماد (انتقل إلى أعلى اليمين إلى الإعدادات ← مساحة العمل ← إنشاء بيانات اعتماد جديدة)، ثم قم بتنفيذ الأمر أدناه واتبع التعليمات: clearml-init

وها نحن ذا! أنت جاهز للبدء...

تدريب YOLOv5 باستخدام ClearML

لتمكين تعقب تجربة ClearML، ما عليك سوى تثبيت حزمة ClearML pip.

تثبيت برنامج Clearml

سيتيح ذلك التكامل مع البرنامج النصي للتدريب YOLOv5. سيتم تسجيل كل عملية تدريب من الآن فصاعدًا وتخزينها بواسطة مدير تجارب ClearML. إذا كنت ترغب في تغيير اسم_المشروع أو اسم_المهمة، توجه إلى المسجل المخصص لدينا، حيث يمكنك تغييره: utils/loggers/clearml/clearml_utils.py

python train.py --img 640 -الدفعة 16 -الدفعة 16 -البؤر 3 -بيانات coco128.yaml --الأوزان yolov5s.pt -ذاكرة التخزين المؤقت

سيؤدي ذلك إلى التقاط:

  • الشفرة المصدرية + التغييرات غير الملتزم بها
  • الحزم المثبتة
  • (فرط) المعلمات
  • ملفات النماذج (استخدم - فترة الحفظ n لحفظ نقطة تفتيش كل عدد من الحقب الزمنية)
  • إخراج وحدة التحكم
  • النطاقات (mAP_0.5، mAP_0.5:0.95، الدقة، الاسترجاع، الخسائر، معدلات التعلم، ...)
  • معلومات عامة مثل تفاصيل الجهاز، ووقت التشغيل، وتاريخ الإنشاء، وما إلى ذلك.
  • جميع المخططات المنتجة مثل مخطط ارتباط التسمية ومصفوفة الارتباك
  • الصور ذات المربعات المحدودة لكل حقبة زمنية
  • فسيفساء لكل حقبة زمنية
  • صور التحقق من الصحة لكل فترة زمنية

ليس سيئاً للغاية! الآن، يمكننا الآن عرض كل هذه المعلومات في ClearML UI للحصول على نظرة عامة على تقدم التدريب لدينا. أضف أعمدة مخصصة إلى طريقة عرض الجدول (مثل mAP_0.5) حتى تتمكن من الفرز بسهولة على النموذج الأفضل أداءً. أو حدد تجارب متعددة وقارن بينها مباشرةً!

هناك المزيد مما يمكننا القيام به مع كل هذه المعلومات، مثل تحسين المعلمة الفائقة والتنفيذ عن بُعد، لذا تابع القراءة لتتعلم كيف!

إدارة إصدار مجموعة البيانات

يعد إصدار بياناتك بشكل منفصل عن شفرتك فكرة جيدة بشكل عام ويسهل الحصول على أحدث إصدار أيضًا. يدعم هذا المستودع توفير معرّف إصدار مجموعة البيانات، وسيحرص على الحصول على البيانات إذا لم تكن موجودة بعد. بالإضافة إلى ذلك، يقوم سير العمل هذا أيضًا بحفظ معرّف مجموعة البيانات المستخدمة كجزء من معلمات المهمة، لذلك ستعرف دائمًا على وجه اليقين البيانات التي تم استخدامها في أي تجربة!

البيانات، و Ultralytics YOLOv5 و ClearML

إعداد مجموعة البيانات الخاصة بك

يدعم مستودع 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 Dataset

والآن بعد أن أصبحت لديك مجموعة بيانات 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 و Ultralytics YOLOv5 و ClearML

التنفيذ عن بُعد (متقدم)

يعد تشغيل HPO محليًا مفيدًا حقًا، ولكن ماذا لو أردنا تشغيل تجاربنا على جهاز بعيد بدلاً من ذلك؟ ربما لديك إمكانية الوصول إلى جهاز وحدة معالجة رسومات قوية جدًا في الموقع، أو لديك بعض الميزانية لاستخدام وحدات معالجة الرسومات السحابية. هنا يأتي دور وكيل ClearML.

اطلع على ما يمكن للوكيل القيام به هنا:

باختصار: تحتوي كل تجربة يتم تعقبها من قبل مدير التجربة على معلومات كافية لإعادة إنتاجها على جهاز مختلف (الحزم المثبتة، والتغييرات غير الملتزم بها وما إلى ذلك). لذا فإن وكيل ClearML يفعل ذلك بالضبط: يستمع إلى قائمة انتظار للمهام الواردة وعندما يعثر على واحدة، يقوم بإعادة إنشاء البيئة وتشغيلها مع الاستمرار في إبلاغ مدير التجربة بالمقاييس والمخططات وما إلى ذلك.

يمكنك تحويل أي جهاز (جهاز افتراضي سحابي، أو جهاز وحدة معالجة رسومات محلية، أو حاسوبك المحمول الخاص بك) إلى وكيل ClearML بمجرد تشغيله:

البرنامج الخفي clearml-Aagent daemon --قائمة الانتظار [--رصيف]

الاستنساخ، والتحرير، والاستنساخ والتحرير والإعداد

مع تشغيل الوكيل، يمكننا أن نعطيه بعض العمل. هل تتذكر من قسم HPO أنه يمكننا استنساخ مهمة وتحرير المعلمات التشعبية؟ يمكننا القيام بذلك من الواجهة أيضًا!

🪄 استنساخ التجربة عن طريق النقر بزر الماوس الأيمن فوقها

🎯 تعديل المعلمات الفائقة إلى ما ترغب في أن تكون عليه

⏳ قم بإنزال المهمة إلى أي من قوائم الانتظار بالنقر بزر الماوس الأيمن فوقها

Enqueue و Ultralytics YOLOv5 و ClearML

تنفيذ مهمة عن بُعد

يمكنك الآن استنساخ مهمة كما شرحنا أعلاه، أو ببساطة وضع علامة على النص البرمجي الحالي بإضافة 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 لك كلما تم اكتشاف تجارب في قائمة الانتظار. بمجرد الانتهاء من معالجة المهام، ستقوم أداة التوسع التلقائي بإيقاف تشغيل الأجهزة البعيدة تلقائيًا، وستتوقف عن الدفع! شاهد فيديو بدء تشغيل أدوات القياس التلقائي أدناه.

هل لديك أي أسئلة؟ انضم إلى مجتمعنا واترك سؤالك اليوم!

دعونا نبني المستقبل
للذكاء الاصطناعي معاً!

ابدأ رحلتك مع مستقبل التعلم الآلي

ابدأ مجاناً
تم نسخ الرابط إلى الحافظة