Amazon Kinesis, AWS Glue और Amazon SageMaker प्लेटोब्लॉकचैन डेटा इंटेलिजेंस के साथ एक प्रेडिक्टिव मेंटेनेंस सॉल्यूशन बनाएं। लंबवत खोज। ऐ.

Amazon Kinesis, AWS Glue और Amazon SageMaker के साथ भविष्य कहनेवाला रखरखाव समाधान बनाएं

संगठन विभिन्न प्रकार के उपयोग के मामलों और समस्याओं के लिए मशीन लर्निंग (एमएल)-संचालित समाधानों का निर्माण और उपयोग कर रहे हैं, जिसमें मशीन के पुर्जों का भविष्य कहनेवाला रखरखाव, ग्राहक की प्राथमिकताओं के आधार पर उत्पाद की सिफारिशें, क्रेडिट प्रोफाइलिंग, सामग्री मॉडरेशन, धोखाधड़ी का पता लगाना, और बहुत कुछ शामिल हैं। इनमें से कई परिदृश्यों में, इन एमएल-संचालित समाधानों से प्राप्त प्रभावशीलता और लाभों को और बढ़ाया जा सकता है जब वे निकट-वास्तविक समय में डेटा घटनाओं से अंतर्दृष्टि प्राप्त कर सकते हैं और प्राप्त कर सकते हैं।

यद्यपि व्यावसायिक मूल्य और निकट-वास्तविक समय एमएल-संचालित समाधानों के लाभ अच्छी तरह से स्थापित हैं, इन समाधानों को इष्टतम विश्वसनीयता और प्रदर्शन के साथ बड़े पैमाने पर लागू करने के लिए आवश्यक वास्तुकला जटिल है। यह पोस्ट बताती है कि आप कैसे गठबंधन कर सकते हैं अमेज़ॅन किनिस, एडब्ल्यूएस गोंद, तथा अमेज़न SageMaker भविष्य कहनेवाला रखरखाव के लिए एक निकट-वास्तविक समय सुविधा इंजीनियरिंग और अनुमान समाधान का निर्माण करने के लिए।

केस अवलोकन का उपयोग करें

हम भविष्य कहनेवाला रखरखाव उपयोग के मामले पर ध्यान केंद्रित करते हैं जहां क्षेत्र में तैनात सेंसर (जैसे औद्योगिक उपकरण या नेटवर्क उपकरण) को दोषपूर्ण होने और डाउनटाइम का कारण बनने से पहले उन्हें बदलने या सुधारने की आवश्यकता होती है। डाउनटाइम व्यवसायों के लिए महंगा हो सकता है और खराब ग्राहक अनुभव का कारण बन सकता है। एक एमएल मॉडल द्वारा संचालित भविष्य कहनेवाला रखरखाव भी नियमित शेड्यूल-आधारित रखरखाव चक्रों को बढ़ाने में मदद कर सकता है, जब यह सूचित किया जाता है कि मशीन के हिस्से को अच्छी स्थिति में नहीं बदला जाना चाहिए, इसलिए अनावश्यक लागत से बचना चाहिए।

इस पोस्ट में, हम हवा के तापमान, प्रक्रिया तापमान, रोटेशन की गति, टॉर्क और टूल वियर जैसी सुविधाओं के कारण मशीन की विफलता वाले सिंथेटिक डेटासेट में मशीन लर्निंग को लागू करने पर ध्यान केंद्रित करते हैं। उपयोग किया गया डेटासेट से प्राप्त किया गया है यूसीआई डेटा रिपोजिटरी.

मशीन की विफलता में पांच स्वतंत्र विफलता मोड होते हैं:

  • टूल वियर फेल्योर (TWF)
  • गर्मी अपव्यय विफलता (एचडीएफ)
  • बिजली की विफलता (पीडब्ल्यूएफ)
  • ओवर-स्ट्रेन विफलता (ओएसएफ)
  • यादृच्छिक विफलता (आरएनएफ)

मशीन विफलता लेबल इंगित करता है कि क्या मशीन किसी विशेष डेटा बिंदु के लिए विफल हो गई है यदि पूर्ववर्ती विफलता मोड में से कोई भी सत्य है। यदि विफलता मोड में से कम से कम एक सही है, तो प्रक्रिया विफल हो जाती है और मशीन विफलता लेबल 1 पर सेट हो जाता है। एमएल मॉडल का उद्देश्य मशीन की विफलताओं को सही ढंग से पहचानना है, इसलिए डाउनस्ट्रीम भविष्य कहनेवाला रखरखाव कार्रवाई शुरू की जा सकती है।

समाधान अवलोकन

हमारे भविष्य कहनेवाला रखरखाव उपयोग मामले के लिए, हम मानते हैं कि डिवाइस सेंसर मशीन भागों के बारे में विभिन्न मापों और रीडिंग को स्ट्रीम करते हैं। हमारा समाधान तब हर बार (माइक्रो-बैच) स्ट्रीमिंग डेटा का एक टुकड़ा लेता है, और सुविधाओं को बनाने के लिए प्रसंस्करण और फीचर इंजीनियरिंग करता है। तब बनाई गई सुविधाओं का उपयोग प्रशिक्षित और तैनात एमएल मॉडल से निकट-वास्तविक समय में अनुमान उत्पन्न करने के लिए किया जाता है। उचित कार्रवाई करने और रखरखाव गतिविधि शुरू करने के लिए उत्पन्न अनुमानों को डाउनस्ट्रीम अनुप्रयोगों द्वारा आगे संसाधित और उपभोग किया जा सकता है।

