जेफिरनेट लोगो

अमेज़ॅन एपीआई गेटवे मैपिंग टेम्प्लेट और अमेज़ॅन सैजमेकर के साथ मशीन सीखने-संचालित रीस्ट एपीआई बनाना

दिनांक:

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

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

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

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

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

नोट: यह पोस्ट अमेज़ॅन सेजमेकर के साथ सीधे एकीकरण पर केंद्रित है, लेकिन आप मध्यवर्ती कंप्यूट परत (उदाहरण के लिए, एडब्ल्यूएस लैम्ब्डा पर आधारित) के साथ संयोजन में मैपिंग टेम्प्लेट का भी उपयोग कर सकते हैं, जिस स्थिति में आप गेटवे पर ही पेलोड को फिर से आकार देकर कंप्यूट परत पर लोड को कम करने के लिए उनका उपयोग कर सकते हैं।

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

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

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

आर्किटेक्चर

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

अनुरोध और प्रतिक्रिया प्रारूप

समाधान में एक REST API शामिल है जो एकल संसाधन का समर्थन करता है (predicted-ratings) और एक GET विधि। अनुरोध प्रपत्र लेता है:

GET /<api-path>/predicted-ratings/{user_id}?items=id1,id2,…,idn&

जहां पथ पैरामीटर user_id उस उपयोगकर्ता का प्रतिनिधित्व करता है जिसके लिए रेटिंग की आवश्यकता है, और क्वेरी स्ट्रिंग पैरामीटर items इसमें आइटम पहचानकर्ताओं की अल्पविराम से अलग की गई सूची शामिल है।

यदि अनुरोध सफलतापूर्वक संसाधित किया जाता है, तो लौटाए गए HTTP प्रतिक्रिया में प्रतिक्रिया कोड 200 होता है, और मुख्य भाग एक JSON ऑब्जेक्ट होता है जिसमें निर्दिष्ट आइटम के लिए अनुमानित रेटिंग की एक सूची होती है:

{ "ratings": [ rating_1, rating_2, …, rating_n ]
}

उदाहरण के लिए, आप निम्नलिखित अनुरोध दर्ज कर सकते हैं:

% curl "https://<api-path>/predicted-ratings/321?items=101,131,162&"

यह नीचे दिए गए समान प्रतिक्रिया के साथ वापस आएगा:

{ "ratings": [ 3.527499437332153, 3.951640844345093, 3.658416271209717 ]
}

अमेज़ॅन सेजमेकर मॉडल इनपुट और आउटपुट प्रारूप

रेटिंग भविष्यवक्ता समाधान एक नमूना मॉडल पर आधारित है जो विशेष रूप से अमेज़ॅन सेजमेकर के साथ आपूर्ति की जाती है: object2vec_movie_recommendation.ipynb. यह मॉडल अनुमान समापन बिंदु एक POST विधि का समर्थन करता है, और उम्मीद करता है कि अनुरोध निकाय में निम्नानुसार JSON पेलोड शामिल होगा:

{ "instances": [ {"in0": [863], "in1": [882]}, {"in0": [278], "in1": [311]}, {"in0": [705], "in1": [578]}, … ]
}

जहां in0 एक उपयोगकर्ता आईडी का प्रतिनिधित्व करता है, और in1 एक मूवी आईडी का प्रतिनिधित्व करता है।

मॉडल अनुमान निम्नलिखित आउटपुट देता है:

{ "predictions": [ {"scores": [3.047305107116699]}, {"scores": [3.58427882194519]}, {"scores": [4.356469631195068]}, … ]
}

आप REST API द्वारा प्राप्त GET अनुरोध प्रारूप को Amazon SageMaker मॉडल एंडपॉइंट द्वारा अपेक्षित POST इनपुट प्रारूप में मैप करने के लिए मैपिंग टेम्प्लेट का उपयोग कर सकते हैं, और इसके विपरीत मॉडल आउटपुट प्रारूप को REST API द्वारा आवश्यक प्रतिक्रिया प्रारूप में मैप कर सकते हैं।

