You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
IoT-For-Beginners/translations/ne/4-manufacturing/lessons/3-run-fruit-detector-edge
co-op-translator[bot] 9508c7b48a
🌐 Update translations via Co-op Translator (#545)
4 weeks ago
..
README.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago
assignment.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago
single-board-computer.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago
vm-iotedge.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago
wio-terminal.md 🌐 Update translations via Co-op Translator (#545) 4 weeks ago

README.md

आफ्नो फल डिटेक्टरलाई किनारमा चलाउनुहोस्

यस पाठको स्केच नोटको अवलोकन

स्केच नोट नित्या नरसिंहन द्वारा। ठूलो संस्करणको लागि तस्बिरमा क्लिक गर्नुहोस्।

यो भिडियोले IoT उपकरणहरूमा इमेज क्लासिफायरहरू चलाउने विषयको अवलोकन दिन्छ, जुन यस पाठमा समेटिएको छ।

Azure IoT Edge मा Custom Vision AI

पाठ अघि क्विज

पाठ अघि क्विज

परिचय

अघिल्लो पाठमा तपाईंले आफ्नो इमेज क्लासिफायर प्रयोग गरेर पाकेको र नपाकेको फललाई वर्गीकृत गर्नुभयो, जसमा तपाईंको IoT उपकरणको क्यामेराले खिचेको तस्बिरलाई इन्टरनेटमार्फत क्लाउड सेवामा पठाइएको थियो। यी कलहरू समय लाग्छ, खर्च लाग्छ, र तपाईंले प्रयोग गरिरहेको तस्बिर डेटा प्रकारको आधारमा गोपनीयता सम्बन्धी समस्या हुन सक्छ।

यस पाठमा तपाईंले किनारमा (edge) मेसिन लर्निङ (ML) मोडेलहरू कसरी चलाउने भन्ने कुरा सिक्नुहुनेछ - क्लाउडमा नभई तपाईंको आफ्नै नेटवर्कमा चल्ने IoT उपकरणहरूमा। तपाईंले किनार कम्प्युटिङ बनाम क्लाउड कम्प्युटिङको फाइदा र कमजोरीहरू, आफ्नो AI मोडेललाई किनारमा कसरी तैनाथ गर्ने, र IoT उपकरणबाट यसलाई कसरी पहुँच गर्ने भन्ने कुरा सिक्नुहुनेछ।

यस पाठमा हामीले समेट्नेछौं:

किनार कम्प्युटिङ

किनार कम्प्युटिङले IoT डेटा प्रशोधन गर्ने कम्प्युटरहरूलाई डेटा उत्पन्न हुने स्थानको नजिकै राख्न समावेश गर्दछ। यो प्रशोधन क्लाउडमा नभई क्लाउडको किनारमा - तपाईंको आन्तरिक नेटवर्कमा सारिन्छ।

क्लाउडमा इन्टरनेट सेवाहरू र स्थानीय नेटवर्कमा IoT उपकरणहरू देखाउने आर्किटेक्चर चित्र

अहिलेसम्मका पाठहरूमा, तपाईंले उपकरणहरूलाई डेटा संकलन गर्न र क्लाउडमा विश्लेषण गर्न डेटा पठाउन प्रयोग गर्नुभएको छ, क्लाउडमा सर्भरलेस फङ्सनहरू वा AI मोडेलहरू चलाउँदै।

IoT उपकरणहरू स्थानीय नेटवर्कमा किनार उपकरणहरूसँग जडान गर्दै, र ती किनार उपकरणहरू क्लाउडसँग जडान गर्दै देखाउने आर्किटेक्चर चित्र

किनार कम्प्युटिङले केही क्लाउड सेवाहरू क्लाउडबाट हटाएर IoT उपकरणहरूसँग एउटै नेटवर्कमा चल्ने कम्प्युटरहरूमा सार्न समावेश गर्दछ, केवल आवश्यक परेमा क्लाउडसँग संवाद गर्दै। उदाहरणका लागि, तपाईं किनार उपकरणहरूमा AI मोडेलहरू चलाएर फलको पाकेको अवस्था विश्लेषण गर्न सक्नुहुन्छ, र क्लाउडमा मात्र एनालिटिक्स पठाउन सक्नुहुन्छ, जस्तै पाकेको फलको संख्या बनाम नपाकेको।

सोच्नुहोस्: तपाईंले अहिलेसम्म निर्माण गरेका IoT अनुप्रयोगहरूमा कुन भागहरू किनारमा सार्न सकिन्छ?

फाइदाहरू

किनार कम्प्युटिङका फाइदाहरू:

  1. गति - किनार कम्प्युटिङ समय-संवेदनशील डेटा लागि आदर्श हो किनभने कार्यहरू उपकरणसँग एउटै नेटवर्कमा गरिन्छ, इन्टरनेटमार्फत कलहरू नगरी। यसले उच्च गति सक्षम गर्दछ किनभने आन्तरिक नेटवर्कहरू इन्टरनेट जडानहरू भन्दा धेरै छिटो चल्न सक्छन्, डेटा धेरै छोटो दूरीमा यात्रा गर्दै।

    💁 इन्टरनेट जडानहरूको लागि अप्टिकल केबलहरू प्रयोग गर्दा डेटा प्रकाशको गतिमा यात्रा गर्न सक्ने भए पनि, डेटा क्लाउड प्रदायकहरूमा विश्वभर यात्रा गर्न समय लाग्न सक्छ। उदाहरणका लागि, यदि तपाईंले युरोपबाट अमेरिकी क्लाउड सेवाहरूमा डेटा पठाउनुभयो भने, अप्टिकल केबलमा डेटा अटलान्टिक पार गर्न कम्तिमा 28ms लाग्छ, र यो डेटा ट्रान्सअटलान्टिक केबलमा पुर्‍याउन, विद्युतबाट प्रकाश संकेतमा रूपान्तरण गर्न र अर्को पक्षमा पुन: रूपान्तरण गर्न, त्यसपछि क्लाउड प्रदायकमा पुर्‍याउन लाग्ने समयलाई बेवास्ता गर्दै।

    किनार कम्प्युटिङले कम नेटवर्क ट्राफिक आवश्यक पार्छ, इन्टरनेट जडानको सीमित ब्यान्डविथमा भीडभाडका कारण तपाईंको डेटा सुस्त हुने जोखिम कम गर्दछ।

  2. दूरस्थ पहुँचयोग्यता - किनार कम्प्युटिङले सीमित वा कुनै जडान नभएको अवस्थामा काम गर्दछ, वा जडानलाई निरन्तर प्रयोग गर्न महँगो हुन्छ। उदाहरणका लागि मानवीय विपद क्षेत्रहरूमा जहाँ पूर्वाधार सीमित छ, वा विकासशील राष्ट्रहरूमा।

  3. कम लागत - किनार उपकरणमा डेटा संकलन, भण्डारण, विश्लेषण, र कार्यहरू ट्रिगर गर्दा क्लाउड सेवाहरूको प्रयोग कम हुन्छ, जसले तपाईंको IoT अनुप्रयोगको समग्र लागत कम गर्न सक्छ। हालसालै किनार कम्प्युटिङका लागि डिजाइन गरिएका उपकरणहरूको वृद्धि भएको छ, जस्तै NVIDIA को Jetson Nano जस्ता AI एक्सेलेरेटर बोर्डहरू, जसले GPU-आधारित हार्डवेयर प्रयोग गरेर US$100 भन्दा कम लागतका उपकरणहरूमा AI वर्कलोडहरू चलाउन सक्छ।

  4. गोपनीयता र सुरक्षा - किनार कम्प्युटिङसँग डेटा तपाईंको नेटवर्कमा रहन्छ र क्लाउडमा अपलोड हुँदैन। यो संवेदनशील र व्यक्तिगत रूपमा पहिचानयोग्य जानकारीको लागि प्रायः रुचाइन्छ, विशेष गरी डेटा विश्लेषण पछि भण्डारण गर्न आवश्यक छैन, जसले डेटा चुहावटको जोखिमलाई धेरै कम गर्दछ। उदाहरणहरूमा चिकित्सा डेटा र सुरक्षा क्यामेरा फुटेज समावेश छन्।

  5. असुरक्षित उपकरणहरूको ह्यान्डलिङ - यदि तपाईंसँग ज्ञात सुरक्षा कमजोरी भएका उपकरणहरू छन् जसलाई तपाईं आफ्नो नेटवर्क वा इन्टरनेटसँग सिधै जडान गर्न चाहनुहुन्न भने, तपाईं तिनीहरूलाई छुट्टै नेटवर्कमा IoT Edge उपकरण गेटवेमा जडान गर्न सक्नुहुन्छ। यो किनार उपकरणले त्यसपछि तपाईंको व्यापक नेटवर्क वा इन्टरनेटसँग जडान पनि गर्न सक्छ, र डेटा प्रवाहहरू अगाडि र पछाडि व्यवस्थापन गर्न सक्छ।

  6. असंगत उपकरणहरूको समर्थन - यदि तपाईंसँग IoT Hubसँग जडान गर्न नसक्ने उपकरणहरू छन्, उदाहरणका लागि उपकरणहरू जसले केवल HTTP जडानहरू प्रयोग गर्न सक्छन् वा उपकरणहरू जससँग जडान गर्न केवल ब्लुटुथ छ, तपाईं IoT Edge उपकरणलाई गेटवे उपकरणको रूपमा प्रयोग गर्न सक्नुहुन्छ, IoT Hubमा सन्देशहरू अगाडि बढाउँदै।

अनुसन्धान गर्नुहोस्: किनार कम्प्युटिङका अन्य के फाइदाहरू हुन सक्छन्?

कमजोरीहरू

किनार कम्प्युटिङका कमजोरीहरू छन्, जहाँ क्लाउड प्राथमिक विकल्प हुन सक्छ:

  1. स्केल र लचिलोपन - क्लाउड कम्प्युटिङले नेटवर्क र डेटा आवश्यकताहरूलाई वास्तविक समयमा समायोजन गर्न सक्छ, सर्भरहरू र अन्य स्रोतहरू थपेर वा घटाएर। थप किनार कम्प्युटरहरू थप्न म्यानुअल रूपमा थप उपकरणहरू आवश्यक पर्छ।

  2. विश्वसनीयता र लचिलोपन - क्लाउड कम्प्युटिङले बहु स्थानहरूमा बहु सर्भरहरू प्रदान गर्दछ, पुनरावृत्ति र विपद पुन: प्राप्तिको लागि। किनारमा समान स्तरको पुनरावृत्ति गर्न ठूलो लगानी र धेरै कन्फिगरेसन कार्य आवश्यक पर्छ।

  3. मर्मतसम्भार - क्लाउड सेवा प्रदायकहरूले प्रणाली मर्मतसम्भार र अपडेटहरू प्रदान गर्छन्।

अनुसन्धान गर्नुहोस्: किनार कम्प्युटिङका अन्य के कमजोरीहरू हुन सक्छन्?

कमजोरीहरू वास्तवमा क्लाउड प्रयोगको फाइदाहरूको विपरीत हुन् - तपाईंले यी उपकरणहरू आफैं निर्माण र व्यवस्थापन गर्नुपर्छ, क्लाउड प्रदायकहरूको विशेषज्ञता र स्केलमा निर्भर नगरी।

किनार कम्प्युटिङको प्रकृतिले केही जोखिमहरू कम गर्छ। उदाहरणका लागि, यदि तपाईंले किनार उपकरणलाई कारखानामा चलाउँदै हुनुहुन्छ जसले मेसिनरीबाट डेटा संकलन गर्छ, तपाईंले केही विपद पुन: प्राप्ति परिदृश्यहरूबारे सोच्न आवश्यक छैन। यदि कारखानामा पावर बन्द हुन्छ भने तपाईंलाई ब्याकअप किनार उपकरणको आवश्यकता छैन किनभने किनार उपकरणले प्रशोधन गर्ने डेटा उत्पन्न गर्ने मेसिनहरू पनि पावर बिना हुनेछन्।

IoT प्रणालीहरूको लागि, तपाईंले प्रायः क्लाउड र किनार कम्प्युटिङको मिश्रण चाहनुहुन्छ, प्रणाली, यसको ग्राहकहरू, र यसको मर्मतकर्ताहरूको आवश्यकताहरूको आधारमा प्रत्येक सेवाको लाभ उठाउँदै।

Azure IoT Edge

Azure IoT Edge लोगो

Azure IoT Edge एक सेवा हो जसले तपाईंलाई क्लाउडबाट किनारमा वर्कलोडहरू सार्न मद्दत गर्न सक्छ। तपाईंले उपकरणलाई किनार उपकरणको रूपमा सेट अप गर्नुहुन्छ, र क्लाउडबाट तपाईंले उक्त किनार उपकरणमा कोड तैनाथ गर्न सक्नुहुन्छ। यसले क्लाउड र किनारको क्षमताहरू मिश्रण गर्न अनुमति दिन्छ।

🎓 वर्कलोडहरू कुनै पनि सेवा हो जसले कुनै प्रकारको काम गर्छ, जस्तै AI मोडेलहरू, अनुप्रयोगहरू, वा सर्भरलेस फङ्सनहरू।

उदाहरणका लागि, तपाईं क्लाउडमा इमेज क्लासिफायर प्रशिक्षण गर्न सक्नुहुन्छ, त्यसपछि क्लाउडबाट किनार उपकरणमा तैनाथ गर्न सक्नुहुन्छ। तपाईंको IoT उपकरणले तस्बिरहरू किनार उपकरणमा वर्गीकरणको लागि पठाउँछ, इन्टरनेटमार्फत तस्बिरहरू पठाउने होइन। यदि तपाईंलाई मोडेलको नयाँ पुनरावृत्ति तैनाथ गर्न आवश्यक छ भने, तपाईं क्लाउडमा प्रशिक्षण गर्न सक्नुहुन्छ र IoT Edge प्रयोग गरेर किनार उपकरणमा नयाँ पुनरावृत्ति अपडेट गर्न सक्नुहुन्छ।

🎓 IoT Edge मा तैनाथ गरिएको सफ्टवेयरलाई मोड्युलहरू भनिन्छ। डिफल्ट रूपमा IoT Edge मोड्युलहरू चलाउँछ जसले IoT Hubसँग संवाद गर्छ, जस्तै edgeAgentedgeHub मोड्युलहरू। जब तपाईं इमेज क्लासिफायर तैनाथ गर्नुहुन्छ, यो थप मोड्युलको रूपमा तैनाथ हुन्छ।

IoT Edge IoT Hub मा निर्माण गरिएको छ, त्यसैले तपाईं IoT उपकरणहरू व्यवस्थापन गर्न प्रयोग गर्ने उस्तै सेवाको प्रयोग गरेर किनार उपकरणहरू व्यवस्थापन गर्न सक्नुहुन्छ, उस्तै स्तरको सुरक्षा सहित।

IoT Edge कन्टेनरहरू बाट कोड चलाउँछ - आत्म-निहित अनुप्रयोगहरू जुन तपाईंको कम्प्युटरमा अन्य अनुप्रयोगहरूबाट अलग चल्छ। जब तपाईं कन्टेनर चलाउनुहुन्छ यो तपाईंको कम्प्युटर भित्र चलिरहेको छुट्टै कम्प्युटर जस्तै काम गर्छ, यसको आफ्नै सफ्टवेयर, सेवाहरू र अनुप्रयोगहरू चलाउँदै। अधिकांश समय कन्टेनरहरूले तपाईंको कम्प्युटरमा केही पनि पहुँच गर्न सक्दैनन् जबसम्म तपाईंले फोल्डर जस्ता चीजहरू कन्टेनरसँग साझेदारी गर्न रोज्नुहुन्न। कन्टेनरले त्यसपछि खुला पोर्टमार्फत सेवाहरू प्रदान गर्दछ जसमा तपाईं जडान गर्न सक्नुहुन्छ वा आफ्नो नेटवर्कमा एक्सपोज गर्न सक्नुहुन्छ।

कन्टेनरमा पुन: निर्देशित वेब अनुरोध

उदाहरणका लागि, तपाईंसँग पोर्ट 80 मा चलिरहेको वेबसाइट भएको कन्टेनर हुन सक्छ, डिफल्ट HTTP पोर्ट, र तपाईंले यसलाई आफ्नो कम्प्युटरबाट पनि पोर्ट 80 मा एक्सपोज गर्न सक्नुहुन्छ।

अनुसन्धान गर्नुहोस्: कन्टेनरहरू र Docker वा Moby जस्ता सेवाहरूको बारेमा पढ्नुहोस्।

तपाईं Custom Vision प्रयोग गरेर इमेज क्लासिफायरहरू डाउनलोड गर्न र तिनीहरूलाई कन्टेनरको रूपमा तैनाथ गर्न सक्नुहुन्छ, सीधा उपकरणमा चल्दै वा IoT Edge मार्फत तैनाथ गर्दै। एकपटक तिनीहरू कन्टेनरमा चल्न थालेपछि, तिनीहरूलाई क्लाउड संस्करणको जस्तै REST API प्रयोग गरेर पहुँच गर्न सकिन्छ, तर किनार उपकरणमा चलिरहेको कन्टेनरमा अन्त बिन्दु (endpoint) संकेत गर्दै।

IoT Edge उपकरण दर्ता गर्नुहोस्

IoT Edge उपकरण प्रयोग गर्न, यसलाई IoT Hub मा दर्ता गर्न आवश्यक छ।

कार्य - IoT Edge उपकरण दर्ता गर्नुहोस्

  1. fruit-quality-detector स्रोत समूहमा IoT Hub सिर्जना गर्नुहोस्। यसलाई fruit-quality-detector मा आधारित अद्वितीय नाम दिनुहोस्।

  2. आफ्नो IoT Hub मा fruit-quality-detector-edge नामक IoT Edge उपकरण दर्ता गर्नुहोस्। यो गर्नको लागि आदेश गैर-किनार उपकरण दर्ता गर्न प्रयोग गरिएको आदेशसँग मिल्दोजुल्दो छ, तर तपाईंले --edge-enabled फ्ल्याग पास गर्नुहुन्छ।

    az iot hub device-identity create --edge-enabled \
                                      --device-id fruit-quality-detector-edge \
                                      --hub-name <hub_name>
    

    <hub_name> लाई आफ्नो IoT Hub को नामले प्रतिस्थापन गर्नुहोस्।

  3. आफ्नो उपकरणको लागि जडान स्ट्रिङ प्राप्त गर्न निम्न आदेश प्रयोग गर्नुहोस्:

    az iot hub device-identity connection-string show --device-id fruit-quality-detector-edge \
                                                      --output table \
                                                      --hub-name <hub_name>
    

    <hub_name> लाई आफ्नो IoT Hub को नामले प्रतिस्थापन गर्नुहोस्।

    आउटपुटमा देखाइएको जडान स्ट्रिङको प्रतिलिपि लिनुहोस्।

IoT Edge उपकरण सेट अप गर्नुहोस्

एकपटक तपाईंले आफ्नो IoT Hub मा किनार उपकरण दर्ता गर्नुभयो भने, तपाईं किनार उपकरण सेट अप गर्न सक्नुहुन्छ।

कार्य - IoT Edge Runtime स्थापना गर्नुहोस् र सुरु गर्नुहोस्

IoT Edge Runtime ले केवल Linux कन्टेनरहरू चलाउँछ। यो Linux मा चलाउन सकिन्छ, वा Windows मा Linux Virtual Machines प्रयोग गरेर।

आफ्नो मोडेल निर्यात गर्नुहोस्

किनारमा क्लासिफायर चलाउन, यसलाई Custom Vision बाट निर्यात गर्न आवश्यक छ। Custom Vision दुई प्रकारका मोडेलहरू उत्पन्न गर्न सक्छ - मानक मोडेलहरू र कम्प्याक्ट मोडेलहरू। कम्प्याक्ट मोडेलहरूले मोडेलको आकार घटाउन विभिन्न प्रविधिहरू प्रयोग गर्छन्, यसलाई IoT उपकरणहरूमा डाउनलोड र तैनाथ गर्न पर्याप्त सानो बनाउँछन्।

जब तपाईंले इमेज क्लासिफायर सिर्जना गर्नुभयो, तपाईंले Food डोमेन प्रयोग गर्नुभयो, जुन खाना तस्बिरहरूमा प्रशिक्षणको लागि अनुकूलित मोडेलको संस्करण हो। Custom Vision मा, तपाईं आफ्नो परियोजनाको डो

  1. CustomVision.ai मा Custom Vision पोर्टल खोल्नुहोस् र यदि पहिले नै खुला छैन भने साइन इन गर्नुहोस्। त्यसपछि आफ्नो fruit-quality-detector प्रोजेक्ट खोल्नुहोस्।

  2. Settings बटन (⚙ आइकन) चयन गर्नुहोस्।

  3. Domains सूचीमा, Food (compact) चयन गर्नुहोस्।

  4. Export Capabilities अन्तर्गत, Basic platforms (Tensorflow, CoreML, ONNX, ...) चयन गरिएको छ भनेर सुनिश्चित गर्नुहोस्।

  5. Settings पृष्ठको तल, Save Changes चयन गर्नुहोस्।

  6. Train बटन प्रयोग गरेर मोडेललाई पुनः प्रशिक्षण गर्नुहोस्, Quick training चयन गर्दै।

कार्य - आफ्नो मोडेल निर्यात गर्नुहोस्

मोडेल प्रशिक्षण भएपछि, यसलाई कन्टेनरको रूपमा निर्यात गर्न आवश्यक छ।

  1. Performance ट्याब चयन गर्नुहोस्, र compact domain प्रयोग गरेर प्रशिक्षण गरिएको आफ्नो पछिल्लो iteration खोज्नुहोस्।

  2. माथि Export बटन चयन गर्नुहोस्।

  3. DockerFile चयन गर्नुहोस्, त्यसपछि आफ्नो edge device सँग मेल खाने संस्करण चयन गर्नुहोस्:

    • यदि तपाईं Linux कम्प्युटर, Windows कम्प्युटर वा Virtual Machine मा IoT Edge चलाउँदै हुनुहुन्छ भने, Linux संस्करण चयन गर्नुहोस्।
    • यदि तपाईं Raspberry Pi मा IoT Edge चलाउँदै हुनुहुन्छ भने, ARM (Raspberry Pi 3) संस्करण चयन गर्नुहोस्।

🎓 Docker कन्टेनर व्यवस्थापनको लागि सबैभन्दा लोकप्रिय उपकरणहरू मध्ये एक हो, र DockerFile कन्टेनर सेटअप गर्ने निर्देशनहरूको सेट हो।

  1. Custom Vision लाई सम्बन्धित फाइलहरू सिर्जना गर्न Export चयन गर्नुहोस्, त्यसपछि तिनीहरूलाई zip फाइलमा डाउनलोड गर्न Download चयन गर्नुहोस्।

  2. फाइलहरू आफ्नो कम्प्युटरमा सुरक्षित गर्नुहोस्, त्यसपछि फोल्डर अनजिप गर्नुहोस्।

आफ्नो कन्टेनरलाई तैनाथको लागि तयार गर्नुहोस्

कन्टेनरहरू निर्माण गरिन्छ, त्यसपछि कन्टेनर रजिस्ट्रीमा पठाइन्छ, त्यसपछि IoT Edge प्रयोग गरेर edge device मा तैनाथ गरिन्छ

एकपटक तपाईंले आफ्नो मोडेल डाउनलोड गरेपछि, यसलाई कन्टेनरमा निर्माण गर्न आवश्यक छ, त्यसपछि कन्टेनर रजिस्ट्रीमा पठाउनुहोस् - कन्टेनरहरू भण्डारण गर्न सकिने अनलाइन स्थान। IoT Edge त्यसपछि रजिस्ट्रीबाट कन्टेनर डाउनलोड गर्न सक्छ र यसलाई तपाईंको उपकरणमा पठाउन सक्छ।

Azure Container Registry लोगो

यस पाठको लागि तपाईंले प्रयोग गर्ने कन्टेनर रजिस्ट्री Azure Container Registry हो। यो निःशुल्क सेवा होइन, त्यसैले पैसा बचाउन सुनिश्चित गर्नुहोस् कि तपाईं आफ्नो प्रोजेक्ट सफा गर्नुहोस् जब तपाईं समाप्त गर्नुहुन्छ।

💁 Azure Container Registry प्रयोगको लागत Azure Container Registry मूल्य निर्धारण पृष्ठ मा हेर्न सकिन्छ।

कार्य - Docker स्थापना गर्नुहोस्

Classifier निर्माण र तैनाथ गर्न, तपाईंलाई Docker स्थापना गर्न आवश्यक हुन सक्छ।

तपाईंलाई यो केवल त्यतिबेला आवश्यक हुनेछ जब तपाईं IoT Edge स्थापना गरिएको उपकरणबाट फरक उपकरणमा आफ्नो कन्टेनर निर्माण गर्न योजना बनाउनुहुन्छ - IoT Edge स्थापना गर्ने भागको रूपमा, Docker तपाईंको लागि स्थापना गरिएको छ।

  1. यदि तपाईं IoT Edge उपकरणबाट फरक उपकरणमा Docker कन्टेनर निर्माण गर्दै हुनुहुन्छ भने, Docker install page मा Docker Desktop वा Docker engine स्थापना गर्नका लागि निर्देशनहरू पालना गर्नुहोस्। स्थापना पछि यो चलिरहेको छ भनेर सुनिश्चित गर्नुहोस्।

कार्य - कन्टेनर रजिस्ट्री स्रोत सिर्जना गर्नुहोस्

  1. Azure Container Registry स्रोत सिर्जना गर्न आफ्नो टर्मिनल वा कमाण्ड प्रम्प्टबाट निम्न कमाण्ड चलाउनुहोस्:

    az acr create --resource-group fruit-quality-detector \
                  --sku Basic \
                  --name <Container registry name>
    

    <Container registry name> लाई केवल अक्षर र नम्बरहरू प्रयोग गरेर आफ्नो कन्टेनर रजिस्ट्रीको लागि अद्वितीय नामले प्रतिस्थापन गर्नुहोस्। यसलाई fruitqualitydetector वरिपरि आधार बनाउनुहोस्। यो नाम कन्टेनर रजिस्ट्री पहुँच गर्न URL को भाग बन्छ, त्यसैले यो विश्वव्यापी रूपमा अद्वितीय हुनुपर्छ।

  2. निम्न कमाण्ड प्रयोग गरेर Azure Container Registry मा लग इन गर्नुहोस्:

    az acr login --name <Container registry name>
    

    <Container registry name> लाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्।

  3. कन्टेनर रजिस्ट्रीलाई एडमिन मोडमा सेट गर्नुहोस् ताकि तपाईं निम्न कमाण्ड प्रयोग गरेर पासवर्ड उत्पन्न गर्न सक्नुहुन्छ:

    az acr update --admin-enabled true \
                 --name <Container registry name>
    

    <Container registry name> लाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्।

  4. निम्न कमाण्ड प्रयोग गरेर आफ्नो कन्टेनर रजिस्ट्रीको लागि पासवर्ड उत्पन्न गर्नुहोस्:

     az acr credential renew --password-name password \
                             --output table \
                             --name <Container registry name>
    

    <Container registry name> लाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्।

    PASSWORD को मानको प्रतिलिपि लिनुहोस्, किनकि तपाईंलाई यो पछि आवश्यक हुनेछ।

कार्य - आफ्नो कन्टेनर निर्माण गर्नुहोस्

Custom Vision बाट तपाईंले डाउनलोड गर्नुभएको DockerFile हो, जसले कन्टेनर कसरी निर्माण गर्नुपर्छ भन्ने निर्देशनहरू समावेश गर्दछ, साथै एप्लिकेसन कोड जसले कन्टेनर भित्र तपाईंको Custom Vision मोडेल होस्ट गर्न चलाइन्छ, साथै यसलाई कल गर्न REST API। तपाईं Docker प्रयोग गरेर DockerFile बाट ट्याग गरिएको कन्टेनर निर्माण गर्न सक्नुहुन्छ, त्यसपछि यसलाई आफ्नो कन्टेनर रजिस्ट्रीमा पठाउन सक्नुहुन्छ।

🎓 कन्टेनरहरूलाई ट्याग दिइन्छ जसले तिनीहरूको नाम र संस्करण परिभाषित गर्दछ। जब तपाईंलाई कन्टेनर अपडेट गर्न आवश्यक हुन्छ, तपाईं यसलाई उही ट्याग तर नयाँ संस्करणको साथ निर्माण गर्न सक्नुहुन्छ।

  1. आफ्नो टर्मिनल वा कमाण्ड प्रम्प्ट खोल्नुहोस् र Custom Vision बाट डाउनलोड गरिएको अनजिप गरिएको मोडेलमा नेभिगेट गर्नुहोस्।

  2. निम्न कमाण्ड चलाएर इमेज निर्माण र ट्याग गर्नुहोस्:

    docker build --platform <platform> -t <Container registry name>.azurecr.io/classifier:v1 .
    

    <platform> लाई यो कन्टेनर चल्ने प्लेटफर्मले प्रतिस्थापन गर्नुहोस्। यदि तपाईं Raspberry Pi मा IoT Edge चलाउँदै हुनुहुन्छ भने, यसलाई linux/armhf सेट गर्नुहोस्, अन्यथा यसलाई linux/amd64 सेट गर्नुहोस्।

    💁 यदि तपाईं यो कमाण्ड IoT Edge चलिरहेको उपकरणबाट चलाउँदै हुनुहुन्छ, जस्तै Raspberry Pi बाट चलाउँदै हुनुहुन्छ भने, तपाईं --platform <platform> भागलाई छोड्न सक्नुहुन्छ किनभने यो हालको प्लेटफर्ममा डिफल्ट हुन्छ।

    <Container registry name> लाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्।

    💁 यदि तपाईं Linux वा Raspberry Pi OS मा चलाउँदै हुनुहुन्छ भने, तपाईंलाई यो कमाण्ड चलाउन sudo प्रयोग गर्न आवश्यक हुन सक्छ।

    Docker इमेज निर्माण गर्नेछ, आवश्यक सबै सफ्टवेयर कन्फिगर गर्दै। इमेजलाई classifier:v1 को रूपमा ट्याग गरिनेछ।

    ➜  d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux docker build --platform linux/amd64 -t  fruitqualitydetectorjimb.azurecr.io/classifier:v1 .
    [+] Building 102.4s (11/11) FINISHED
     => [internal] load build definition from Dockerfile
     => => transferring dockerfile: 131B
     => [internal] load .dockerignore
     => => transferring context: 2B
     => [internal] load metadata for docker.io/library/python:3.7-slim
     => [internal] load build context
     => => transferring context: 905B
     => [1/6] FROM docker.io/library/python:3.7-slim@sha256:b21b91c9618e951a8cbca5b696424fa5e820800a88b7e7afd66bba0441a764d6
     => => resolve docker.io/library/python:3.7-slim@sha256:b21b91c9618e951a8cbca5b696424fa5e820800a88b7e7afd66bba0441a764d6
     => => sha256:b4d181a07f8025e00e0cb28f1cc14613da2ce26450b80c54aea537fa93cf3bda 27.15MB / 27.15MB
     => => sha256:de8ecf497b753094723ccf9cea8a46076e7cb845f333df99a6f4f397c93c6ea9 2.77MB / 2.77MB
     => => sha256:707b80804672b7c5d8f21e37c8396f319151e1298d976186b4f3b76ead9f10c8 10.06MB / 10.06MB
     => => sha256:b21b91c9618e951a8cbca5b696424fa5e820800a88b7e7afd66bba0441a764d6 1.86kB / 1.86kB
     => => sha256:44073386687709c437586676b572ff45128ff1f1570153c2f727140d4a9accad 1.37kB / 1.37kB
     => => sha256:3d94f0f2ca798607808b771a7766f47ae62a26f820e871dd488baeccc69838d1 8.31kB / 8.31kB
     => => sha256:283715715396fd56d0e90355125fd4ec57b4f0773f306fcd5fa353b998beeb41 233B / 233B
     => => sha256:8353afd48f6b84c3603ea49d204bdcf2a1daada15f5d6cad9cc916e186610a9f 2.64MB / 2.64MB
     => => extracting sha256:b4d181a07f8025e00e0cb28f1cc14613da2ce26450b80c54aea537fa93cf3bda
     => => extracting sha256:de8ecf497b753094723ccf9cea8a46076e7cb845f333df99a6f4f397c93c6ea9
     => => extracting sha256:707b80804672b7c5d8f21e37c8396f319151e1298d976186b4f3b76ead9f10c8
     => => extracting sha256:283715715396fd56d0e90355125fd4ec57b4f0773f306fcd5fa353b998beeb41
     => => extracting sha256:8353afd48f6b84c3603ea49d204bdcf2a1daada15f5d6cad9cc916e186610a9f
     => [2/6] RUN pip install -U pip
     => [3/6] RUN pip install --no-cache-dir numpy~=1.17.5 tensorflow~=2.0.2 flask~=1.1.2 pillow~=7.2.0
     => [4/6] RUN pip install --no-cache-dir mscviplib==2.200731.16
     => [5/6] COPY app /app
     => [6/6] WORKDIR /app
     => exporting to image
     => => exporting layers
     => => writing image sha256:1846b6f134431f78507ba7c079358ed66d944c0e185ab53428276bd822400386
     => => naming to fruitqualitydetectorjimb.azurecr.io/classifier:v1
    

कार्य - आफ्नो कन्टेनरलाई कन्टेनर रजिस्ट्रीमा पठाउनुहोस्

  1. निम्न कमाण्ड प्रयोग गरेर आफ्नो कन्टेनरलाई कन्टेनर रजिस्ट्रीमा पठाउनुहोस्:

    docker push <Container registry name>.azurecr.io/classifier:v1
    

    <Container registry name> लाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्।

    💁 यदि तपाईं Linux मा चलाउँदै हुनुहुन्छ भने, तपाईंलाई यो कमाण्ड चलाउन sudo प्रयोग गर्न आवश्यक हुन सक्छ।

    कन्टेनर कन्टेनर रजिस्ट्रीमा पठाइनेछ।

    ➜  d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux docker push fruitqualitydetectorjimb.azurecr.io/classifier:v1
    The push refers to repository [fruitqualitydetectorjimb.azurecr.io/classifier]
    5f70bf18a086: Pushed 
    8a1ba9294a22: Pushed 
    56cf27184a76: Pushed 
    b32154f3f5dd: Pushed 
    36103e9a3104: Pushed 
    e2abb3cacca0: Pushed 
    4213fd357bbe: Pushed 
    7ea163ba4dce: Pushed 
    537313a13d90: Pushed 
    764055ebc9a7: Pushed 
    v1: digest: sha256:ea7894652e610de83a5a9e429618e763b8904284253f4fa0c9f65f0df3a5ded8 size: 2423
    
  2. पठाइएको पुष्टि गर्न, तपाईं निम्न कमाण्ड प्रयोग गरेर आफ्नो रजिस्ट्रीमा कन्टेनरहरूको सूची हेर्न सक्नुहुन्छ:

    az acr repository list --output table \
                           --name <Container registry name> 
    

    <Container registry name> लाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्।

    ➜  d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux az acr repository list --name fruitqualitydetectorjimb --output table
    Result
    ----------
    classifier
    

    तपाईं आफ्नो classifier सूचीमा देख्नुहुनेछ।

आफ्नो कन्टेनर तैनाथ गर्नुहोस्

अब तपाईंको कन्टेनरलाई तपाईंको IoT Edge उपकरणमा तैनाथ गर्न सकिन्छ। तैनाथ गर्न तपाईंलाई तैनाथ म्यानिफेस्ट परिभाषित गर्न आवश्यक छ - JSON दस्तावेज जसले edge device मा तैनाथ गरिने मोड्युलहरूको सूची बनाउँछ।

कार्य - तैनाथ म्यानिफेस्ट सिर्जना गर्नुहोस्

  1. आफ्नो कम्प्युटरमा कतै deployment.json नामक नयाँ फाइल सिर्जना गर्नुहोस्।

  2. यस फाइलमा निम्न थप्नुहोस्:

    {
        "content": {
            "modulesContent": {
                "$edgeAgent": {
                    "properties.desired": {
                        "schemaVersion": "1.1",
                        "runtime": {
                            "type": "docker",
                            "settings": {
                                "minDockerVersion": "v1.25",
                                "loggingOptions": "",
                                "registryCredentials": {
                                    "ClassifierRegistry": {
                                        "username": "<Container registry name>",
                                        "password": "<Container registry password>",
                                        "address": "<Container registry name>.azurecr.io"
                                      }
                                }
                            }
                        },
                        "systemModules": {
                            "edgeAgent": {
                                "type": "docker",
                                "settings": {
                                    "image": "mcr.microsoft.com/azureiotedge-agent:1.1",
                                    "createOptions": "{}"
                                }
                            },
                            "edgeHub": {
                                "type": "docker",
                                "status": "running",
                                "restartPolicy": "always",
                                "settings": {
                                    "image": "mcr.microsoft.com/azureiotedge-hub:1.1",
                                    "createOptions": "{\"HostConfig\":{\"PortBindings\":{\"5671/tcp\":[{\"HostPort\":\"5671\"}],\"8883/tcp\":[{\"HostPort\":\"8883\"}],\"443/tcp\":[{\"HostPort\":\"443\"}]}}}"
                                }
                            }
                        },
                        "modules": {
                            "ImageClassifier": {
                                "version": "1.0",
                                "type": "docker",
                                "status": "running",
                                "restartPolicy": "always",
                                "settings": {
                                    "image": "<Container registry name>.azurecr.io/classifier:v1",
                                    "createOptions": "{\"ExposedPorts\": {\"80/tcp\": {}},\"HostConfig\": {\"PortBindings\": {\"80/tcp\": [{\"HostPort\": \"80\"}]}}}"
                                }
                            }
                        }
                    }
                },
                "$edgeHub": {
                    "properties.desired": {
                        "schemaVersion": "1.1",
                        "routes": {
                            "upstream": "FROM /messages/* INTO $upstream"
                        },
                        "storeAndForwardConfiguration": {
                            "timeToLiveSecs": 7200
                        }
                    }
                }
            }
        }
    }
    

    💁 तपाईं यो फाइल code-deployment/deployment फोल्डरमा फेला पार्न सक्नुहुन्छ।

    <Container registry name> को तीन उदाहरणलाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्। एउटा ImageClassifier मोड्युल सेक्सनमा छ, अन्य दुई registryCredentials सेक्सनमा छन्।

    registryCredentials सेक्सनमा <Container registry password> लाई तपाईंको कन्टेनर रजिस्ट्री पासवर्डले प्रतिस्थापन गर्नुहोस्।

  3. आफ्नो तैनाथ म्यानिफेस्ट समावेश गर्ने फोल्डरबाट, निम्न कमाण्ड चलाउनुहोस्:

    az iot edge set-modules --device-id fruit-quality-detector-edge \
                            --content deployment.json \
                            --hub-name <hub_name>
    

    <hub_name> लाई तपाईंको IoT Hub को नामले प्रतिस्थापन गर्नुहोस्।

    इमेज classifier मोड्युल edge device मा तैनाथ गरिनेछ।

कार्य - classifier चलिरहेको छ भनेर पुष्टि गर्नुहोस्

  1. IoT edge device मा जडान गर्नुहोस्:

    • यदि तपाईं Raspberry Pi प्रयोग गरेर IoT Edge चलाउँदै हुनुहुन्छ भने, आफ्नो टर्मिनलबाट ssh प्रयोग गरेर वा VS Code मा रिमोट SSH सत्र मार्फत जडान गर्नुहोस्।

    • यदि तपाईं Windows मा Linux कन्टेनरमा IoT Edge चलाउँदै हुनुहुन्छ भने, IoT Edge उपकरणमा जडान गर्न सफल कन्फिगरेसन पुष्टि गर्ने गाइड मा चरणहरू पालना गर्नुहोस्।

    • यदि तपाईं Virtual Machine मा IoT Edge चलाउँदै हुनुहुन्छ भने, तपाईं VM सिर्जना गर्दा सेट गरिएको adminUsernamepassword प्रयोग गरेर, र IP ठेगाना वा DNS नाम प्रयोग गरेर मशीनमा SSH गर्न सक्नुहुन्छ:

      ssh <adminUsername>@<IP address>
      

      वा:

      ssh <adminUsername>@<DNS Name>
      

      संकेत गरिएको बेला आफ्नो पासवर्ड प्रविष्ट गर्नुहोस्।

  2. एकपटक तपाईं जडान भएपछि, IoT Edge मोड्युलहरूको सूची प्राप्त गर्न निम्न कमाण्ड चलाउनुहोस्:

    iotedge list
    

    💁 तपाईंलाई यो कमाण्ड sudo प्रयोग गरेर चलाउन आवश्यक हुन सक्छ।

    तपाईं चलिरहेको मोड्युलहरू देख्नुहुनेछ:

    jim@fruit-quality-detector-jimb:~$ iotedge list
    NAME             STATUS           DESCRIPTION      CONFIG
    ImageClassifier  running          Up 42 minutes    fruitqualitydetectorjimb.azurecr.io/classifier:v1
    edgeAgent        running          Up 42 minutes    mcr.microsoft.com/azureiotedge-agent:1.1
    edgeHub          running          Up 42 minutes    mcr.microsoft.com/azureiotedge-hub:1.1
    
  3. Image classifier मोड्युलको लागि लगहरू जाँच गर्न निम्न कमाण्ड चलाउनुहोस्:

    iotedge logs ImageClassifier
    

    💁 तपाईंलाई यो कमाण्ड sudo प्रयोग गरेर चलाउन आवश्यक हुन सक्छ।

    jim@fruit-quality-detector-jimb:~$ iotedge logs ImageClassifier
    2021-07-05 20:30:15.387144: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2 FMA
    2021-07-05 20:30:15.392185: I tensorflow/core/platform/profile_utils/cpu_utils.cc:94] CPU Frequency: 2394450000 Hz
    2021-07-05 20:30:15.392712: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x55ed9ac83470 executing computations on platform Host. Devices:
    2021-07-05 20:30:15.392806: I tensorflow/compiler/xla/service/service.cc:175]   StreamExecutor device (0): Host, Default Version
    Loading model...Success!
    Loading labels...2 found. Success!
     * Serving Flask app "app" (lazy loading)
     * Environment: production
       WARNING: This is a development server. Do not use it in a production deployment.
       Use a production WSGI server instead.
     * Debug mode: off
     * Running on http://0.0.0.0:80/ (Press CTRL+C to quit)
    