निम्नलिखित आरेख हमारे समग्र समाधान की वास्तुकला को दर्शाता है।

समाधान में मोटे तौर पर निम्नलिखित खंड होते हैं, जिन्हें इस पोस्ट में बाद में विस्तार से समझाया गया है:

  • स्ट्रीमिंग डेटा स्रोत और अंतर्ग्रहण - हम प्रयोग करते हैं अमेज़न Kinesis डेटा स्ट्रीम बड़े पैमाने पर फील्ड सेंसर से स्ट्रीमिंग डेटा एकत्र करना और इसे आगे की प्रक्रिया के लिए उपलब्ध कराना।
  • नियर-रीयल-टाइम फीचर इंजीनियरिंग - हम किनेसिस डेटा स्ट्रीम से डेटा पढ़ने और डेटा प्रोसेसिंग और फीचर इंजीनियरिंग करने के लिए एडब्ल्यूएस ग्लू स्ट्रीमिंग जॉब का उपयोग करते हैं, व्युत्पन्न सुविधाओं को संग्रहीत करने से पहले अमेज़न सरल भंडारण सेवा (अमेज़ॅन एस 3)। Amazon S3 बड़ी मात्रा में डेटा स्टोर करने के लिए एक विश्वसनीय और लागत प्रभावी विकल्प प्रदान करता है।
  • मॉडल प्रशिक्षण और परिनियोजन - हम SageMaker का उपयोग करके XGBoost एल्गोरिथम के आधार पर एक ML मॉडल को प्रशिक्षित करने के लिए UCI डेटा रिपॉजिटरी से AI4I प्रेडिक्टिव मेंटेनेंस डेटासेट का उपयोग करते हैं। फिर हम प्रशिक्षित मॉडल को सेजमेकर एसिंक्रोनस इंट्रेंस एंडपॉइंट पर तैनात करते हैं।
  • निकट-वास्तविक समय एमएल अनुमान - अमेज़ॅन एस 3 में सुविधाएं उपलब्ध होने के बाद, हमें वास्तविक समय में तैनात मॉडल से अनुमान उत्पन्न करने की आवश्यकता है। सेजमेकर एसिंक्रोनस इंट्रेंस एंडपॉइंट इस आवश्यकता के लिए अच्छी तरह से अनुकूल हैं क्योंकि वे बड़े पेलोड आकार (1 जीबी तक) का समर्थन करते हैं और मिनटों के भीतर (अधिकतम 15 मिनट तक) अनुमान उत्पन्न कर सकते हैं। हम एक चलाने के लिए S3 घटना सूचनाओं का उपयोग करते हैं AWS लाम्बा एक सेजमेकर एसिंक्रोनस इंट्रेंस एंडपॉइंट को लागू करने के लिए कार्य करता है। सेजमेकर एसिंक्रोनस इंट्रेंस एंडपॉइंट्स इनपुट के रूप में S3 स्थानों को स्वीकार करते हैं, तैनात मॉडल से इंफरेंस उत्पन्न करते हैं, और इन इनफरेंस को लगभग वास्तविक समय में Amazon S3 पर वापस लिख देते हैं।

इस समाधान के लिए स्रोत कोड पर स्थित है GitHub. समाधान का परीक्षण किया गया है और इसे us-east-1 में चलाया जाना चाहिए।

हम एक का उपयोग करें एडब्ल्यूएस CloudFormation टेम्पलेट, का उपयोग कर तैनात किया गया AWS सर्वर रहित अनुप्रयोग मॉडल (एडब्ल्यूएस एसएएम), और सेजमेकर नोटबुक समाधान को परिनियोजित करने के लिए।

.. पूर्वापेक्षाएँ

आरंभ करने के लिए, एक पूर्वापेक्षा के रूप में, आपके पास होना चाहिए सैम क्लि, अजगर 3, तथा रंज स्थापित। आपके पास भी होना चाहिए AWS कमांड लाइन इंटरफ़ेस (एडब्ल्यूएस सीएलआई) ठीक से कॉन्फ़िगर किया गया।

समाधान तैनात करें

आप का उपयोग कर सकते हैं एडब्ल्यूएस क्लाउडशेल इन चरणों को चलाने के लिए। CloudShell एक ब्राउज़र-आधारित शेल है जो आपके कंसोल क्रेडेंशियल के साथ पूर्व-प्रमाणित है और इसमें पूर्व-स्थापित सामान्य विकास और संचालन उपकरण (जैसे AWS SAM, AWS CLI, और Python) शामिल हैं। इसलिए, कोई स्थानीय स्थापना या कॉन्फ़िगरेशन की आवश्यकता नहीं है।

  • हम एक S3 बकेट बनाकर शुरू करते हैं जहां हम अपने AWS ग्लू स्ट्रीमिंग जॉब के लिए स्क्रिप्ट स्टोर करते हैं। एक नया बकेट बनाने के लिए अपने टर्मिनल में निम्न कमांड चलाएँ:
aws s3api create-bucket --bucket sample-script-bucket-$RANDOM --region us-east-1

  • बनाई गई बाल्टी का नाम नोट कर लें।