अमेज़ॅन एपीआई गेटवे विधि एकीकरण

जब आप REST API बनाने के लिए API गेटवे का उपयोग करते हैं, तो आपको प्रत्येक API विधि के लिए निम्नलिखित कॉन्फ़िगरेशन मॉडल को परिभाषित करने की आवश्यकता होती है:

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

निम्नलिखित आरेख प्रसंस्करण प्रवाह को दर्शाता है, और दिखाता है कि प्रत्येक चरण में एक उदाहरण अनुरोध और प्रतिक्रिया कैसे बदल जाती है।

मैपिंग टेम्प्लेट

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

पूर्वाभ्यास चरण

वॉकथ्रू में निम्नलिखित मुख्य चरण शामिल हैं:

  1. Amazon SageMaker मॉडल बनाएं और तैनात करें
  2. का उपयोग करके अमेज़ॅन सेजमेकर मॉडल एंडपॉइंट का परीक्षण करें AWS सीएलआई
  3. REST API के लिए IAM निष्पादन भूमिका बनाएँ
  4. REST API के लिए API गेटवे एंडपॉइंट बनाएं
  5. अनुरोध एकीकरण के लिए एक मैपिंग टेम्प्लेट बनाएं
  6. प्रतिक्रिया एकीकरण के लिए एक मैपिंग टेम्प्लेट बनाएं
  7. एपीआई गेटवे एंडपॉइंट को तैनात और परीक्षण करें

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

इस वॉकथ्रू का पालन करने के लिए, आपको निम्नलिखित शर्तें पूरी करनी होंगी:

  • AWS खाते तक पहुंच - आपको IAM भूमिकाओं, Amazon SageMaker, के साथ काम करने के लिए पर्याप्त IAM अनुमतियों की आवश्यकता है। अमेज़न S3, और एपीआई गेटवे।
  • AWS सीएलआई - नवीनतम संस्करण स्थापित करें।
  • कर्ल उपयोगिता - संस्करण 7.52 से आगे का उपयोग करें।

चरण 1: अमेज़ॅन सेजमेकर मॉडल का निर्माण और तैनाती

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

Amazon SageMaker नोटबुक इंस्टेंस का उपयोग करके अपना मॉडल बनाएं। निम्नलिखित चरणों को पूरा करें:

  1. का उपयोग करके अपने AWS खाते में लॉग इन करें एडब्ल्यूएस प्रबंधन कंसोल.
  2. अमेज़ॅन सेजमेकर डैशबोर्ड पर, नीचे नोटबुक के उदाहरण, चुनें नोटबुक इंस्टेंस बनाएं.
  3. के अंतर्गत नोटबुक उदाहरण सेटिंग्स, अपनी नोटबुक के लिए एक नाम निर्दिष्ट करें।

इस उदाहरण के लिए, आप इंस्टेंस प्रकार को ml.t2.medium पर सेट कर सकते हैं, जो सबसे अधिक लागत प्रभावी विकल्प है। व्यवहार में, आप डेटासेट के आकार और डेटा परिवर्तन की प्रकृति के आधार पर इंस्टेंस प्रकार का चयन करेंगे।

  1. के अंतर्गत अनुमतियाँ और एन्क्रिप्शन, IAM भूमिका को इस पर सेट करें एक नई भूमिका बनाएँ.
  2. सुनिश्चित करें कि S3 बाल्टी आप निर्दिष्ट करें चयनित है, अपनी बकेट के लिए बकेट नाम निर्दिष्ट करें, और चुनें भूमिका बनाएँ.
  3. शेष सेटिंग्स को डिफ़ॉल्ट मान के साथ छोड़ दें।
  4. चुनें नोटबुक उदाहरण बनाएँ।