कार्य - इमेज classifier परीक्षण गर्नुहोस्

  1. तपाईं CURL प्रयोग गरेर इमेज classifier परीक्षण गर्न सक्नुहुन्छ, IoT Edge एजेन्ट चलिरहेको कम्प्युटरको IP ठेगाना वा होस्ट नाम प्रयोग गरेर। IP ठेगाना फेला पार्नुहोस्:

  2. तपाईं स्थानीय फाइल प्रयोग गरेर कन्टेनर परीक्षण गर्न निम्न curl कमाण्ड चलाउन सक्नुहुन्छ:

    curl --location \
         --request POST 'http://<IP address or name>/image' \
         --header 'Content-Type: image/png' \
         --data-binary '@<file_Name>' 
    

    <IP address or name> लाई IoT Edge चलिरहेको कम्प्युटरको IP ठेगाना वा होस्ट नामले प्रतिस्थापन गर्नुहोस्। <file_Name> लाई परीक्षण गर्न फाइलको नामले प्रतिस्थापन गर्नुहोस्।

    तपाईं आउटपुटमा भविष्यवाणी परिणामहरू देख्नुहुनेछ:

    {
        "created": "2021-07-05T21:44:39.573181",
        "id": "",
        "iteration": "",
        "predictions": [
            {
                "boundingBox": null,
                "probability": 0.9995615482330322,
                "tagId": "",
                "tagName": "ripe"
            },
            {
                "boundingBox": null,
                "probability": 0.0004384400090202689,
                "tagId": "",
                "tagName": "unripe"
            }
        ],
        "project": ""
    }
    

    💁 यहाँ भविष्यवाणी कुञ्जी प्रदान गर्न आवश्यक छैन, किनभने यो Azure स्रोत प्रयोग गरिरहेको छैन। यसको सट्टा सुरक्षा आन्तरिक नेटवर्कमा आन्तरिक सुरक्षा आवश्यकताहरूको आधारमा कन्फिगर गरिनेछ, सार्वजनिक अन्त बिन्दु र API कुञ्जीमा निर्भर नगरी।