एमएल-9132 समाधान आर्क

  • इसके बाद, हम स्थानीय रूप से कोड रिपॉजिटरी को क्लोन करते हैं, जिसमें स्टैक को तैनात करने के लिए CloudFormation टेम्प्लेट होता है। अपने टर्मिनल में निम्न आदेश चलाएँ:
git clone https://github.com/aws-samples/amazon-sagemaker-predictive-maintenance

  • सैम-टेम्पलेट निर्देशिका पर नेविगेट करें:
cd amazon-sagemaker-predictive-maintenance/sam-template

एमएल-9132 गिट क्लोन रेपो

  • आपके द्वारा बनाए गए S3 बकेट में AWS ग्लू जॉब स्क्रिप्ट (glu_streaming/app.py से) को कॉपी करने के लिए निम्न कमांड चलाएँ:
aws s3 cp glue_streaming/app.py s3://sample-script-bucket-30232/glue_streaming/app.py

ML-9132 कॉपी ग्लू स्क्रिप्ट

  • अब आप AWS SAM के माध्यम से CloudFormation टेम्पलेट के माध्यम से समाधान के निर्माण और परिनियोजन के साथ आगे बढ़ सकते हैं। निम्न आदेश चलाएँ:

एमएल-9132 सैम बिल्ड

sam deploy --guided

  • परिनियोजन के लिए तर्क प्रदान करें जैसे कि स्टैक का नाम, पसंदीदा AWS क्षेत्र (us-east-1), और GlueScriptsBucket.

सुनिश्चित करें कि आप वही S3 बकेट प्रदान करते हैं जो आपने पहले AWS ग्लू स्क्रिप्ट S3 बकेट (पैरामीटर .) के लिए बनाया था GlueScriptsBucket निम्नलिखित स्क्रीनशॉट में)।

एमएल-9132 एसएएम परम तैनात करें

आपके द्वारा आवश्यक तर्क प्रदान करने के बाद, AWS SAM स्टैक परिनियोजन प्रारंभ करता है। निम्न स्क्रीनशॉट बनाए गए संसाधनों को दिखाता है।

एमएल-9132 एसएएम तैनात

स्टैक सफलतापूर्वक तैनात होने के बाद, आपको निम्न संदेश देखना चाहिए।

एमएल-9132 एसएएम सीएफ तैनात

  • AWS CloudFormation कंसोल पर, स्टैक खोलें (इस पोस्ट के लिए, nrt-streaming-inference) जो CloudFormation टेम्पलेट को परिनियोजित करते समय प्रदान किया गया था।
  • पर उपयुक्त संसाधन चुनें टैब, सेजमेकर नोटबुक इंस्टेंस आईडी नोट करें।
  1. ML-9132 SM नोटबुक निर्मित
  • सेजमेकर कंसोल पर, इस इंस्टेंस को खोलें।

एमएल-9132 छवि018

सेजमेकर नोटबुक इंस्टेंस में पहले से ही आवश्यक नोटबुक्स पहले से लोड हैं।

नोटबुक्स फ़ोल्डर में नेविगेट करें और नोटबुक्स के भीतर निर्देशों को खोलें और उनका पालन करें (Data_Pre-Processing.ipynb और ModelTraining-Evaluation-and-Deployment.ipynb) डेटासेट का पता लगाने, प्रीप्रोसेसिंग और फीचर इंजीनियरिंग करने के लिए, और मॉडल को सेजमेकर एसिंक्रोनस इंट्रेंस एंडपॉइंट पर प्रशिक्षित और तैनात करने के लिए।

ML-9132 SM नोटबुक खोलें

स्ट्रीमिंग डेटा स्रोत और अंतर्ग्रहण

Kinesis डेटा स्ट्रीम एक सर्वर रहित, स्केलेबल और टिकाऊ रीयल-टाइम डेटा स्ट्रीमिंग सेवा है जिसका उपयोग आप वास्तविक समय में डेटा रिकॉर्ड की बड़ी स्ट्रीम को एकत्रित और संसाधित करने के लिए कर सकते हैं। Kinesis डेटा स्ट्रीम विभिन्न स्रोतों से डेटा स्ट्रीम को कैप्चर करने, संसाधित करने और संग्रहीत करने में सक्षम बनाता है, जैसे कि IT इन्फ्रास्ट्रक्चर लॉग डेटा, एप्लिकेशन लॉग, सोशल मीडिया, मार्केट डेटा फीड, वेब क्लिकस्ट्रीम डेटा, IoT डिवाइस और सेंसर, और बहुत कुछ। आप थ्रूपुट और स्केलिंग आवश्यकताओं के आधार पर ऑन-डिमांड मोड या प्रोविज़न मोड में एक किनेसिस डेटा स्ट्रीम का प्रावधान कर सकते हैं। अधिक जानकारी के लिए देखें डेटा स्ट्रीम क्षमता मोड चुनना.

हमारे उपयोग के मामले के लिए, हम मानते हैं कि विभिन्न सेंसर डेटा स्ट्रीम में तापमान, रोटेशन की गति, टोक़ और टूल वियर जैसे माप भेज रहे हैं। Kinesis डेटा स्ट्रीम डेटा स्ट्रीम एकत्र करने और निगलने के लिए फ़नल के रूप में कार्य करता है।