आपका उदाहरण बनाने में कुछ मिनट लगते हैं। जब से स्थिति बदलती है Pending सेवा मेरे InService, आपकी नोटबुक इंस्टेंस उपयोग के लिए तैयार है।

  1. के अंतर्गत क्रियाएँ, चुनें जुपिटरलैब खोलें.

आपके ज्यूपिटर नोटबुक के लिए एक नया ब्राउज़र टैब खुलता है।

  1. बाएं नेविगेशन बार से, इसके लिए आइकन चुनें अमेज़ॅन सेजमेकर नमूना नोटबुक (लेबल देखने के लिए आइकन पर होवर करें)।
  2. नमूना नोटबुक की सूची से चयन करें object2vec_movie_recommendation.ipynb. जैसा कि नीचे दिया गया है:

आपके द्वारा खोला गया नमूना नोटबुक केवल पढ़ने के लिए है, इसलिए आपको एक लिखने योग्य प्रतिलिपि बनाने की आवश्यकता है।

  1. चुनें एक प्रति बनाएँ फलक के शीर्ष दाईं ओर.
  2. जब कर्नेल उपयोग का चयन करने के लिए कहा जाए conda_python3.

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

किसी भी सेल को निष्पादित करने से पहले, निम्नलिखित चरणों को पूरा करें:

  1. अपनी नोटबुक में, अनुभाग तक नीचे स्क्रॉल करें मॉडल प्रशिक्षण और अनुमान (नोटबुक के आधे रास्ते से थोड़ा नीचे)। पहले सेल में (लेबल)। S3 बकेट को परिभाषित करें जो डेटा और मॉडल को होस्ट करता है, और डेटा को S3 पर अपलोड करें), जैसा कि पहले पहचाना गया था, बाल्टी का नाम अपनी पसंद की S3 बाल्टी पर सेट करें।
  2. ऊपर से शुरू करते हुए, सभी कक्षों को क्रम से निष्पादित करने के लिए अपनी नोटबुक का उपयोग करें जब तक कि आप ठीक पहले न पहुंच जाएं अनुशंसा कार्य अनुभाग (जो नोटबुक से लगभग तीन-चौथाई नीचे है)।

आप या तो एक समय में एक सेल में कदम रखकर, या पहले सेल का चयन करके ऐसा कर सकते हैं अनुशंसा कार्य अनुभाग और फिर, के अंतर्गत रन, चुनें उपरोक्त सभी चयनित सेल चलाएँ (निचे देखो)।

मॉडल प्रशिक्षण और तैनाती में लगभग 10 मिनट लगते हैं। जब यह पूरा हो जाए, तो निम्नलिखित चरणों के साथ आगे बढ़ें:

  1. अमेज़न SageMaker कंसोल पर, के तहत अनुमान, चुनें endpoints.
  2. सत्यापित करें कि आप रनटाइम समापन बिंदु देख सकते हैं।
  3. समापन बिंदु नाम और एआरएन रिकॉर्ड करें क्योंकि आपको बाद में इनकी आवश्यकता होगी।

चरण 2: AWS CLI का उपयोग करके Amazon SageMaker मॉडल एंडपॉइंट का परीक्षण करना

आप निम्नानुसार AWS CLI का उपयोग करके अनुमान समापन बिंदु का परीक्षण कर सकते हैं:

aws sagemaker-runtime invoke-endpoint --endpoint-name <endpoint-name> --body '{"instances": [{"in0":[863],"in1":[882]}]}' --content-type application/json --accept application/json results

नोट: उपरोक्त मानता है कि आप बैश-संगत शेल का उपयोग कर रहे हैं। यदि आप मानक विंडोज कमांड लाइन का उपयोग कर रहे हैं, तो बॉडी पैरामीटर के लिए बाहरी सिंगल कोट्स को डबल कोट्स से बदलें, और JSON के भीतर डबल कोट्स वर्णों से बचें।

यदि आपका एंडपॉइंट सही ढंग से काम कर रहा है, तो आपको परिणाम नामक एक फ़ाइल देखनी चाहिए जिसमें निम्न के समान आउटपुट शामिल है:

