# आफ्नो फल डिटेक्टरलाई किनारमा चलाउनुहोस् ![यस पाठको स्केच नोटको अवलोकन](../../../../../translated_images/lesson-17.bc333c3c35ba8e42cce666cfffa82b915f787f455bd94e006aea2b6f2722421a.ne.jpg) > स्केच नोट [नित्या नरसिंहन](https://github.com/nitya) द्वारा। ठूलो संस्करणको लागि तस्बिरमा क्लिक गर्नुहोस्। यो भिडियोले IoT उपकरणहरूमा इमेज क्लासिफायरहरू चलाउने विषयको अवलोकन दिन्छ, जुन यस पाठमा समेटिएको छ। [![Azure IoT Edge मा Custom Vision AI](https://img.youtube.com/vi/_K5fqGLO8us/0.jpg)](https://www.youtube.com/watch?v=_K5fqGLO8us) ## पाठ अघि क्विज [पाठ अघि क्विज](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/33) ## परिचय अघिल्लो पाठमा तपाईंले आफ्नो इमेज क्लासिफायर प्रयोग गरेर पाकेको र नपाकेको फललाई वर्गीकृत गर्नुभयो, जसमा तपाईंको IoT उपकरणको क्यामेराले खिचेको तस्बिरलाई इन्टरनेटमार्फत क्लाउड सेवामा पठाइएको थियो। यी कलहरू समय लाग्छ, खर्च लाग्छ, र तपाईंले प्रयोग गरिरहेको तस्बिर डेटा प्रकारको आधारमा गोपनीयता सम्बन्धी समस्या हुन सक्छ। यस पाठमा तपाईंले किनारमा (edge) मेसिन लर्निङ (ML) मोडेलहरू कसरी चलाउने भन्ने कुरा सिक्नुहुनेछ - क्लाउडमा नभई तपाईंको आफ्नै नेटवर्कमा चल्ने IoT उपकरणहरूमा। तपाईंले किनार कम्प्युटिङ बनाम क्लाउड कम्प्युटिङको फाइदा र कमजोरीहरू, आफ्नो AI मोडेललाई किनारमा कसरी तैनाथ गर्ने, र IoT उपकरणबाट यसलाई कसरी पहुँच गर्ने भन्ने कुरा सिक्नुहुनेछ। यस पाठमा हामीले समेट्नेछौं: * [किनार कम्प्युटिङ](../../../../../4-manufacturing/lessons/3-run-fruit-detector-edge) * [Azure IoT Edge](../../../../../4-manufacturing/lessons/3-run-fruit-detector-edge) * [IoT Edge उपकरण दर्ता गर्नुहोस्](../../../../../4-manufacturing/lessons/3-run-fruit-detector-edge) * [IoT Edge उपकरण सेट अप गर्नुहोस्](../../../../../4-manufacturing/lessons/3-run-fruit-detector-edge) * [आफ्नो मोडेल निर्यात गर्नुहोस्](../../../../../4-manufacturing/lessons/3-run-fruit-detector-edge) * [तैनाथको लागि आफ्नो कन्टेनर तयार गर्नुहोस्](../../../../../4-manufacturing/lessons/3-run-fruit-detector-edge) * [आफ्नो कन्टेनर तैनाथ गर्नुहोस्](../../../../../4-manufacturing/lessons/3-run-fruit-detector-edge) * [आफ्नो IoT Edge उपकरण प्रयोग गर्नुहोस्](../../../../../4-manufacturing/lessons/3-run-fruit-detector-edge) ## किनार कम्प्युटिङ किनार कम्प्युटिङले IoT डेटा प्रशोधन गर्ने कम्प्युटरहरूलाई डेटा उत्पन्न हुने स्थानको नजिकै राख्न समावेश गर्दछ। यो प्रशोधन क्लाउडमा नभई क्लाउडको किनारमा - तपाईंको आन्तरिक नेटवर्कमा सारिन्छ। ![क्लाउडमा इन्टरनेट सेवाहरू र स्थानीय नेटवर्कमा IoT उपकरणहरू देखाउने आर्किटेक्चर चित्र](../../../../../translated_images/cloud-without-edge.b4da641f6022c95ed6b91fde8b5323abd2f94e0d52073ad54172ae8f5dac90e9.ne.png) अहिलेसम्मका पाठहरूमा, तपाईंले उपकरणहरूलाई डेटा संकलन गर्न र क्लाउडमा विश्लेषण गर्न डेटा पठाउन प्रयोग गर्नुभएको छ, क्लाउडमा सर्भरलेस फङ्सनहरू वा AI मोडेलहरू चलाउँदै। ![IoT उपकरणहरू स्थानीय नेटवर्कमा किनार उपकरणहरूसँग जडान गर्दै, र ती किनार उपकरणहरू क्लाउडसँग जडान गर्दै देखाउने आर्किटेक्चर चित्र](../../../../../translated_images/cloud-with-edge.1e26462c62c126fe150bd15a5714ddf0be599f09bacbad08b85be02b76ea1ae1.ne.png) किनार कम्प्युटिङले केही क्लाउड सेवाहरू क्लाउडबाट हटाएर IoT उपकरणहरूसँग एउटै नेटवर्कमा चल्ने कम्प्युटरहरूमा सार्न समावेश गर्दछ, केवल आवश्यक परेमा क्लाउडसँग संवाद गर्दै। उदाहरणका लागि, तपाईं किनार उपकरणहरूमा AI मोडेलहरू चलाएर फलको पाकेको अवस्था विश्लेषण गर्न सक्नुहुन्छ, र क्लाउडमा मात्र एनालिटिक्स पठाउन सक्नुहुन्छ, जस्तै पाकेको फलको संख्या बनाम नपाकेको। ✅ सोच्नुहोस्: तपाईंले अहिलेसम्म निर्माण गरेका IoT अनुप्रयोगहरूमा कुन भागहरू किनारमा सार्न सकिन्छ? ### फाइदाहरू किनार कम्प्युटिङका फाइदाहरू: 1. **गति** - किनार कम्प्युटिङ समय-संवेदनशील डेटा लागि आदर्श हो किनभने कार्यहरू उपकरणसँग एउटै नेटवर्कमा गरिन्छ, इन्टरनेटमार्फत कलहरू नगरी। यसले उच्च गति सक्षम गर्दछ किनभने आन्तरिक नेटवर्कहरू इन्टरनेट जडानहरू भन्दा धेरै छिटो चल्न सक्छन्, डेटा धेरै छोटो दूरीमा यात्रा गर्दै। > 💁 इन्टरनेट जडानहरूको लागि अप्टिकल केबलहरू प्रयोग गर्दा डेटा प्रकाशको गतिमा यात्रा गर्न सक्ने भए पनि, डेटा क्लाउड प्रदायकहरूमा विश्वभर यात्रा गर्न समय लाग्न सक्छ। उदाहरणका लागि, यदि तपाईंले युरोपबाट अमेरिकी क्लाउड सेवाहरूमा डेटा पठाउनुभयो भने, अप्टिकल केबलमा डेटा अटलान्टिक पार गर्न कम्तिमा 28ms लाग्छ, र यो डेटा ट्रान्सअटलान्टिक केबलमा पुर्‍याउन, विद्युतबाट प्रकाश संकेतमा रूपान्तरण गर्न र अर्को पक्षमा पुन: रूपान्तरण गर्न, त्यसपछि क्लाउड प्रदायकमा पुर्‍याउन लाग्ने समयलाई बेवास्ता गर्दै। किनार कम्प्युटिङले कम नेटवर्क ट्राफिक आवश्यक पार्छ, इन्टरनेट जडानको सीमित ब्यान्डविथमा भीडभाडका कारण तपाईंको डेटा सुस्त हुने जोखिम कम गर्दछ। 1. **दूरस्थ पहुँचयोग्यता** - किनार कम्प्युटिङले सीमित वा कुनै जडान नभएको अवस्थामा काम गर्दछ, वा जडानलाई निरन्तर प्रयोग गर्न महँगो हुन्छ। उदाहरणका लागि मानवीय विपद क्षेत्रहरूमा जहाँ पूर्वाधार सीमित छ, वा विकासशील राष्ट्रहरूमा। 1. **कम लागत** - किनार उपकरणमा डेटा संकलन, भण्डारण, विश्लेषण, र कार्यहरू ट्रिगर गर्दा क्लाउड सेवाहरूको प्रयोग कम हुन्छ, जसले तपाईंको IoT अनुप्रयोगको समग्र लागत कम गर्न सक्छ। हालसालै किनार कम्प्युटिङका लागि डिजाइन गरिएका उपकरणहरूको वृद्धि भएको छ, जस्तै [NVIDIA को Jetson Nano](https://developer.nvidia.com/embedded/jetson-nano-developer-kit) जस्ता AI एक्सेलेरेटर बोर्डहरू, जसले GPU-आधारित हार्डवेयर प्रयोग गरेर US$100 भन्दा कम लागतका उपकरणहरूमा AI वर्कलोडहरू चलाउन सक्छ। 1. **गोपनीयता र सुरक्षा** - किनार कम्प्युटिङसँग डेटा तपाईंको नेटवर्कमा रहन्छ र क्लाउडमा अपलोड हुँदैन। यो संवेदनशील र व्यक्तिगत रूपमा पहिचानयोग्य जानकारीको लागि प्रायः रुचाइन्छ, विशेष गरी डेटा विश्लेषण पछि भण्डारण गर्न आवश्यक छैन, जसले डेटा चुहावटको जोखिमलाई धेरै कम गर्दछ। उदाहरणहरूमा चिकित्सा डेटा र सुरक्षा क्यामेरा फुटेज समावेश छन्। 1. **असुरक्षित उपकरणहरूको ह्यान्डलिङ** - यदि तपाईंसँग ज्ञात सुरक्षा कमजोरी भएका उपकरणहरू छन् जसलाई तपाईं आफ्नो नेटवर्क वा इन्टरनेटसँग सिधै जडान गर्न चाहनुहुन्न भने, तपाईं तिनीहरूलाई छुट्टै नेटवर्कमा IoT Edge उपकरण गेटवेमा जडान गर्न सक्नुहुन्छ। यो किनार उपकरणले त्यसपछि तपाईंको व्यापक नेटवर्क वा इन्टरनेटसँग जडान पनि गर्न सक्छ, र डेटा प्रवाहहरू अगाडि र पछाडि व्यवस्थापन गर्न सक्छ। 1. **असंगत उपकरणहरूको समर्थन** - यदि तपाईंसँग IoT Hubसँग जडान गर्न नसक्ने उपकरणहरू छन्, उदाहरणका लागि उपकरणहरू जसले केवल HTTP जडानहरू प्रयोग गर्न सक्छन् वा उपकरणहरू जससँग जडान गर्न केवल ब्लुटुथ छ, तपाईं IoT Edge उपकरणलाई गेटवे उपकरणको रूपमा प्रयोग गर्न सक्नुहुन्छ, IoT Hubमा सन्देशहरू अगाडि बढाउँदै। ✅ अनुसन्धान गर्नुहोस्: किनार कम्प्युटिङका अन्य के फाइदाहरू हुन सक्छन्? ### कमजोरीहरू किनार कम्प्युटिङका कमजोरीहरू छन्, जहाँ क्लाउड प्राथमिक विकल्प हुन सक्छ: 1. **स्केल र लचिलोपन** - क्लाउड कम्प्युटिङले नेटवर्क र डेटा आवश्यकताहरूलाई वास्तविक समयमा समायोजन गर्न सक्छ, सर्भरहरू र अन्य स्रोतहरू थपेर वा घटाएर। थप किनार कम्प्युटरहरू थप्न म्यानुअल रूपमा थप उपकरणहरू आवश्यक पर्छ। 1. **विश्वसनीयता र लचिलोपन** - क्लाउड कम्प्युटिङले बहु स्थानहरूमा बहु सर्भरहरू प्रदान गर्दछ, पुनरावृत्ति र विपद पुन: प्राप्तिको लागि। किनारमा समान स्तरको पुनरावृत्ति गर्न ठूलो लगानी र धेरै कन्फिगरेसन कार्य आवश्यक पर्छ। 1. **मर्मतसम्भार** - क्लाउड सेवा प्रदायकहरूले प्रणाली मर्मतसम्भार र अपडेटहरू प्रदान गर्छन्। ✅ अनुसन्धान गर्नुहोस्: किनार कम्प्युटिङका अन्य के कमजोरीहरू हुन सक्छन्? कमजोरीहरू वास्तवमा क्लाउड प्रयोगको फाइदाहरूको विपरीत हुन् - तपाईंले यी उपकरणहरू आफैं निर्माण र व्यवस्थापन गर्नुपर्छ, क्लाउड प्रदायकहरूको विशेषज्ञता र स्केलमा निर्भर नगरी। किनार कम्प्युटिङको प्रकृतिले केही जोखिमहरू कम गर्छ। उदाहरणका लागि, यदि तपाईंले किनार उपकरणलाई कारखानामा चलाउँदै हुनुहुन्छ जसले मेसिनरीबाट डेटा संकलन गर्छ, तपाईंले केही विपद पुन: प्राप्ति परिदृश्यहरूबारे सोच्न आवश्यक छैन। यदि कारखानामा पावर बन्द हुन्छ भने तपाईंलाई ब्याकअप किनार उपकरणको आवश्यकता छैन किनभने किनार उपकरणले प्रशोधन गर्ने डेटा उत्पन्न गर्ने मेसिनहरू पनि पावर बिना हुनेछन्। IoT प्रणालीहरूको लागि, तपाईंले प्रायः क्लाउड र किनार कम्प्युटिङको मिश्रण चाहनुहुन्छ, प्रणाली, यसको ग्राहकहरू, र यसको मर्मतकर्ताहरूको आवश्यकताहरूको आधारमा प्रत्येक सेवाको लाभ उठाउँदै। ## Azure IoT Edge ![Azure IoT Edge लोगो](../../../../../translated_images/azure-iot-edge-logo.c1c076749b5cba2e8755262fadc2f19ca1146b948d76990b1229199ac2292d79.ne.png) Azure IoT Edge एक सेवा हो जसले तपाईंलाई क्लाउडबाट किनारमा वर्कलोडहरू सार्न मद्दत गर्न सक्छ। तपाईंले उपकरणलाई किनार उपकरणको रूपमा सेट अप गर्नुहुन्छ, र क्लाउडबाट तपाईंले उक्त किनार उपकरणमा कोड तैनाथ गर्न सक्नुहुन्छ। यसले क्लाउड र किनारको क्षमताहरू मिश्रण गर्न अनुमति दिन्छ। > 🎓 *वर्कलोडहरू* कुनै पनि सेवा हो जसले कुनै प्रकारको काम गर्छ, जस्तै AI मोडेलहरू, अनुप्रयोगहरू, वा सर्भरलेस फङ्सनहरू। उदाहरणका लागि, तपाईं क्लाउडमा इमेज क्लासिफायर प्रशिक्षण गर्न सक्नुहुन्छ, त्यसपछि क्लाउडबाट किनार उपकरणमा तैनाथ गर्न सक्नुहुन्छ। तपाईंको IoT उपकरणले तस्बिरहरू किनार उपकरणमा वर्गीकरणको लागि पठाउँछ, इन्टरनेटमार्फत तस्बिरहरू पठाउने होइन। यदि तपाईंलाई मोडेलको नयाँ पुनरावृत्ति तैनाथ गर्न आवश्यक छ भने, तपाईं क्लाउडमा प्रशिक्षण गर्न सक्नुहुन्छ र IoT Edge प्रयोग गरेर किनार उपकरणमा नयाँ पुनरावृत्ति अपडेट गर्न सक्नुहुन्छ। > 🎓 IoT Edge मा तैनाथ गरिएको सफ्टवेयरलाई *मोड्युलहरू* भनिन्छ। डिफल्ट रूपमा IoT Edge मोड्युलहरू चलाउँछ जसले IoT Hubसँग संवाद गर्छ, जस्तै `edgeAgent` र `edgeHub` मोड्युलहरू। जब तपाईं इमेज क्लासिफायर तैनाथ गर्नुहुन्छ, यो थप मोड्युलको रूपमा तैनाथ हुन्छ। IoT Edge IoT Hub मा निर्माण गरिएको छ, त्यसैले तपाईं IoT उपकरणहरू व्यवस्थापन गर्न प्रयोग गर्ने उस्तै सेवाको प्रयोग गरेर किनार उपकरणहरू व्यवस्थापन गर्न सक्नुहुन्छ, उस्तै स्तरको सुरक्षा सहित। IoT Edge *कन्टेनरहरू* बाट कोड चलाउँछ - आत्म-निहित अनुप्रयोगहरू जुन तपाईंको कम्प्युटरमा अन्य अनुप्रयोगहरूबाट अलग चल्छ। जब तपाईं कन्टेनर चलाउनुहुन्छ यो तपाईंको कम्प्युटर भित्र चलिरहेको छुट्टै कम्प्युटर जस्तै काम गर्छ, यसको आफ्नै सफ्टवेयर, सेवाहरू र अनुप्रयोगहरू चलाउँदै। अधिकांश समय कन्टेनरहरूले तपाईंको कम्प्युटरमा केही पनि पहुँच गर्न सक्दैनन् जबसम्म तपाईंले फोल्डर जस्ता चीजहरू कन्टेनरसँग साझेदारी गर्न रोज्नुहुन्न। कन्टेनरले त्यसपछि खुला पोर्टमार्फत सेवाहरू प्रदान गर्दछ जसमा तपाईं जडान गर्न सक्नुहुन्छ वा आफ्नो नेटवर्कमा एक्सपोज गर्न सक्नुहुन्छ। ![कन्टेनरमा पुन: निर्देशित वेब अनुरोध](../../../../../translated_images/container-web-browser.4ee81dd4f0d8838ce622b2a0d600b6a4322b5d4fe43159facd87b7b34f84d66a.ne.png) उदाहरणका लागि, तपाईंसँग पोर्ट 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` मा आधारित अद्वितीय नाम दिनुहोस्। 1. आफ्नो IoT Hub मा `fruit-quality-detector-edge` नामक IoT Edge उपकरण दर्ता गर्नुहोस्। यो गर्नको लागि आदेश गैर-किनार उपकरण दर्ता गर्न प्रयोग गरिएको आदेशसँग मिल्दोजुल्दो छ, तर तपाईंले `--edge-enabled` फ्ल्याग पास गर्नुहुन्छ। ```sh az iot hub device-identity create --edge-enabled \ --device-id fruit-quality-detector-edge \ --hub-name ``` `` लाई आफ्नो IoT Hub को नामले प्रतिस्थापन गर्नुहोस्। 1. आफ्नो उपकरणको लागि जडान स्ट्रिङ प्राप्त गर्न निम्न आदेश प्रयोग गर्नुहोस्: ```sh az iot hub device-identity connection-string show --device-id fruit-quality-detector-edge \ --output table \ --hub-name ``` `` लाई आफ्नो IoT Hub को नामले प्रतिस्थापन गर्नुहोस्। आउटपुटमा देखाइएको जडान स्ट्रिङको प्रतिलिपि लिनुहोस्। ## IoT Edge उपकरण सेट अप गर्नुहोस् एकपटक तपाईंले आफ्नो IoT Hub मा किनार उपकरण दर्ता गर्नुभयो भने, तपाईं किनार उपकरण सेट अप गर्न सक्नुहुन्छ। ### कार्य - IoT Edge Runtime स्थापना गर्नुहोस् र सुरु गर्नुहोस् **IoT Edge Runtime ले केवल Linux कन्टेनरहरू चलाउँछ।** यो Linux मा चलाउन सकिन्छ, वा Windows मा Linux Virtual Machines प्रयोग गरेर। * यदि तपाईं Raspberry Pi लाई आफ्नो IoT उपकरणको रूपमा प्रयोग गर्दै हुनुहुन्छ भने, यसले Linux को समर्थित संस्करण चलाउँछ र IoT Edge Runtime होस्ट गर्न सक्छ। [Microsoft Docs मा Linux को लागि Azure IoT Edge स्थापना गर्ने मार्गदर्शन](https://docs.microsoft.com/azure/iot-edge/how-to-install-iot-edge?WT.mc_id=academic-17441-jabenn) अनुसरण गरेर IoT Edge स्थापना गर्नुहोस् र जडान स्ट्रिङ सेट गर्नुहोस्। > 💁 सम्झनुहोस्, Raspberry Pi OS Debian Linux को भेरियन्ट हो। * यदि तपाईं Raspberry Pi प्रयोग गर्दै हुनुहुन्न, तर Linux कम्प्युटर छ भने, तपाईं IoT Edge Runtime चलाउन सक्नुहुन्छ। [Microsoft Docs मा Linux को लागि Azure IoT Edge स्थापना गर्ने मार्गदर्शन](https://docs.microsoft.com/azure/iot-edge/how-to-install-iot-edge?WT.mc_id=academic-17441-jabenn) अनुसरण गरेर IoT Edge स्थापना गर्नुहोस् र जडान स्ट्रिङ सेट गर्नुहोस्। * यदि तपाईं Windows प्रयोग गर्दै हुनुहुन्छ भने, तपाईं Linux Virtual Machine मा IoT Edge Runtime स्थापना गर्न सक्नुहुन्छ। [Microsoft Docs मा Windows उपकरणमा आफ्नो पहिलो IoT Edge मोड्युल तैनाथ गर्ने क्विकस्टार्टको IoT Edge Runtime स्थापना गर्ने र सुरु गर्ने खण्ड](https://docs.microsoft.com/azure/iot-edge/quickstart?WT.mc_id=academic-17441-jabenn#install-and-start-the-iot-edge-runtime) अनुसरण गर्नुहोस्। तपाईं *मोड्युल तैनाथ गर्नुहोस्* खण्डमा पुग्दा रोक्न सक्नुहुन्छ। * यदि तपाईं macOS प्रयोग गर्दै हुनुहुन्छ भने, तपाईं क्लाउडमा IoT Edge उपकरणको लागि भर्चुअल मेसिन (VM) सिर्जना गर्न सक्नुहुन्छ। यी कम्प्युटरहरू हुन् जुन तपाईं क्लाउडमा सिर्जना गर्न सक्नुहुन्छ र इन्टरनेटमार्फत पहुँच गर्न सक्नुहुन्छ। तपाईं IoT Edge स्थापना भएको Linux VM सिर्जना गर्न सक्नुहुन्छ। [IoT Edge चलिरहेको भर्चुअल मेसिन सिर्जना गर्ने मार्गदर्शन](vm-iotedge.md) अनुसरण गरेर यसलाई कसरी गर्ने भन्ने निर्देशनहरू प्राप्त गर्नुहोस्। ## आफ्नो मोडेल निर्यात गर्नुहोस् किनारमा क्लासिफायर चलाउन, यसलाई Custom Vision बाट निर्यात गर्न आवश्यक छ। Custom Vision दुई प्रकारका मोडेलहरू उत्पन्न गर्न सक्छ - मानक मोडेलहरू र कम्प्याक्ट मोडेलहरू। कम्प्याक्ट मोडेलहरूले मोडेलको आकार घटाउन विभिन्न प्रविधिहरू प्रयोग गर्छन्, यसलाई IoT उपकरणहरूमा डाउनलोड र तैनाथ गर्न पर्याप्त सानो बनाउँछन्। जब तपाईंले इमेज क्लासिफायर सिर्जना गर्नुभयो, तपाईंले *Food* डोमेन प्रयोग गर्नुभयो, जुन खाना तस्बिरहरूमा प्रशिक्षणको लागि अनुकूलित मोडेलको संस्करण हो। Custom Vision मा, तपाईं आफ्नो परियोजनाको डो 1. [CustomVision.ai](https://customvision.ai) मा Custom Vision पोर्टल खोल्नुहोस् र यदि पहिले नै खुला छैन भने साइन इन गर्नुहोस्। त्यसपछि आफ्नो `fruit-quality-detector` प्रोजेक्ट खोल्नुहोस्। 1. **Settings** बटन (⚙ आइकन) चयन गर्नुहोस्। 1. *Domains* सूचीमा, *Food (compact)* चयन गर्नुहोस्। 1. *Export Capabilities* अन्तर्गत, *Basic platforms (Tensorflow, CoreML, ONNX, ...)* चयन गरिएको छ भनेर सुनिश्चित गर्नुहोस्। 1. Settings पृष्ठको तल, **Save Changes** चयन गर्नुहोस्। 1. **Train** बटन प्रयोग गरेर मोडेललाई पुनः प्रशिक्षण गर्नुहोस्, *Quick training* चयन गर्दै। ### कार्य - आफ्नो मोडेल निर्यात गर्नुहोस् मोडेल प्रशिक्षण भएपछि, यसलाई कन्टेनरको रूपमा निर्यात गर्न आवश्यक छ। 1. **Performance** ट्याब चयन गर्नुहोस्, र compact domain प्रयोग गरेर प्रशिक्षण गरिएको आफ्नो पछिल्लो iteration खोज्नुहोस्। 1. माथि **Export** बटन चयन गर्नुहोस्। 1. **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** चयन गर्नुहोस्। 1. फाइलहरू आफ्नो कम्प्युटरमा सुरक्षित गर्नुहोस्, त्यसपछि फोल्डर अनजिप गर्नुहोस्। ## आफ्नो कन्टेनरलाई तैनाथको लागि तयार गर्नुहोस् ![कन्टेनरहरू निर्माण गरिन्छ, त्यसपछि कन्टेनर रजिस्ट्रीमा पठाइन्छ, त्यसपछि IoT Edge प्रयोग गरेर edge device मा तैनाथ गरिन्छ](../../../../../translated_images/container-edge-flow.c246050dd60ceefdb6ace026a4ce5c6aa4112bb5898ae23fbb2ab4be29ae3e1b.ne.png) एकपटक तपाईंले आफ्नो मोडेल डाउनलोड गरेपछि, यसलाई कन्टेनरमा निर्माण गर्न आवश्यक छ, त्यसपछि कन्टेनर रजिस्ट्रीमा पठाउनुहोस् - कन्टेनरहरू भण्डारण गर्न सकिने अनलाइन स्थान। IoT Edge त्यसपछि रजिस्ट्रीबाट कन्टेनर डाउनलोड गर्न सक्छ र यसलाई तपाईंको उपकरणमा पठाउन सक्छ। ![Azure Container Registry लोगो](../../../../../translated_images/azure-container-registry-logo.09494206991d4b295025ebff7d4e2900325e527a59184ffbc8464b6ab59654be.ne.png) यस पाठको लागि तपाईंले प्रयोग गर्ने कन्टेनर रजिस्ट्री Azure Container Registry हो। यो निःशुल्क सेवा होइन, त्यसैले पैसा बचाउन सुनिश्चित गर्नुहोस् कि तपाईं [आफ्नो प्रोजेक्ट सफा गर्नुहोस्](../../../clean-up.md) जब तपाईं समाप्त गर्नुहुन्छ। > 💁 Azure Container Registry प्रयोगको लागत [Azure Container Registry मूल्य निर्धारण पृष्ठ](https://azure.microsoft.com/pricing/details/container-registry/?WT.mc_id=academic-17441-jabenn) मा हेर्न सकिन्छ। ### कार्य - Docker स्थापना गर्नुहोस् Classifier निर्माण र तैनाथ गर्न, तपाईंलाई [Docker](https://www.docker.com/) स्थापना गर्न आवश्यक हुन सक्छ। तपाईंलाई यो केवल त्यतिबेला आवश्यक हुनेछ जब तपाईं IoT Edge स्थापना गरिएको उपकरणबाट फरक उपकरणमा आफ्नो कन्टेनर निर्माण गर्न योजना बनाउनुहुन्छ - IoT Edge स्थापना गर्ने भागको रूपमा, Docker तपाईंको लागि स्थापना गरिएको छ। 1. यदि तपाईं IoT Edge उपकरणबाट फरक उपकरणमा Docker कन्टेनर निर्माण गर्दै हुनुहुन्छ भने, [Docker install page](https://www.docker.com/products/docker-desktop) मा Docker Desktop वा Docker engine स्थापना गर्नका लागि निर्देशनहरू पालना गर्नुहोस्। स्थापना पछि यो चलिरहेको छ भनेर सुनिश्चित गर्नुहोस्। ### कार्य - कन्टेनर रजिस्ट्री स्रोत सिर्जना गर्नुहोस् 1. Azure Container Registry स्रोत सिर्जना गर्न आफ्नो टर्मिनल वा कमाण्ड प्रम्प्टबाट निम्न कमाण्ड चलाउनुहोस्: ```sh az acr create --resource-group fruit-quality-detector \ --sku Basic \ --name ``` `` लाई केवल अक्षर र नम्बरहरू प्रयोग गरेर आफ्नो कन्टेनर रजिस्ट्रीको लागि अद्वितीय नामले प्रतिस्थापन गर्नुहोस्। यसलाई `fruitqualitydetector` वरिपरि आधार बनाउनुहोस्। यो नाम कन्टेनर रजिस्ट्री पहुँच गर्न URL को भाग बन्छ, त्यसैले यो विश्वव्यापी रूपमा अद्वितीय हुनुपर्छ। 1. निम्न कमाण्ड प्रयोग गरेर Azure Container Registry मा लग इन गर्नुहोस्: ```sh az acr login --name ``` `` लाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्। 1. कन्टेनर रजिस्ट्रीलाई एडमिन मोडमा सेट गर्नुहोस् ताकि तपाईं निम्न कमाण्ड प्रयोग गरेर पासवर्ड उत्पन्न गर्न सक्नुहुन्छ: ```sh az acr update --admin-enabled true \ --name ``` `` लाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्। 1. निम्न कमाण्ड प्रयोग गरेर आफ्नो कन्टेनर रजिस्ट्रीको लागि पासवर्ड उत्पन्न गर्नुहोस्: ```sh az acr credential renew --password-name password \ --output table \ --name ``` `` लाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्। `PASSWORD` को मानको प्रतिलिपि लिनुहोस्, किनकि तपाईंलाई यो पछि आवश्यक हुनेछ। ### कार्य - आफ्नो कन्टेनर निर्माण गर्नुहोस् Custom Vision बाट तपाईंले डाउनलोड गर्नुभएको DockerFile हो, जसले कन्टेनर कसरी निर्माण गर्नुपर्छ भन्ने निर्देशनहरू समावेश गर्दछ, साथै एप्लिकेसन कोड जसले कन्टेनर भित्र तपाईंको Custom Vision मोडेल होस्ट गर्न चलाइन्छ, साथै यसलाई कल गर्न REST API। तपाईं Docker प्रयोग गरेर DockerFile बाट ट्याग गरिएको कन्टेनर निर्माण गर्न सक्नुहुन्छ, त्यसपछि यसलाई आफ्नो कन्टेनर रजिस्ट्रीमा पठाउन सक्नुहुन्छ। > 🎓 कन्टेनरहरूलाई ट्याग दिइन्छ जसले तिनीहरूको नाम र संस्करण परिभाषित गर्दछ। जब तपाईंलाई कन्टेनर अपडेट गर्न आवश्यक हुन्छ, तपाईं यसलाई उही ट्याग तर नयाँ संस्करणको साथ निर्माण गर्न सक्नुहुन्छ। 1. आफ्नो टर्मिनल वा कमाण्ड प्रम्प्ट खोल्नुहोस् र Custom Vision बाट डाउनलोड गरिएको अनजिप गरिएको मोडेलमा नेभिगेट गर्नुहोस्। 1. निम्न कमाण्ड चलाएर इमेज निर्माण र ट्याग गर्नुहोस्: ```sh docker build --platform -t .azurecr.io/classifier:v1 . ``` `` लाई यो कन्टेनर चल्ने प्लेटफर्मले प्रतिस्थापन गर्नुहोस्। यदि तपाईं Raspberry Pi मा IoT Edge चलाउँदै हुनुहुन्छ भने, यसलाई `linux/armhf` सेट गर्नुहोस्, अन्यथा यसलाई `linux/amd64` सेट गर्नुहोस्। > 💁 यदि तपाईं यो कमाण्ड IoT Edge चलिरहेको उपकरणबाट चलाउँदै हुनुहुन्छ, जस्तै Raspberry Pi बाट चलाउँदै हुनुहुन्छ भने, तपाईं `--platform ` भागलाई छोड्न सक्नुहुन्छ किनभने यो हालको प्लेटफर्ममा डिफल्ट हुन्छ। `` लाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्। > 💁 यदि तपाईं Linux वा Raspberry Pi OS मा चलाउँदै हुनुहुन्छ भने, तपाईंलाई यो कमाण्ड चलाउन `sudo` प्रयोग गर्न आवश्यक हुन सक्छ। Docker इमेज निर्माण गर्नेछ, आवश्यक सबै सफ्टवेयर कन्फिगर गर्दै। इमेजलाई `classifier:v1` को रूपमा ट्याग गरिनेछ। ```output ➜ 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. निम्न कमाण्ड प्रयोग गरेर आफ्नो कन्टेनरलाई कन्टेनर रजिस्ट्रीमा पठाउनुहोस्: ```sh docker push .azurecr.io/classifier:v1 ``` `` लाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्। > 💁 यदि तपाईं Linux मा चलाउँदै हुनुहुन्छ भने, तपाईंलाई यो कमाण्ड चलाउन `sudo` प्रयोग गर्न आवश्यक हुन सक्छ। कन्टेनर कन्टेनर रजिस्ट्रीमा पठाइनेछ। ```output ➜ 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 ``` 1. पठाइएको पुष्टि गर्न, तपाईं निम्न कमाण्ड प्रयोग गरेर आफ्नो रजिस्ट्रीमा कन्टेनरहरूको सूची हेर्न सक्नुहुन्छ: ```sh az acr repository list --output table \ --name ``` `` लाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्। ```output ➜ d4ccc45da0bb478bad287128e1274c3c.DockerFile.Linux az acr repository list --name fruitqualitydetectorjimb --output table Result ---------- classifier ``` तपाईं आफ्नो classifier सूचीमा देख्नुहुनेछ। ## आफ्नो कन्टेनर तैनाथ गर्नुहोस् अब तपाईंको कन्टेनरलाई तपाईंको IoT Edge उपकरणमा तैनाथ गर्न सकिन्छ। तैनाथ गर्न तपाईंलाई तैनाथ म्यानिफेस्ट परिभाषित गर्न आवश्यक छ - JSON दस्तावेज जसले edge device मा तैनाथ गरिने मोड्युलहरूको सूची बनाउँछ। ### कार्य - तैनाथ म्यानिफेस्ट सिर्जना गर्नुहोस् 1. आफ्नो कम्प्युटरमा कतै `deployment.json` नामक नयाँ फाइल सिर्जना गर्नुहोस्। 1. यस फाइलमा निम्न थप्नुहोस्: ```json { "content": { "modulesContent": { "$edgeAgent": { "properties.desired": { "schemaVersion": "1.1", "runtime": { "type": "docker", "settings": { "minDockerVersion": "v1.25", "loggingOptions": "", "registryCredentials": { "ClassifierRegistry": { "username": "", "password": "", "address": ".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": ".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](../../../../../4-manufacturing/lessons/3-run-fruit-detector-edge/code-deployment/deployment) फोल्डरमा फेला पार्न सक्नुहुन्छ। `` को तीन उदाहरणलाई तपाईंले आफ्नो कन्टेनर रजिस्ट्रीको लागि प्रयोग गरेको नामले प्रतिस्थापन गर्नुहोस्। एउटा `ImageClassifier` मोड्युल सेक्सनमा छ, अन्य दुई `registryCredentials` सेक्सनमा छन्। `registryCredentials` सेक्सनमा `` लाई तपाईंको कन्टेनर रजिस्ट्री पासवर्डले प्रतिस्थापन गर्नुहोस्। 1. आफ्नो तैनाथ म्यानिफेस्ट समावेश गर्ने फोल्डरबाट, निम्न कमाण्ड चलाउनुहोस्: ```sh az iot edge set-modules --device-id fruit-quality-detector-edge \ --content deployment.json \ --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 उपकरणमा जडान गर्न [सफल कन्फिगरेसन पुष्टि गर्ने गाइड](https://docs.microsoft.com/azure/iot-edge/how-to-install-iot-edge-on-windows?WT.mc_id=academic-17441-jabenn&view=iotedge-2018-06&tabs=powershell#verify-successful-configuration) मा चरणहरू पालना गर्नुहोस्। * यदि तपाईं Virtual Machine मा IoT Edge चलाउँदै हुनुहुन्छ भने, तपाईं VM सिर्जना गर्दा सेट गरिएको `adminUsername` र `password` प्रयोग गरेर, र IP ठेगाना वा DNS नाम प्रयोग गरेर मशीनमा SSH गर्न सक्नुहुन्छ: ```sh ssh @ ``` वा: ```sh ssh @ ``` संकेत गरिएको बेला आफ्नो पासवर्ड प्रविष्ट गर्नुहोस्। 1. एकपटक तपाईं जडान भएपछि, IoT Edge मोड्युलहरूको सूची प्राप्त गर्न निम्न कमाण्ड चलाउनुहोस्: ```sh iotedge list ``` > 💁 तपाईंलाई यो कमाण्ड `sudo` प्रयोग गरेर चलाउन आवश्यक हुन सक्छ। तपाईं चलिरहेको मोड्युलहरू देख्नुहुनेछ: ```output 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 ``` 1. Image classifier मोड्युलको लागि लगहरू जाँच गर्न निम्न कमाण्ड चलाउनुहोस्: ```sh iotedge logs ImageClassifier ``` > 💁 तपाईंलाई यो कमाण्ड `sudo` प्रयोग गरेर चलाउन आवश्यक हुन सक्छ। ```output 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 ठेगाना फेला पार्नुहोस्: * यदि तपाईं IoT Edge चलिरहेको उही मशीनमा हुनुहुन्छ भने, तपाईं होस्ट नामको रूपमा `localhost` प्रयोग गर्न सक्नुहुन्छ। * यदि तपाईं VM प्रयोग गर्दै हुनुहुन्छ भने, तपाईं VM को IP ठेगाना वा DNS नाम प्रयोग गर्न सक्नुहुन्छ। * अन्यथा तपाईं IoT Edge चलिरहेको मशीनको IP ठेगाना प्राप्त गर्न सक्नुहुन्छ: * Windows 10 मा, [आफ्नो IP ठेगाना फेला पार्ने गाइड](https://support.microsoft.com/windows/find-your-ip-address-f21a9bbc-c582-55cd-35e0-73431160a1b9?WT.mc_id=academic-17441-jabenn) पालना गर्नुहोस्। * macOS मा, [Mac मा आफ्नो IP ठेगाना कसरी फेला पार्ने गाइड](https://www.hellotech.com/guide/for/how-to-find-ip-address-on-mac) पालना गर्नुहोस्। * Linux मा, [Linux मा आफ्नो IP ठेगाना कसरी फेला पार्ने गाइड](https://opensource.com/article/18/5/how-find-ip-address-linux) को निजी IP ठेगाना फेला पार्ने सेक्सन पालना गर्नुहोस्। 1. तपाईं स्थानीय फाइल प्रयोग गरेर कन्टेनर परीक्षण गर्न निम्न curl कमाण्ड चलाउन सक्नुहुन्छ: ```sh curl --location \ --request POST 'http:///image' \ --header 'Content-Type: image/png' \ --data-binary '@' ``` `` लाई IoT Edge चलिरहेको कम्प्युटरको IP ठेगाना वा होस्ट नामले प्रतिस्थापन गर्नुहोस्। `` लाई परीक्षण गर्न फाइलको नामले प्रतिस्थापन गर्नुहोस्। तपाईं आउटपुटमा भविष्यवाणी परिणामहरू देख्नुहुनेछ: ```output { "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 प्रयोग गरेर इमेजहरू वर्गीकृत गर्न सम्बन्धित गाइडमा काम गर्नुहोस्: * [Arduino - Wio Terminal](wio-terminal.md) * [Single-board computer - Raspberry Pi/Virtual IoT device](single-board-computer.md) ### मोडेल पुनः प्रशिक्षण IoT Edge मा इमेज classifiers चलाउने एक कमजोरी भनेको तिनीहरू तपाईंको Custom Vision प्रोजेक्टसँग जडान गरिएको छैन। यदि तपाईं Custom Vision मा **Predictions** ट्याब हेर्नुहुन्छ भने, तपाईं Edge-आधारित classifier प्रयोग गरेर वर्गीकृत गरिएका इमेजहरू देख्नुहुनेछैन। यो अपेक्षित व्यवहार हो - इमेजहरू वर्गीकरणको लागि क्लाउडमा पठाइँदैन, त्यसैले तिनीहरू क्लाउडमा उपलब्ध हुने छैनन्। IoT Edge प्रयोग गर्ने एक फाइदा भनेको गोपनीयता हो, सुनिश्चित गर्दै कि इमेजहरू तपाईंको नेटवर्क छोड्दैनन्, अर्को भनेको अफलाइन काम गर्न सक्षम हुनु हो, त्यसैले उपकरणसँग इन्टरनेट जडान नभएको बेला इमेजहरू अपलोड गर्न निर्भरता छैन। कमजोरी भनेको तपाईंको मोडेल सुधार गर्नु हो - तपाईंले इमेजहरू भण्डारण गर्ने अर्को तरिका कार्यान्वयन गर्न आवश्यक हुनेछ जुन म्यानुअली पुनः वर्गीकृत गर्न सकिन्छ र इमेज classifier सुधार गर्न र पुनः प्रशिक्षण गर्न सकिन्छ। ✅ classifier पुनः प्रशिक्षण गर्न इमेजहरू अपलोड गर्ने तरिकाहरूको बारेमा सोच्नुहोस्। --- ## 🚀 चुनौती Edge उपकरणहरूमा AI मोडेलहरू चलाउनु क्लाउडमा भन्दा छिटो हुन सक्छ - नेटवर्क हप छोटो छ। तिनीहरू ढिलो पनि हुन सक्छन् किनभने मोडेल चलाउने हार्डवेयर क्लाउड जत्तिकै शक्तिशाली नहुन सक्छ। समय लिई तुलना गर्नुहोस् कि तपाईंको edge उपकरणमा कल क्लाउडमा कल भन्दा छिटो वा ढिलो छ? भिन्नता, वा भिन्नता नभएको कारणहरू व्याख्या गर्न सोच्नुहोस्। Edge मा AI मोडेलहरू छिटो चलाउन विशेष हार्डवेयर प्रयोग गर्ने तरिकाहरू अनुसन्धान गर्नुहोस्। ## पोस्ट-व्याख्यान क्विज [पोस्ट-व्याख्यान क्विज](https://black-meadow-040d15503.1.azurestaticapps.net/quiz/34) ## समीक्षा र आत्म अध्ययन * कन्टेनरहरूको बारेमा थप पढ्नुहोस् [OS-level virtualization page on Wikipedia](https://wikipedia.org/wiki/OS-level_virtualization) मा। * किन ५जीले एज कम्प्युटिङ विस्तार गर्न मद्दत गर्न सक्छ भन्ने कुरामा जोड दिँदै एज कम्प्युटिङबारे थप जानकारी [NetworkWorld को "एज कम्प्युटिङ के हो र किन यो महत्त्वपूर्ण छ?" लेख](https://www.networkworld.com/article/3224893/what-is-edge-computing-and-how-its-changing-the-network.html) मा पढ्नुहोस्। * IoT Edge मा AI सेवाहरू चलाउने बारे थप जान्नको लागि [Microsoft Channel9 को Learn Live मा "एजमा भाषा पहिचान गर्न प्रि-बिल्ट AI सेवा प्रयोग गर्ने तरिका सिक्ने" एपिसोड](https://channel9.msdn.com/Shows/Learn-Live/Sharpen-Your-AI-Edge-Skills-Episode-4-Learn-How-to-Use-Azure-IoT-Edge-on-a-Pre-Built-AI-Service-on-t?WT.mc_id=academic-17441-jabenn) हेर्नुहोस्। ## असाइनमेन्ट [एजमा अन्य सेवाहरू चलाउनुहोस्](assignment.md) --- **अस्वीकरण**: यो दस्तावेज़ AI अनुवाद सेवा [Co-op Translator](https://github.com/Azure/co-op-translator) प्रयोग गरेर अनुवाद गरिएको छ। हामी शुद्धताको लागि प्रयास गर्छौं, तर कृपया ध्यान दिनुहोस् कि स्वचालित अनुवादमा त्रुटिहरू वा अशुद्धताहरू हुन सक्छ। यसको मूल भाषा मा रहेको मूल दस्तावेज़लाई आधिकारिक स्रोत मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानव अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न हुने कुनै पनि गलतफहमी वा गलत व्याख्याको लागि हामी जिम्मेवार हुने छैनौं।