हम उपयोग अमेज़ॅन किनेसिस डेटा जेनरेटर (केडीजी) बाद में इस पोस्ट में सेंसर द्वारा उत्पन्न किए जा रहे डेटा का अनुकरण करते हुए, काइनिस डेटा स्ट्रीम में डेटा उत्पन्न करने और भेजने के लिए। डेटा स्ट्रीम सेंसर-डेटा-स्ट्रीम के डेटा को AWS ग्लू स्ट्रीमिंग जॉब का उपयोग करके अंतर्ग्रहण और संसाधित किया जाता है, जिसकी चर्चा हम आगे करते हैं।

नियर-रीयल-टाइम फ़ीचर इंजीनियरिंग

एडब्ल्यूएस गोंद स्ट्रीमिंग नौकरियां कंप्यूटिंग वातावरण को प्रबंधित करने की आवश्यकता के बिना, बड़े पैमाने पर स्ट्रीमिंग डेटा को संसाधित करने का एक सुविधाजनक तरीका प्रदान करें। AWS Glue आपको लगातार चलने वाली नौकरियों का उपयोग करके स्ट्रीमिंग डेटा पर एक्सट्रेक्ट, ट्रांसफ़ॉर्म और लोड (ETL) संचालन करने की अनुमति देता है। एडब्ल्यूएस ग्लू स्ट्रीमिंग ईटीएल अपाचे स्पार्क स्ट्रक्चर्ड स्ट्रीमिंग इंजन पर बनाया गया है, और किनेसिस, अपाचे काफ्का, और Apache Kafka के लिए Amazon प्रबंधित स्ट्रीमिंग (अमेज़ॅन एमएसके)।

स्ट्रीमिंग ईटीएल जॉब एडब्ल्यूएस ग्लू बिल्ट-इन ट्रांसफॉर्म और ट्रांसफॉर्म दोनों का उपयोग कर सकता है जो अपाचे स्पार्क स्ट्रक्चर्ड स्ट्रीमिंग के मूल हैं। आप स्पार्क एमएल का भी उपयोग कर सकते हैं और एमएलएलआईबी आसानी से उपलब्ध सहायक पुस्तकालयों का उपयोग करके आसान सुविधा प्रसंस्करण के लिए एडब्ल्यूएस गोंद नौकरियों में पुस्तकालय।

यदि स्ट्रीमिंग डेटा स्रोत का स्कीमा पूर्व-निर्धारित है, तो आप इसे AWS डेटा कैटलॉग तालिका में निर्दिष्ट कर सकते हैं। यदि स्कीमा परिभाषा पहले से निर्धारित नहीं की जा सकती है, तो आप स्ट्रीमिंग ईटीएल जॉब में स्कीमा डिटेक्शन को सक्षम कर सकते हैं। नौकरी तब आने वाले डेटा से स्कीमा को स्वचालित रूप से निर्धारित करती है। इसके अतिरिक्त, आप का उपयोग कर सकते हैं एडब्ल्यूएस गोंद स्कीमा रजिस्ट्री डेटा स्ट्रीम स्कीमा की केंद्रीय खोज, नियंत्रण और विकास की अनुमति देने के लिए। डेटा कैटलॉग में AWS ग्लू टेबल या विभाजन बनाते या अपडेट करते समय आप स्कीमा रजिस्ट्री को डेटा कैटलॉग के साथ वैकल्पिक रूप से स्कीमा रजिस्ट्री में संग्रहीत स्कीमा का उपयोग करने के लिए एकीकृत कर सकते हैं।

इस पोस्ट के लिए, हम एक AWS ग्लू डेटा कैटलॉग टेबल बनाते हैं (sensor-stream) स्रोत के रूप में हमारे Kinesis डेटा स्ट्रीम के साथ और हमारे सेंसर डेटा के लिए स्कीमा को परिभाषित करें।

हम Kinesis से स्ट्रीमिंग डेटा को पढ़ने के लिए डेटा कैटलॉग तालिका से AWS Glue डायनामिक डेटाफ़्रेम बनाते हैं। हम निम्नलिखित विकल्प भी निर्दिष्ट करते हैं:

  • 60 सेकंड का एक विंडो आकार, ताकि AWS ग्लू जॉब 60-सेकंड की विंडो में डेटा को पढ़ और संसाधित कर सके
  • प्रारंभिक स्थिति TRIM_HORIZON, Kinesis डेटा स्ट्रीम में सबसे पुराने रिकॉर्ड से पढ़ने की अनुमति देने के लिए

हम स्पार्क एमएललिब का भी उपयोग करते हैं स्ट्रिंग इंडेक्सर स्ट्रिंग कॉलम प्रकार को लेबल इंडेक्स में एन्कोड करने के लिए फीचर ट्रांसफॉर्मर। यह परिवर्तन स्पार्क एमएल पाइपलाइनों का उपयोग करके कार्यान्वित किया जाता है। स्पार्क एमएल पाइपलाइन एमएल एल्गोरिदम के लिए उच्च-स्तरीय एपीआई का एक समान सेट प्रदान करें ताकि एकाधिक एल्गोरिदम को एक पाइपलाइन या वर्कफ़्लो में जोड़ना आसान हो सके।

हम प्रोसेसबैच नामक फ़ंक्शन को लागू करने के लिए foreachBatch API का उपयोग करते हैं, जो बदले में इस डेटाफ़्रेम द्वारा संदर्भित डेटा को संसाधित करता है। निम्नलिखित कोड देखें:

# Read from Kinesis Data Stream
sourceStreamData = glueContext.create_data_frame.from_catalog(database = "sensordb", table_name = "sensor-stream", transformation_ctx = "sourceStreamData", additional_options = {"startingPosition": "TRIM_HORIZON"})
type_indexer = StringIndexer(inputCol="type", outputCol="type_enc", stringOrderType="alphabetAsc")
pipeline = Pipeline(stages=[type_indexer])
glueContext.forEachBatch(frame = sourceStreamData, batch_function = processBatch, options = {"windowSize": "60 seconds", "checkpointLocation": checkpoint_location})

फ़ंक्शन प्रोसेसबैच वर्ष, महीने, दिन और बैच आईडी के आधार पर अमेज़ॅन एस 3 में निर्दिष्ट परिवर्तन और डेटा को विभाजित करता है।

Amazon S3 में बहुत अधिक छोटी फ़ाइलें होने से बचने के लिए, हम AWS ग्लू विभाजन को एक एकल विभाजन में पुनः विभाजित करते हैं। कई छोटी फाइलें पढ़ने के प्रदर्शन को बाधित कर सकती हैं, क्योंकि यह प्रत्येक फाइल को खोजने, खोलने और पढ़ने से संबंधित ओवरहेड को बढ़ाती है। हम अंत में S3 बकेट के भीतर एक उपसर्ग (सुविधाओं) में अनुमान उत्पन्न करने के लिए सुविधाएँ लिखते हैं। निम्नलिखित कोड देखें:

# Function that gets called to perform processing, feature engineering and writes to S3 for every micro batch of streaming data from Kinesis.
def processBatch(data_frame, batchId):
transformer = pipeline.fit(data_frame)
now = datetime.datetime.now()
year = now.year
month = now.month
day = now.day
hour = now.hour
minute = now.minute
if (data_frame.count() > 0):
data_frame = transformer.transform(data_frame)
data_frame = data_frame.drop("type")
data_frame = DynamicFrame.fromDF(data_frame, glueContext, "from_data_frame")
data_frame.printSchema()
# Write output features to S3
s3prefix = "features" + "/year=" + "{:0>4}".format(str(year)) + "/month=" + "{:0>2}".format(str(month)) + "/day=" + "{:0>2}".format(str(day)) + "/hour=" + "{:0>2}".format(str(hour)) + "/min=" + "{:0>2}".format(str(minute)) + "/batchid=" + str(batchId)
s3path = "s3://" + out_bucket_name + "/" + s3prefix + "/"
print("-------write start time------------")
print(str(datetime.datetime.now()))
data_frame = data_frame.toDF().repartition(1)
data_frame.write.mode("overwrite").option("header",False).csv(s3path)
print("-------write end time------------")
print(str(datetime.datetime.now()))

मॉडल प्रशिक्षण और तैनाती

सेजमेकर पूरी तरह से प्रबंधित और एकीकृत एमएल सेवा है जो डेटा वैज्ञानिकों और एमएल इंजीनियरों को एमएल मॉडल बनाने, प्रशिक्षित करने और तैनात करने में सक्षम बनाता है।

Data_Pre-Processing.ipynb नोटबुक के भीतर, हम पहले यूसीआई डेटा रिपोजिटरी से एआई4आई प्रेडिक्टिव मेंटेनेंस डेटासेट आयात करते हैं और खोजपूर्ण डेटा विश्लेषण (ईडीए) करते हैं। हम मॉडल के प्रशिक्षण के लिए अपनी सुविधाओं को और अधिक उपयोगी बनाने के लिए फीचर इंजीनियरिंग भी करते हैं।

उदाहरण के लिए, डेटासेट के भीतर, हमारे पास टाइप नाम की एक विशेषता है, जो उत्पाद के गुणवत्ता प्रकार को एल (निम्न), एम (मध्यम), या एच (उच्च) के रूप में दर्शाती है। चूंकि यह एक स्पष्ट विशेषता है, इसलिए हमें अपने मॉडल को प्रशिक्षित करने से पहले इसे एन्कोड करना होगा। हम इसे प्राप्त करने के लिए स्किकिट-लर्न के लेबलएनकोडर का उपयोग करते हैं:

from sklearn.preprocessing import LabelEncoder
type_encoder = LabelEncoder()
type_encoder.fit(origdf['type'])
type_values = type_encoder.transform(origdf['type'])

सुविधाओं के संसाधित होने और क्यूरेटेड ट्रेन और परीक्षण डेटासेट उत्पन्न होने के बाद, हम यह अनुमान लगाने के लिए एक एमएल मॉडल को प्रशिक्षित करने के लिए तैयार हैं कि मशीन विफल हुई या नहीं, सिस्टम रीडिंग के आधार पर। हम SageMaker बिल्ट-इन एल्गोरिथम का उपयोग करके XGBoost मॉडल को प्रशिक्षित करते हैं। एक्सजीबूस्ट प्रशिक्षण नमूने सीमित होने पर भी वर्गीकरण सहित कई प्रकार की एमएल समस्याओं के लिए अच्छे परिणाम प्रदान कर सकते हैं।