{"predictions":[{"scores":[2.433111906051636]}]}

अब जब आपके पास एक कार्यशील Amazon SageMaker एंडपॉइंट है, तो आप इसके सामने एक REST API बना सकते हैं।

चरण 3: REST API के लिए एक निष्पादन भूमिका बनाना

REST API बनाने से पहले, आपको एक निष्पादन भूमिका बनानी होगी जो आपके API को आपके Amazon SageMaker एंडपॉइंट को लागू करने के लिए आवश्यक अनुमति देती है। निम्नलिखित चरणों को पूरा करें:

  1. IAM कंसोल पर, के तहत भूमिकाओं, चुनें भूमिका बनाएँ.
  2. के लिए विश्वसनीय इकाई का चयन करें, चुनते हैं एडब्ल्यूएस सेवा.
  3. सेवा चुनें एपीआई गेटवे.
  4. चुनें अगला जब तक आप नहीं पहुँचते समीक्षा।

आप देख सकते हैं कि एक नीति शामिल की गई है जो एपीआई गेटवे को लॉग को क्लाउडवॉच पर पुश करने की अनुमति देती है।

  1. अपनी भूमिका को एक नाम दें, उदाहरण के लिए, APIGatewayAccessToSageMaker.
  2. चुनें भूमिका बनाएँ.

अब आपको अनुमतियाँ जोड़ने की आवश्यकता है ताकि आपकी भूमिका अमेज़ॅन सेजमेकर एंडपॉइंट को लागू कर सके।

  1. आपके द्वारा अभी बनाई गई भूमिका ढूंढने के लिए भूमिका फ़िल्टर का उपयोग करें।
  2. भूमिका सारांश स्क्रीन देखने के लिए आपके द्वारा बनाई गई भूमिका चुनें।
  3. चुनें इनलाइन नीति जोड़ें.
  4. पर नीति बनाएं स्क्रीन, सेवा का चयन करें SageMaker और कार्रवाई InvokeEndpoint.
  5. के लिए संसाधन, चयन विशिष्ट और अपने Amazon SageMaker एंडपॉइंट के लिए ARN दर्ज करें।
  6. चुनें समीक्षा नीति.
  7. अपनी पॉलिसी को एक नाम दें, उदाहरण के लिए, SageMakerEndpointInvokeAccess.
  8. चुनें नीति बनाएं.
  9. भूमिका सारांश पृष्ठ पर, भूमिका के लिए एआरएन रिकॉर्ड करें क्योंकि आपको बाद में इसकी आवश्यकता होगी।

चरण 4: एक एपीआई गेटवे एंडपॉइंट बनाना

इस अनुभाग में, आप अपना REST API बनाते हैं।

एक एपीआई बनाना

निम्नलिखित चरणों को पूरा करें:

  1. एपीआई गेटवे कंसोल पर, चुनें एपीआई बनाएं.
  2. चुनें बाकी.
  3. चुनें नई एपीआई.
  4. अपने एपीआई को एक नाम दें, उदाहरण के लिए, RatingsPredictor.
  5. के लिए समापन बिंदु प्रकार, चुनें क्षेत्रीय.
  6. चुनें एपीआई बनाएं.

नोट: एक उत्पादन प्रणाली में, आपको इस बात पर विचार करना चाहिए कि क्या आपको इससे लाभ होगा एज अनुकूलित विकल्प.

एक संसाधन बनाना

  1. संसाधन संपादक में, से क्रियाएँ मेनू, चुनें CreateResource.
  2. के लिए संसाधन का नाम, दर्ज predicted-ratings.
  3. सुनिश्चित करें कि संसाधन पथ फ़ील्ड में पूर्वानुमानित-रेटिंग भी शामिल है।
  4. चुनें संसाधन बनाएँ.