आफ्नो IoT Edge उपकरण प्रयोग गर्नुहोस्

अब तपाईंको Image Classifier IoT Edge उपकरणमा तैनाथ गरिएको छ, तपाईं यसलाई IoT उपकरणबाट प्रयोग गर्न सक्नुहुन्छ।

कार्य - आफ्नो IoT Edge उपकरण प्रयोग गर्नुहोस्

IoT Edge classifier प्रयोग गरेर इमेजहरू वर्गीकृत गर्न सम्बन्धित गाइडमा काम गर्नुहोस्:

मोडेल पुनः प्रशिक्षण

IoT Edge मा इमेज classifiers चलाउने एक कमजोरी भनेको तिनीहरू तपाईंको Custom Vision प्रोजेक्टसँग जडान गरिएको छैन। यदि तपाईं Custom Vision मा Predictions ट्याब हेर्नुहुन्छ भने, तपाईं Edge-आधारित classifier प्रयोग गरेर वर्गीकृत गरिएका इमेजहरू देख्नुहुनेछैन।

यो अपेक्षित व्यवहार हो - इमेजहरू वर्गीकरणको लागि क्लाउडमा पठाइँदैन, त्यसैले तिनीहरू क्लाउडमा उपलब्ध हुने छैनन्। IoT Edge प्रयोग गर्ने एक फाइदा भनेको गोपनीयता हो, सुनिश्चित गर्दै कि इमेजहरू तपाईंको नेटवर्क छोड्दैनन्, अर्को भनेको अफलाइन काम गर्न सक्षम हुनु हो, त्यसैले उपकरणसँग इन्टरनेट जडान नभएको बेला इमेजहरू अपलोड गर्न निर्भरता छैन। कमजोरी भनेको तपाईंको मोडेल सुधार गर्नु हो - तपाईंले इमेजहरू भण्डारण गर्ने अर्को तरिका कार्यान्वयन गर्न आवश्यक हुनेछ जुन म्यानुअली पुनः वर्गीकृत गर्न सकिन्छ र इमेज classifier सुधार गर्न र पुनः प्रशिक्षण गर्न सकिन्छ।