सेजमेकर प्रशिक्षण नौकरियां सेजमेकर पर एमएल मॉडल को प्रशिक्षित करने के लिए एक शक्तिशाली और लचीला तरीका प्रदान करें। सेजमेकर अंतर्निहित कंप्यूट इंफ्रास्ट्रक्चर का प्रबंधन करता है और प्रदान करता है कई विकल्प उपयोग के मामले के आधार पर विविध मॉडल प्रशिक्षण आवश्यकताओं के लिए चुनने के लिए।

xgb = sagemaker.estimator.Estimator(container,
role,
instance_count=1,
instance_type='ml.c4.4xlarge',
output_path=xgb_upload_location,
sagemaker_session=sagemaker_session)
xgb.set_hyperparameters(max_depth=5,
eta=0.2,
gamma=4,
min_child_weight=6,
subsample=0.8,
silent=0,
objective='binary:hinge',
num_round=100)

xgb.fit({'train': s3_train_channel, 'validation': s3_valid_channel})

जब मॉडल प्रशिक्षण पूरा हो जाता है और व्यावसायिक आवश्यकताओं के आधार पर मॉडल मूल्यांकन संतोषजनक होता है, तो हम मॉडल परिनियोजन शुरू कर सकते हैं। हम पहले AsyncInferenceConfig ऑब्जेक्ट विकल्प के साथ एक एंडपॉइंट कॉन्फ़िगरेशन बनाते हैं और पहले प्रशिक्षित मॉडल का उपयोग करते हैं:

endpoint_config_name = resource_name.format("EndpointConfig")
create_endpoint_config_response = sm_client.create_endpoint_config(
EndpointConfigName=endpoint_config_name,
ProductionVariants=[
{
"VariantName": "variant1",
"ModelName": model_name,
"InstanceType": "ml.m5.xlarge",
"InitialInstanceCount": 1,
}
],
AsyncInferenceConfig={
"OutputConfig": {
"S3OutputPath": f"s3://{bucket}/{prefix}/output",
#Specify Amazon SNS topics
"NotificationConfig": {
"SuccessTopic": "arn:aws:sns:<region>:<account-id>:<success-sns-topic>",
"ErrorTopic": "arn:aws:sns:<region>:<account-id>:<error-sns-topic>",
}},
"ClientConfig": {"MaxConcurrentInvocationsPerInstance": 4},
},)

फिर हम अपने द्वारा बनाए गए एंडपॉइंट कॉन्फ़िगरेशन का उपयोग करके एक सेजमेकर एसिंक्रोनस इंट्रेंस एंडपॉइंट बनाते हैं। इसके प्रावधान के बाद, हम अतुल्यकालिक रूप से निष्कर्ष उत्पन्न करने के लिए समापन बिंदु को लागू करना शुरू कर सकते हैं।

endpoint_name = resource_name.format("Endpoint")
create_endpoint_response = sm_client.create_endpoint(
EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name)

निकट-वास्तविक समय अनुमान

SageMaker अतुल्यकालिक अनुमान समापन बिंदु आने वाले अनुमान अनुरोधों को कतारबद्ध करने और उन्हें निकट-वास्तविक समय में अतुल्यकालिक रूप से संसाधित करने की क्षमता प्रदान करते हैं। यह उन अनुप्रयोगों के लिए आदर्श है जिनके पास बड़े पेलोड आकार (1 जीबी तक) के साथ अनुमान अनुरोध हैं, जिन्हें लंबे समय तक प्रसंस्करण समय (15 मिनट तक) की आवश्यकता हो सकती है, और निकट-वास्तविक समय विलंबता आवश्यकताएं हैं। एसिंक्रोनस इंफ़ेक्शन आपको प्रक्रिया के लिए कोई अनुरोध नहीं होने पर इंस्टेंस काउंट को शून्य पर ऑटो स्केल करके लागतों को बचाने में सक्षम बनाता है, इसलिए आप केवल तभी भुगतान करते हैं जब आपका एंडपॉइंट अनुरोधों को संसाधित कर रहा हो।

आप एक सेजमेकर एसिंक्रोनस इंट्रेंस एंडपॉइंट बना सकते हैं, जैसा कि आप रियल-टाइम इंट्रेंस एंडपॉइंट कैसे बनाते हैं और इसके अतिरिक्त निर्दिष्ट करते हैं AsyncInferenceConfig ऑब्जेक्ट, CreateEndpointConfig API में EndpointConfig फ़ील्ड के साथ अपना एंडपॉइंट कॉन्फ़िगरेशन बनाते समय। निम्न आरेख अनुमान वर्कफ़्लो दिखाता है और कैसे एक अतुल्यकालिक निष्कर्ष समापन बिंदु एक अनुमान उत्पन्न करता है।

एमएल-9132 सेजमेकर एसिच आर्क

अतुल्यकालिक निष्कर्ष समापन बिंदु को लागू करने के लिए, अनुरोध पेलोड को Amazon S3 में संग्रहीत किया जाना चाहिए और इस पेलोड के संदर्भ को InvokeEndpointAsync अनुरोध के हिस्से के रूप में प्रदान करने की आवश्यकता है। आह्वान पर, सेजमेकर प्रसंस्करण के लिए अनुरोध को कतारबद्ध करता है और प्रतिक्रिया के रूप में एक पहचानकर्ता और आउटपुट स्थान देता है। प्रसंस्करण पर, सेजमेकर परिणाम को अमेज़ॅन एस 3 स्थान पर रखता है। आप वैकल्पिक रूप से सफलता या त्रुटि सूचनाएं प्राप्त करना चुन सकते हैं अमेज़न सरल अधिसूचना सेवा (अमेज़ॅन एसएनएस)।