आपको यह देखना चाहिए predicted-ratings संसाधन नेविगेशन ट्री में दिखाई देता है।

  1. चुनना predicted-ratings आपके द्वारा बनाया गया संसाधन.
  2. से क्रियाएँ मेनू, चुनें संसाधन बनाएँ.
  3. के लिए संसाधन पथ, दर्ज {user_id}.
  4. के लिए संसाधन का नाम, दर्ज user_id.
  5. चुनें संसाधन बनाएँ.

संसाधन नेविगेशन ट्री अब निम्नलिखित स्क्रीनशॉट के समान होना चाहिए, और दिखाना चाहिए /predicted-ratings/{user_id}.

एक GET विधि बनाना

अगला कदम संसाधन पथ पर एक GET विधि बनाना है /predicted-ratings/{user_id} और इसे अपने Amazon SageMaker एंडपॉइंट के साथ एकीकृत करें। निम्नलिखित चरणों को पूरा करें:

  1. क्रियाएँ मेनू से, चुनें {उपयोगकर्ता पहचान}.
  2. चुनें विधि बनाएँ.
  3. के अंतर्गत दिखाई देने वाले ड्रॉप-डाउन से {उपयोगकर्ता पहचान} संसाधन, चयन करें GET और टिक मार्क पर क्लिक करके पुष्टि करें।

दाएँ हाथ का फलक अब प्रदर्शित करता है व्यवस्था स्क्रीन। निम्नलिखित स्क्रीनशॉट देखें.

  1. अनुरोध के लिए एकीकरण प्रकार, चुनें एडब्ल्यूएस सेवा.
  2. के लिए AWS क्षेत्र, अपने क्षेत्र में प्रवेश करें।
  3. के लिए एडब्ल्यूएस सेवा, चुनें सेजमेकर रनटाइम.
  4. छोड़ना AWS उपडोमेन खाली।
  5. के लिए HTTP विधि, चुनें पोस्ट.
  6. के लिए प्रक्रिया का प्रकार, चुनें पाथ ओवरराइड का उपयोग करें.
  7. के लिए पथ ओवरराइड, प्रारूप का उपयोग करके अमेज़ॅन सेजमेकर एंडपॉइंट पथ दर्ज करें endpoints/<sagemaker-endpoint-name>/invocations.
  8. के लिए निष्पादन भूमिका, आपके द्वारा पहले बनाई गई भूमिका का ARN दर्ज करें।
  9. के लिए सामग्री हैंडलिंग, चुनें निकासी.
  10. चुनते हैं डिफ़ॉल्ट टाइमआउट का उपयोग करें.
  11. चुनें सहेजें.

आपने REST API में एक GET एंडपॉइंट बनाया है, और इसे POST एंडपॉइंट पर मैप किया है। अगले चरण में, आप GET अनुरोध (पथ और क्वेरी-स्ट्रिंग से) में पारित मापदंडों को Amazon SageMaker एंडपॉइंट द्वारा अपेक्षित POST अनुरोध में सही स्थानों पर मैप करने के लिए मैपिंग टेम्प्लेट का उपयोग करते हैं।

चरण 5: अनुरोध एकीकरण के लिए एक मैपिंग टेम्पलेट बनाएं

अब आपको एक देखना चाहिए विधि निष्पादन दाएँ हाथ के फलक में स्क्रीन। निम्नलिखित स्क्रीनशॉट देखें.

इसमें एक आरेख है जो दिखाता है कि आपके REST API से Amazon SageMaker रनटाइम पर अनुरोध कैसे प्रवाहित होते हैं और प्रतिक्रियाएँ कैसे वापस आती हैं।

वीटीएल मैपिंग टेम्प्लेट बनाना

इस अगले चरण में, REST API पर प्राप्त GET अनुरोधों को Amazon SageMaker रनटाइम द्वारा अपेक्षित POST अनुरोधों में बदलने के लिए एक VTL मैपिंग टेम्प्लेट बनाएं। निम्नलिखित चरणों को पूरा करें:

  1. चुनें एकीकरण का अनुरोध.
  2. इसका विस्तार करें मैपिंग टेम्प्लेट.
  3. चुनते हैं बॉडी पासथ्रू का अनुरोध करें: कभी नहीं.