classifier पुनः प्रशिक्षण गर्न इमेजहरू अपलोड गर्ने तरिकाहरूको बारेमा सोच्नुहोस्।


🚀 चुनौती

Edge उपकरणहरूमा AI मोडेलहरू चलाउनु क्लाउडमा भन्दा छिटो हुन सक्छ - नेटवर्क हप छोटो छ। तिनीहरू ढिलो पनि हुन सक्छन् किनभने मोडेल चलाउने हार्डवेयर क्लाउड जत्तिकै शक्तिशाली नहुन सक्छ।

समय लिई तुलना गर्नुहोस् कि तपाईंको edge उपकरणमा कल क्लाउडमा कल भन्दा छिटो वा ढिलो छ? भिन्नता, वा भिन्नता नभएको कारणहरू व्याख्या गर्न सोच्नुहोस्। Edge मा AI मोडेलहरू छिटो चलाउन विशेष हार्डवेयर प्रयोग गर्ने तरिकाहरू अनुसन्धान गर्नुहोस्।

पोस्ट-व्याख्यान क्विज

पोस्ट-व्याख्यान क्विज

समीक्षा र आत्म अध्ययन

असाइनमेन्ट

एजमा अन्य सेवाहरू चलाउनुहोस्


अस्वीकरण:
यो दस्तावेज़ AI अनुवाद सेवा Co-op Translator प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।