एंड-टू-एंड समाधान का परीक्षण करें

समाधान का परीक्षण करने के लिए, निम्न चरणों को पूरा करें:

  • AWS CloudFormation कंसोल पर, आपके द्वारा पहले बनाए गए स्टैक को खोलें (nrt-streaming-inference).
  • पर आउटपुट टैब, S3 बकेट का नाम कॉपी करें (EventsBucket).

यह S3 बकेट है जिसमें हमारा AWS ग्लू स्ट्रीमिंग जॉब किनेसिस डेटा स्ट्रीम से पढ़ने और संसाधित करने के बाद सुविधाएँ लिखता है।

ML-9132 S3 इवेंट बकेट

इसके बाद, हम इस S3 बकेट के लिए ईवेंट नोटिफिकेशन सेट करते हैं।

  • Amazon S3 कंसोल पर, बकेट पर नेविगेट करें EventsBucket.
  • पर गुण टैब में घटना सूचनाएं अनुभाग चुनते हैं, घटना सूचना बनाएँ.

ML-9132 S3 इवेंट बकेट प्रॉपर्टीज

ML-9132 S3 इवेंट बकेट नोटिफिकेशन

  • के लिए कार्यक्रम नाम, दर्ज invoke-endpoint-lambda.
  • के लिए उपसर्ग, दर्ज features/.
  • के लिए प्रत्यय, दर्ज .csv.
  • के लिए घटना प्रकार, चुनते हैं सभी ऑब्जेक्ट ईवेंट बनाते हैं.

ML-9132 S3 इवेंट बकेट नोटिफिकेशन कॉन्फिगर
ML-9132 S3 इवेंट बकेट नोटिफिकेशन कॉन्फिगर

  • के लिए गंतव्य, चुनते हैं लैम्ब्डा फ़ंक्शन.
  • के लिए लैम्ब्डा फ़ंक्शन, और फ़ंक्शन चुनें invoke-endpoint-asynch.
  • चुनें परिवर्तन सहेजें.

ML-9132 S3 इवेंट बकेट नोटिफिकेशन कॉन्फिग लैम्ब्डा

  • एडब्ल्यूएस गोंद कंसोल पर, कार्य खोलें GlueStreaming-Kinesis-S3.
  • चुनें नौकरी चलाते हैं.

ML-9132 रन ग्लू जॉब

इसके बाद हम अपने किनेसिस डेटा स्ट्रीम में डेटा भेजने वाले सेंसर का अनुकरण करने के लिए किनेसिस डेटा जेनरेटर (केडीजी) का उपयोग करते हैं। यदि आप पहली बार केडीजी का उपयोग कर रहे हैं, तो देखें अवलोकन प्रारंभिक सेटअप के लिए। KDG उपयोगकर्ता बनाने के लिए CloudFormation टेम्पलेट प्रदान करता है और Kinesis को ईवेंट भेजने के लिए KDG का उपयोग करने के लिए पर्याप्त अनुमतियाँ प्रदान करता है। चलाएँ CloudFormation टेम्पलेट AWS खाते के भीतर जिसका उपयोग आप इस पोस्ट में समाधान बनाने के लिए कर रहे हैं। केडीजी की स्थापना के बाद, लॉग इन करें और केडीजी तक पहुंचें और परीक्षण घटनाओं को हमारे किनेसिस डेटा स्ट्रीम में भेजें।

  • उस क्षेत्र का उपयोग करें जिसमें आपने किनेसिस डेटा स्ट्रीम (us-east-1) बनाया है।
  • ड्रॉप-डाउन मेनू पर, डेटा स्ट्रीम चुनें sensor-data-stream.
  • में रिकॉर्ड प्रति सेकंड अनुभाग चुनें स्थिर और 100 दर्ज करें।
  • सभी का चयन रद्द रिकॉर्ड्स को संपीड़ित करें.
  • के लिए रिकॉर्ड टेम्पलेट, निम्न टेम्पलेट का उपयोग करें:
{
"air_temperature": {{random.number({"min":295,"max":305, "precision":0.01})}},
"process_temperature": {{random.number({"min":305,"max":315, "precision":0.01})}},
"rotational_speed": {{random.number({"min":1150,"max":2900})}},
"torque": {{random.number({"min":3,"max":80, "precision":0.01})}},
"tool_wear": {{random.number({"min":0,"max":250})}},
"type": "{{random.arrayElement(["L","M","H"])}}"
}

  • क्लिक करें डेटा भेजें Kinesis डेटा स्ट्रीम में डेटा भेजना शुरू करने के लिए।

ML-9132 Kineses डेटा Gen

AWS ग्लू स्ट्रीमिंग जॉब प्रदान किए गए विंडो आकार के आधार पर Kinesis डेटा स्ट्रीम से डेटा का एक माइक्रो-बैच (सेंसर रीडिंग का प्रतिनिधित्व करता है) पढ़ता है और निकालता है। स्ट्रीमिंग कार्य तब विभाजन से पहले इस माइक्रो-बैच पर फीचर इंजीनियरिंग को संसाधित और निष्पादित करता है और इसे S3 बाल्टी के भीतर उपसर्ग सुविधाओं में लिखता है।

