انتقل إلى المحتوى

ClearML تكامل

مسح | ملمسح | مل

عن ClearML

ClearML هو صندوق أدوات مفتوح المصدر مصمم لتوفير الوقت ⏱️.

🔨 تتبع كل YOLOv5 تشغيل التدريب في مدير التجربة

🔧 الإصدار والوصول بسهولة إلى بيانات التدريب المخصصة الخاصة بك مع دمج ClearML أداة تعيين إصدارات البيانات

🔦 تدريب ومراقبة عن بعدYOLOv5 يدير التدريب باستخدام ClearML عامل

🔬 احصل على أفضل mAP باستخدام ClearML تحسين المعلمات الفائقة

🔭 قم بتحويل مدربك حديثا YOLOv5 نموذج في واجهة برمجة التطبيقات مع عدد قليل من الأوامر باستخدام ClearML خدمه


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

ClearML لوحة القيادة العددية



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

لتتبع تجاربك و/أو بياناتك، ClearML يحتاج إلى الاتصال بالخادم. لديك 2 خيارات للحصول على واحد:

إما الاشتراك مجانا في ClearML الخدمة المستضافة أو يمكنك إعداد الخادم الخاص بك ، انظر هنا. حتى الخادم مفتوح المصدر ، لذلك حتى إذا كنت تتعامل مع بيانات حساسة ، يجب أن تكون على ما يرام!

  • قم بتثبيت الزر clearml python حزمة:

    pip install clearml
    
  • قم بتوصيل ClearML SDK إلى الخادم عن طريق إنشاء بيانات اعتماد (انتقل إلى الجزء العلوي الأيمن إلى الإعدادات -> Workspace -> إنشاء بيانات اعتماد جديدة) ، ثم قم بتنفيذ الأمر أدناه واتبع التعليمات:

    clearml-init
    

هذا هو! لقد انتهيت 😎


🚀 تدريب YOLOv5 مع ClearML

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

pip install clearml>=1.2.0

سيمكن هذا التكامل مع YOLOv5 نص التدريب. سيتم التقاط كل تدريب يتم تشغيله من الآن فصاعدا وتخزينه بواسطة ClearML مدير التجربة.

إذا كنت تريد تغيير project_name أو task_name، استخدم الزر --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 لحفظ نقطة تفتيش كل حقبة)
  • إخراج وحدة التحكم
  • الأعداد القياسية (mAP_0.5 ، mAP_0.5: 0.95 ، الدقة ، الاستدعاء ، الخسائر ، معدلات التعلم ، ...)
  • معلومات عامة مثل تفاصيل الجهاز ووقت التشغيل وتاريخ الإنشاء وما إلى ذلك.
  • جميع المؤامرات المنتجة مثل ملصق correlogram ومصفوفة الارتباك
  • الصور ذات المربعات المحيطة لكل حقبة
  • فسيفساء لكل حقبة
  • صور التحقق من الصحة لكل حقبة

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

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

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

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

ClearML واجهة مجموعة البيانات

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

ال YOLOv5 يدعم المستودع عددا من مجموعات البيانات المختلفة باستخدام ملفات YAML التي تحتوي على معلوماتها. بشكل افتراضي ، يتم تنزيل مجموعات البيانات إلى ../datasets فيما يتعلق بالمجلد الجذر للمستودع. لذلك إذا قمت بتنزيل ملف coco128 مجموعة البيانات باستخدام الارتباط الموجود في YAML أو مع البرامج النصية التي توفرها yolov5، تحصل على بنية المجلد هذه:

..
|_ yolov5
|_ datasets
    |_ coco128
        |_ images
        |_ labels
        |_ LICENSE
        |_ README.txt

ولكن هذا يمكن أن يكون أي مجموعة بيانات ترغب فيها. لا تتردد في استخدام الخاصة بك ، طالما أنك تحافظ على بنية المجلد هذه.

بعد ذلك ، ⚠️انسخ ملف YAML المقابل إلى جذر مجلد⚠️ مجموعة البيانات. هذا YAML الملفات يحتوي على المعلومات ClearML سوف تحتاج إلى استخدام مجموعة البيانات بشكل صحيح. يمكنك جعل هذا بنفسك أيضا ، بالطبع ، ما عليك سوى اتباع بنية مثال YAMLs.

نحتاج بشكل أساسي إلى المفاتيح التالية: 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 <parent_dataset_id> 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://<your_dataset_id> --weights yolov5s.pt --cache


👀 تحسين المعلمات الفائقة

الآن بعد أن تم إصدار تجاربنا وبياناتنا ، حان الوقت لإلقاء نظرة على ما يمكننا البناء عليه في الأعلى!

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

لتشغيل تحسين المعلمات الفائقة محليا ، قمنا بتضمين برنامج نصي معد مسبقا لك. فقط تأكد من تشغيل مهمة تدريب مرة واحدة على الأقل ، بحيث تكون فيClearML مدير التجربة ، سنقوم باستنساخه بشكل أساسي وتغيير معلماته الفائقة.

ستحتاج إلى ملء معرف هذا template task في البرنامج النصي الموجود في 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

هبو

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

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

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

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

clearml-agent daemon --queue <queues_to_listen_to> [--docker]

الاستنساخ والتحرير والانتظار

مع تشغيل وكيلنا ، يمكننا أن نعطيه بعض العمل. تذكر من قسم 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 يأتي مع أدوات التحجيم التلقائي أيضا! ستقوم هذه الأداة تلقائيا بتدوير الأجهزة البعيدة الجديدة في السحابة التي تختارها (AWS و GCP و Azure) وتحويلها إلى ClearML وكلاء لك كلما تم اكتشاف تجارب في قائمة الانتظار. بمجرد معالجة المهام ، سيقوم Autoscaler تلقائيا بإيقاف تشغيل الأجهزة البعيدة ، وتتوقف عن الدفع!

تحقق من فيديو بدء تشغيل autoscalers أدناه.

شاهد الفيديو



تم النشر في 2023-11-12, اخر تحديث 2024-04-18
المؤلفون: جلين جوشر (6) ، رضوان منور (1)

التعليقات