आप चेतावनी को सुरक्षित रूप से अनदेखा कर सकते हैं क्योंकि मैपिंग टेम्पलेट निर्दिष्ट करने के बाद यह गायब हो जाती है।

  1. चुनें मैपिंग टेम्प्लेट जोड़ें.
  2. के लिए सामग्री प्रकार, उल्लिखित करना आवेदन / json और पुष्टि करने के लिए टिक बॉक्स पर क्लिक करें।

यदि आप नीचे स्क्रॉल करते हैं, तो आपको एक बहु-पंक्ति पाठ प्रविष्टि फ़ील्ड दिखाई देती है। यह वह जगह है जहां आप अपना वीटीएल टेम्पलेट जोड़ते हैं।

  1. निम्नलिखित टेम्पलेट दर्ज करें:
    { "instances": [
    #set( $user_id = $input.params("user_id") )
    #set( $items = $input.params("items") )
    #foreach( $item in $items.split(",") ) {"in0": [$user_id], "in1": [$item]}#if( $foreach.hasNext ),#end $esc.newline
    #end ]
    }

  2. चुनें सहेजें.

टेम्प्लेट परिभाषित करता है कि POST अनुरोध के मुख्य भाग में क्या जाता है। पहली दो पंक्तियों को ठीक उसी प्रकार अनुरोध निकाय में कॉपी किया गया है जैसा कि निर्दिष्ट किया गया है। तीसरी पंक्ति का उपयोग करता है a #set निकालने एवं भंडारण करने का निर्देश user_id चर में पथ पैरामीटर $user_id. चौथी पंक्ति क्वेरी स्ट्रिंग पैरामीटर निकालती है आइटम और इसे वेरिएबल में रखता है $items. इसे एकल स्ट्रिंग के रूप में संग्रहीत किया जाता है जिसमें आइटमों की अल्पविराम से अलग की गई सूची होती है।

पंक्तियाँ 5-8 सभी वस्तुओं के माध्यम से लूप करती हैं और प्रत्येक के लिए आवश्यक JSON उत्पन्न करती हैं। टेम्प्लेट अंदर रखी स्ट्रिंग को परिवर्तित करता है $items स्ट्रिंग का उपयोग करके किसी सरणी में split() विधि, और a का उपयोग करके इसके माध्यम से पुनरावृत्त करता है #foreach निर्देश. JSON ऑब्जेक्ट के बीच एक अल्पविराम विभाजक डाला जाता है, अंतिम प्रविष्टि के बाद कोई अल्पविराम नहीं होता है।

मैपिंग का परीक्षण

अब आप एपीआई गेटवे बिल्ट-इन टेस्ट हार्नेस का उपयोग करके इस मैपिंग का परीक्षण कर सकते हैं। निम्नलिखित चरणों को पूरा करें:

  1. चुनें विधि निष्पादन.
  2. चुनें टेस्ट.
  3. के लिए पथ पैरामीटर {उपयोगकर्ता पहचान}, दर्ज 321.
  4. के लिए क्वेरी स्ट्रिंग्स पैरामीटर, दर्ज items=101,131,162&.
  5. चुनें टेस्ट.

यदि सब कुछ सही ढंग से काम कर रहा है, तो आपको प्रतिक्रिया कोड 200 देखना चाहिए, एक प्रतिक्रिया निकाय के साथ जिसमें नीचे के समान JSON ऑब्जेक्ट शामिल है:

{ "predictions": [ {"scores": [3.527499437332153]}, {"scores": [3.951640844345093]}, {"scores": [3.658416271209717]} ]
}

आप घटनाओं के अनुक्रम को सत्यापित करने के लिए लॉग में स्क्रॉल भी कर सकते हैं। आपको निम्नलिखित जैसा कुछ देखना चाहिए:

<timestamp>: Endpoint request body after transformations: { "instances": [ {"in0": [321], "in1": [101]}, {"in0": [321], "in1": [131]}, {"in0": [321], "in1": [162]} ]
}
<timestamp> : Sending request to https://runtime.sagemaker.eu-west-1.amazonaws.com/endpoints/recs/invocations
<timestamp> : Received response. Status: 200, Integration latency: 232 ms

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

चरण 6: प्रतिक्रिया एकीकरण के लिए एक मैपिंग टेम्पलेट बनाना

प्रतिक्रिया के लिए मैपिंग टेम्प्लेट जोड़ने के लिए, निम्नलिखित चरणों को पूरा करें:

  1. पर विधि निष्पादन स्क्रीन, चुनें एकीकरण प्रतिक्रिया.

आपको विधि प्रतिक्रिया के साथ, एकल वर्ण पर सेट HTTP स्टेटस रेगेक्स के साथ एक एकल प्रविष्टि देखनी चाहिए 200. यह डिफ़ॉल्ट प्रतिक्रिया नियम है, जो रिटर्न देता है 200 प्रतिक्रिया कोड और प्रतिक्रिया को अपरिवर्तित पारित करता है।

  1. इस नियम का विस्तार करें.
  2. के अंतर्गत मैपिंग टेम्प्लेट, चुनें आवेदन / json.
  3. निम्नलिखित मैपिंग टेम्पलेट दर्ज करें:
    { "ratings": [
    #set( $predictions = $input.path("$.predictions") )
    #foreach( $item in $predictions ) $item.scores[0]#if( $foreach.hasNext ),#end $esc.newline
    #end ]
    }

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

  1. चुनें सहेजें.

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

चरण 7: एपीआई की तैनाती और परीक्षण

अब आप अपना REST API परिनियोजित करने के लिए तैयार हैं। निम्नलिखित चरणों को पूरा करें:

  1. पर विधि निष्पादन स्क्रीन, के तहत क्रियाएँ, चुनें एपीआई तैनात करें.
  2. के लिए परिनियोजन अवस्था, चुनें [नया मंच].
  3. अपने मंच को एक नाम दें, जैसे test.
  4. इस चरण और परिनियोजन के लिए आवश्यक विवरण दर्ज करें।
  5. चुनें तैनाती.

अब आपको एक देखना चाहिए मंच संपादक दाएँ हाथ के फलक में, एक के साथ URL आमंत्रित करें आपके तैनात एपीआई के लिए समापन बिंदु। आप उपयोग कर सकते हैं curl अपने तैनात समापन बिंदु का परीक्षण करने के लिए।

  1. कमांड लाइन पर, निम्नलिखित दर्ज करें:
    curl "<invoke-url>/predicted-ratings/321?items=101,131,162&"

    बदलें आपके समापन बिंदु के URL के साथ।

आपको नीचे जैसा आउटपुट देखना चाहिए:

{ "ratings": [ 3.527499437332153, 3.951640844345093, 3.658416271209717 ]
}

अब आपके पास एक तैनात, कार्यशील REST API है जो आपके Amazon SageMaker रनटाइम के साथ एकीकृत है।

अतिरिक्त मुद्दो पर विचार करना

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

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

सफाई करना

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

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

निष्कर्ष

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

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

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


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

माइक रिज़ो यूके स्थित AWS EMEA कमर्शियल टीम में एक वरिष्ठ समाधान वास्तुकार हैं। उन्होंने पीएच.डी. की उपाधि प्राप्त की है। केंट विश्वविद्यालय से कंप्यूटर विज्ञान में और लंदन बिजनेस स्कूल से एमबीए।

स्रोत: https://aws.amazon.com/blogs/machine-learning/creating-a-machine-learning-powered-rest-api-with-amazon-api-gateway-mapping-templates-and-amazon-sagemaker/

स्पॉट_आईएमजी

नवीनतम खुफिया

स्पॉट_आईएमजी