सामग्री पर जाएं

ClearML एकीकरण

Clear|MLClear|ML

करीबन 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 coco128.yaml --weights yolov5s.pt --cache

या कस्टम प्रोजेक्ट और कार्य नाम के साथ:

python train.py --project my_project --name my_training --img 640 --batch 16 --epochs 3 --data coco128.yaml --weights yolov5s.pt --cache

यह कैप्चर करेगा:

  • स्रोत कोड + प्रतिबद्ध परिवर्तन
  • स्थापित पैकेज
  • (हाइपर) पैरामीटर
  • मॉडल फ़ाइलें (उपयोग --save-period n हर एन युग में एक चौकी को बचाने के लिए)
  • कंसोल आउटपुट
  • स्केलर (mAP_0.5, mAP_0.5:0.95, सटीक, याद, नुकसान, सीखने की दर, ...)
  • सामान्य जानकारी जैसे मशीन विवरण, रनटाइम, निर्माण तिथि आदि।
  • सभी उत्पादित भूखंड जैसे लेबल कोरिलोग्राम और भ्रम मैट्रिक्स
  • प्रति युग बाउंडिंग बॉक्स के साथ छवियां
  • मोज़ेक प्रति युग
  • Validation images per epoch

यह बहुत सही है? 🤯 अब, हम इस सारी जानकारी की कल्पना कर सकते हैं 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 एक versioned डेटासेट के रूप में, DataSet रूट फ़ोल्डर पर जाएँ और निम्न आदेश चलाएँ:

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 आपको एक प्रयोग क्लोन करने और यहां तक कि इसके मापदंडों को बदलने की अनुमति देता है। फिर हम इसे इन नए मापदंडों के साथ स्वचालित रूप से फिर से चला सकते हैं, यह मूल रूप से एचपीओ क्या करता है!

हाइपरपैरामीटर ऑप्टिमाइज़ेशन को स्थानीय रूप से चलाने के लिए, हमने आपके लिए एक पूर्व-निर्मित स्क्रिप्ट शामिल की है। बस सुनिश्चित करें कि एक प्रशिक्षण कार्य कम से कम एक बार चलाया गया है, इसलिए यह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

एचपीओ

🤯 दूरस्थ निष्पादन (उन्नत)

स्थानीय रूप से एचपीओ चलाना वास्तव में आसान है, लेकिन क्या होगा यदि हम इसके बजाय रिमोट मशीन पर अपने प्रयोग चलाना चाहते हैं? हो सकता है कि आपके पास साइट पर एक बहुत शक्तिशाली GPU मशीन तक पहुंच हो, या आपके पास क्लाउड GPU का उपयोग करने के लिए कुछ बजट हो। यह वह जगह है जहाँ ClearML एजेंट खेल में आता है। देखें कि एजेंट यहां क्या कर सकता है:

संक्षेप में: प्रयोग प्रबंधक द्वारा ट्रैक किए गए प्रत्येक प्रयोग में एक अलग मशीन (स्थापित पैकेज, अप्रतिबद्ध परिवर्तन आदि) पर इसे पुन: पेश करने के लिए पर्याप्त जानकारी होती है। तो एक ClearML एजेंट बस यही करता है: यह आने वाले कार्यों के लिए एक कतार को सुनता है और जब यह एक पाता है, तो यह पर्यावरण को फिर से बनाता है और प्रयोग प्रबंधक को स्केलर, प्लॉट आदि की रिपोर्ट करते हुए इसे चलाता है।

आप किसी भी मशीन (क्लाउड वीएम, स्थानीय जीपीयू मशीन, अपने लैपटॉप ...) को एक में बदल सकते हैं ClearML बस चलाने से एजेंट:

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

क्लोनिंग, संपादन और एनक्यूइंग

हमारे एजेंट के चलने के साथ, हम इसे कुछ काम दे सकते हैं। एचपीओ अनुभाग से याद रखें कि हम किसी कार्य को क्लोन कर सकते हैं और हाइपरपैरामीटर को संपादित कर सकते हैं? हम इंटरफ़ेस से भी ऐसा कर सकते हैं!

🪄 प्रयोग को राइट-क्लिक करके उसका क्लोन बनाएं

🎯 हाइपरपैरामीटर को संपादित करें कि आप उन्हें क्या चाहते हैं

⏳ कार्य को राइट-क्लिक करके किसी भी क्यू में संलग्न करें

UI से किसी कार्य को संलग्न करना

किसी कार्य को दूरस्थ रूप से निष्पादित करना

अब आप एक कार्य क्लोन कर सकते हैं जैसे हमने ऊपर बताया है, या बस अपनी वर्तमान स्क्रिप्ट को जोड़कर चिह्नित करें 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 जब भी कतार में प्रयोगों का पता चलता है तो आपके लिए एजेंट। एक बार कार्य संसाधित हो जाने के बाद, ऑटोस्केलर स्वचालित रूप से दूरस्थ मशीनों को बंद कर देगा, और आप भुगतान करना बंद कर देंगे!

नीचे दिए गए ऑटोस्केलर्स को वीडियो शुरू करने की जाँच करें।

वीडियो देखें



2023-11-12 बनाया गया, अपडेट किया गया 2024-01-12
लेखक: ग्लेन-जोचर (5), chr043416@gmail.com (1)

टिप्पणियाँ