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

اكتشف شراكتنا مع ClearML للحصول على تجربة Ultralytics YOLOv5 محسنة مع تكامل ML سلس وتتبع التجارب والمزيد.
في Ultralytics، نتشارك تجاريًا مع شركات ناشئة أخرى لمساعدتنا في تمويل البحث والتطوير لأدواتنا الرائعة مفتوحة المصدر، مثل YOLOv5، لإبقائها مجانية للجميع. قد تحتوي هذه المقالة على روابط تابعة لهؤلاء الشركاء.
ClearML هو أحدث شركائنا: صندوق أدوات مفتوح المصدر مصمم لتوفير وقتك.
تهدف ClearML، برسالتها المتمثلة في تسريع تبني تعلم الآلة (ML)، إلى جعل دمج تعلم الآلة سلسًا في أي منتج برمجي أو جهاز.
هذا التكامل يجعل من السهل تدريب نموذج YOLOv5 واستخدام مدير تجارب ClearML لتتبعه تلقائيًا. يمكنك بسهولة تحديد معرف إصدار مجموعة بيانات ClearML كمدخل للبيانات، وسيتم استخدامه تلقائيًا لتدريب النموذج الخاص بك.
الأمر متروك لك لتحديد عدد الأدوات التي ترغب في استخدامها، يمكنك الالتزام بمدير التجارب، أو ربطها جميعًا في مسار مثير للإعجاب.
لتتبع تجاربك وبياناتك، تحتاج ClearML إلى التواصل مع خادم. لديك خياران لذلك: إما الاشتراك مجانًا في خدمة 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
سيؤدي هذا إلى التقاط:
ليس سيئًا للغاية! الآن، يمكننا تصور كل هذه المعلومات في واجهة مستخدم ClearML للحصول على نظرة عامة على تقدم التدريب لدينا. أضف أعمدة مخصصة إلى عرض الجدول (مثل mAP_0.5) حتى تتمكن من الفرز بسهولة على أفضل نموذج أداءً. أو حدد تجارب متعددة وقارنها مباشرة!
هناك المزيد مما يمكننا فعله بكل هذه المعلومات، مثل تحسين المعلمات الفائقة والتنفيذ عن بعد، لذا استمر في القراءة لمعرفة كيف!
يعد إصدار بياناتك بشكل منفصل عن التعليمات البرمجية الخاصة بك فكرة جيدة بشكل عام ويسهل الحصول على أحدث إصدار أيضًا. يدعم هذا المستودع توفير معرف إصدار مجموعة البيانات، وسوف يحرص على الحصول على البيانات إذا لم تكن موجودة بعد. وإلى جانب ذلك، يحفظ سير العمل هذا أيضًا معرف مجموعة البيانات المستخدم كجزء من معلمات المهمة، لذلك ستعرف دائمًا على وجه اليقين البيانات التي تم استخدامها في أي تجربة!
يدعم مستودع 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 هو في الواقع أمر مختصر. يمكنك أيضًا تشغيل هذه الأوامر واحدًا تلو الآخر:
# اختياريًا، أضف --parent إذا كنت تريد أن تعتمد
# هذا الإصدار على إصدار مجموعة بيانات آخر، لذلك لن يتم تحميل أي ملفات مكررة!
clearml-data create --name coco128 --project YOLOv5/p>
clearml-data add --files .
clearml-data close
الآن بعد أن أصبح لديك مجموعة بيانات 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 وجعل وكيلًا بعيدًا يعمل عليه بدلاً من ذلك.
# لاستخدام optuna، قم بتثبيته أولاً، وإلا يمكنك تغيير المحسن ليكون مجرد RandomSearch pip install optuna python utils/loggers/clearml/hpo.py
يُعد تشغيل HPO محليًا أمرًا مفيدًا حقًا، ولكن ماذا لو أردنا تشغيل تجاربنا على جهاز بعيد بدلاً من ذلك؟ ربما لديك حق الوصول إلى جهاز GPU قوي جدًا في الموقع، أو لديك بعض الميزانية لاستخدام وحدات معالجة الرسومات السحابية. هذا هو المكان الذي يلعب فيه وكيل ClearML.
تحقق مما يمكن للوكيل القيام به هنا:
باختصار: يحتوي كل تجربة يتم تتبعها بواسطة مدير التجارب على معلومات كافية لإعادة إنتاجها على جهاز مختلف (الحزم المثبتة والتغييرات غير الملتزم بها وما إلى ذلك). لذلك، يقوم وكيل ClearML بذلك تمامًا: فهو يستمع إلى قائمة انتظار للمهام الواردة وعندما يجد مهمة، فإنه يعيد إنشاء البيئة وتشغيلها مع الاستمرار في الإبلاغ عن القيم العددية والمخططات وما إلى ذلك إلى مدير التجارب.
يمكنك تحويل أي جهاز (جهاز VM سحابي، أو جهاز GPU محلي، أو جهاز الكمبيوتر المحمول الخاص بك) إلى وكيل ClearML ببساطة عن طريق تشغيل:
clearml-agent daemon --queue [--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 # ...
عند تشغيل برنامج التدريب النصي بعد هذا التغيير، سيقوم بايثون بتشغيل البرنامج النصي حتى ذلك السطر، وبعد ذلك سيقوم بتعبئة الكود وإرساله إلى قائمة الانتظار بدلاً من ذلك!
تأتي ClearML مع أدوات تغيير الحجم التلقائي أيضًا! ستقوم هذه الأداة تلقائيًا بتشغيل أجهزة بعيدة جديدة في السحابة التي تختارها (AWS، GCP، Azure) وتحويلها إلى وكلاء ClearML لك كلما تم اكتشاف تجارب في قائمة الانتظار. بمجرد معالجة المهام، ستعمل أداة تغيير الحجم التلقائي على إيقاف تشغيل الأجهزة البعيدة تلقائيًا، وتتوقف عن الدفع! تحقق من فيديو البدء الخاص بأدوات تغيير الحجم التلقائي أدناه.
هل لديك أي أسئلة؟ انضم إلى مجتمعنا واترك سؤالك اليوم!