चूंकि AWS ग्लू स्ट्रीमिंग जॉब द्वारा बनाई गई नई सुविधाएँ S3 बकेट में लिखी जाती हैं, एक लैम्ब्डा फ़ंक्शन (invoke-endpoint-asynch) ट्रिगर किया गया है, जो हमारे तैनात एमएल मॉडल से निष्कर्ष प्राप्त करने के लिए एक आमंत्रण अनुरोध भेजकर एक सेजमेकर एसिंक्रोनस इंट्रेंस एंडपॉइंट को आमंत्रित करता है। एसिंक्रोनस इनवेंशन एंडपॉइंट एसिंक्रोनस इनवोकेशन के लिए अनुरोध करता है। जब प्रसंस्करण पूरा हो जाता है, तो सेजमेकर अमेज़ॅन एस 3 स्थान में अनुमान परिणामों को संग्रहीत करता है (S3OutputPath) जो एसिंक्रोनस इंट्रेंस एंडपॉइंट कॉन्फ़िगरेशन के दौरान निर्दिष्ट किया गया था।

हमारे उपयोग के मामले के लिए, सेंसर रीडिंग के आधार पर, अनुमान के परिणाम इंगित करते हैं कि मशीन का हिस्सा विफल होने की संभावना है या नहीं।

एमएल-9132 मॉडल निष्कर्ष

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

एमएल-9132 एसएनएस ईमेल सदस्यता लें

वास्तविक दुनिया के अनुप्रयोगों के लिए, आप एसएनएस सूचनाओं को अन्य सेवाओं जैसे कि . के साथ एकीकृत कर सकते हैं अमेज़ॅन सरल कतार सेवा (अमेज़ॅन एसक्यूएस) और लैम्ब्डा आपकी आवश्यकताओं के आधार पर उत्पन्न अनुमानों के अतिरिक्त पोस्टप्रोसेसिंग या अन्य डाउनस्ट्रीम अनुप्रयोगों के साथ एकीकरण के लिए। उदाहरण के लिए, हमारे भविष्य कहनेवाला रखरखाव उपयोग के मामले के लिए, आप अमेज़ॅन एस 3 से उत्पन्न अनुमान को पढ़ने के लिए एक एसएनएस अधिसूचना के आधार पर एक लैम्ब्डा फ़ंक्शन का आह्वान कर सकते हैं, इसे आगे की प्रक्रिया (जैसे एकत्रीकरण या फ़िल्टरिंग) कर सकते हैं, और कार्य आदेश भेजने जैसे वर्कफ़्लो शुरू कर सकते हैं। तकनीशियनों को उपकरण की मरम्मत।

क्लीन अप

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

अपना स्टैक हटाने के लिए निम्न कोड चलाएँ:

sam delete nrt-streaming-inference

मॉडलट्रेनिंग-मूल्यांकन-और-परिनियोजन नोटबुक में सफाई अनुभाग का पालन करके सेजमेकर एंडपॉइंट जैसे संसाधनों को भी हटा दें।

निष्कर्ष

इस पोस्ट में, हमने निकट-वास्तविक समय अनुमान पाइपलाइन बनाने के लिए विभिन्न सेवाओं जैसे कि किनेसिस, एडब्ल्यूएस ग्लू और सेजमेकर का उपयोग करने के तरीके को प्रदर्शित करने के लिए एक भविष्य कहनेवाला रखरखाव उपयोग मामले का उपयोग किया। हम आपको इस समाधान को आजमाने के लिए प्रोत्साहित करते हैं और हमें बताएं कि आप क्या सोचते हैं।

यदि आपके कोई प्रश्न हैं, तो उन्हें टिप्पणियों में साझा करें।


लेखक के बारे में

Amazon Kinesis, AWS Glue और Amazon SageMaker प्लेटोब्लॉकचैन डेटा इंटेलिजेंस के साथ एक प्रेडिक्टिव मेंटेनेंस सॉल्यूशन बनाएं। लंबवत खोज। ऐ. राहुल शर्मा एडब्ल्यूएस डाटा लैब में एक समाधान वास्तुकार है, जो एडब्ल्यूएस ग्राहकों को एआई/एमएल समाधान डिजाइन और निर्माण करने में मदद करता है। AWS में शामिल होने से पहले, राहुल ने वित्त और बीमा क्षेत्र में कई साल बिताए हैं, जिससे ग्राहकों को डेटा और विश्लेषणात्मक प्लेटफॉर्म बनाने में मदद मिली है।

Amazon Kinesis, AWS Glue और Amazon SageMaker प्लेटोब्लॉकचैन डेटा इंटेलिजेंस के साथ एक प्रेडिक्टिव मेंटेनेंस सॉल्यूशन बनाएं। लंबवत खोज। ऐ.पैट रेली एडब्ल्यूएस डेटा लैब में एक आर्किटेक्ट है, जहां वह ग्राहकों को उनके व्यवसाय का समर्थन करने के लिए डेटा वर्कलोड डिजाइन और निर्माण करने में मदद करता है। AWS से पहले, Pat ने AWS पार्टनर से परामर्श किया, विभिन्न उद्योगों में AWS डेटा वर्कलोड का निर्माण किया।

समय टिकट:

से अधिक AWS मशीन लर्निंग