कई क्षेत्रों प्लेटोब्लॉकचैन डेटा इंटेलिजेंस का उपयोग करके अमेज़ॅन रिकॉग्निशन स्टेटलेस एपीआई के लिए मापनीयता में सुधार करें। लंबवत खोज। ऐ।

कई क्षेत्रों का उपयोग करके Amazon रिकॉग्निशन स्टेटलेस API के लिए मापनीयता में सुधार करें

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

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

अमेज़ॅन रिकॉग्निशन स्टेटलेस एपीआई

उपलब्ध Amazon Recognition Image APIs में से, चेहरे की तुलना करें, पता लगाने की जगह, डिटेक्टलेबल, डिटेक्टमॉडरेशनलेबल, डिटेक्ट प्रोटेक्टिव इक्विपमेंट, डिटेक्टटेक्स्ट, तथा हस्तियाँ पहचानो स्टेटलेस हैं। वे छवियों को पास करने के लिए अमेज़ॅन एस 3 और कच्चे बाइट दोनों विकल्प प्रदान करते हैं। उदाहरण के लिए, के अनुरोध सिंटैक्स में DetectFaces एपीआई पास करने के लिए दो विकल्प हैं Image खेत: Bytes or S3Object.

का उपयोग करते समय S3Object विकल्प, एक विशिष्ट वास्तुकला इस प्रकार है।

इस समाधान में निम्न वर्कफ़्लो है:

  1. क्लाइंट एप्लिकेशन होस्ट किए गए वेबपृष्ठ तक पहुंचता है AWS प्रवर्धित करें.
  2. क्लाइंट एप्लिकेशन प्रमाणित और अधिकृत है अमेज़ॅन कॉग्निटो.
  3. क्लाइंट एप्लिकेशन S3 बकेट में एक छवि अपलोड करता है।
  4. अमेज़न S3 एक ट्रिगर करता है AWS लाम्बा Amazon Recognition को कॉल करने का कार्य।
  5. लैम्ब्डा फ़ंक्शन S3Object विकल्प के साथ Amazon Rekognition APIs को कॉल करता है।
  6. लैम्ब्डा फ़ंक्शन परिणाम को a तक बनाए रखता है अमेज़ॅन डायनेमोडीबी तालिका.

चुनना S3Object निम्नलिखित परिदृश्यों में विकल्प:

  • छवि या तो PNG या JPEG स्वरूपित फ़ाइल है
  • आप पूरे स्टैक को उसी क्षेत्र में परिनियोजित करते हैं जहां Amazon Recognition उपलब्ध है
  • अमेज़ॅन रिकॉग्निशन एपीआई का क्षेत्रीय सेवा कोटा आपकी सिस्टम आवश्यकता को पूरा करता है

जब आप इन सभी आवश्यकताओं को पूरा नहीं करते हैं, तो आपको चुनना चाहिए Bytes विकल्प.

किसी भिन्न क्षेत्र में Amazon Recognition Stateless API का उपयोग करें

का उपयोग करने का एक उदाहरण Bytes विकल्प तब होता है जब आप अपने उपयोग के मामले को एक ऐसे क्षेत्र में तैनात करना चाहते हैं जहां Amazon Recognition आमतौर पर उपलब्ध नहीं है, उदाहरण के लिए, यदि आपके पास दक्षिण अमेरिका में ग्राहक मौजूद हैं (sa-east-1) क्षेत्र। डेटा रेजीडेंसी के लिए, आप उपयोगकर्ताओं की छवियों को संग्रहीत करने के लिए जिस S3 बकेट का उपयोग करते हैं, वह अंदर होना चाहिए sa-east-1, लेकिन आप अपने समाधान के लिए Amazon Rekognition का उपयोग करना चाहते हैं, भले ही यह आम तौर पर भारत में उपलब्ध न हो sa-east-1. एक समाधान का उपयोग करना है Bytes Amazon Rekognition को एक अलग क्षेत्र में कॉल करने का विकल्प जहां Amazon Recognition उपलब्ध है, जैसे us-east-1. निम्नलिखित चित्र इस वास्तुकला को दर्शाता है।

विभिन्न क्षेत्रों में मान्यता

लैम्ब्डा फ़ंक्शन ट्रिगर होने के बाद (चरण 4), छवि के एस 3 स्थान के साथ सीधे अमेज़ॅन रेकग्निशन को कॉल करने के बजाय, फ़ंक्शन को एस 3 बाल्टी (चरण 5) से छवि को पुनर्प्राप्त करने की आवश्यकता होती है, फिर छवि के कच्चे बाइट्स के साथ अमेज़ॅन रिकॉग्निशन को कॉल करें (चरण) 6). निम्नलिखित लैम्ब्डा फ़ंक्शन का एक कोड स्निपेट है:

rekognition_region = os.getenv("REKOGNITION_REGION")
s3 = boto3.client('s3')
rekognition = boto3.client('rekognition', region_name=rekognition_region)

def handler(event, context):
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = urllib.parse.unquote_plus(
    event['Records'][0]['s3']['object']['key'], encoding='utf-8')
    s3_res = s3.get_object(Bucket=bucket, Key=key)
    rekognition_res = rekognition.detect_faces(Image={"Bytes": s3_res['Body'].read()}, Attributes=['ALL'])
    print(json.dumps(rekognition_res))

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

import io
from PIL import Image

s3_res = s3.get_object(Bucket=bucket, Key=key)
bmp_img = Image.open(io.BytesIO(s3_res['Body'].read()))
buffered = io.BytesIO()
rgb_img = bmp_img.convert('RGB')
rgb_img.save(buffered, format="JPEG")
rekognition_res = rekognition.detect_faces(Image={"Bytes": buffered.getvalue()}, Attributes=['ALL'])

एपीआई कॉल को कई क्षेत्रों में फैलाकर स्टेटलेस एपीआई के टीपीएस को बढ़ाएं

का एक और उपयोग मामला Bytes विकल्प यह है कि आप एपीआई कॉल को कई क्षेत्रों में फैलाकर स्टेटलेस एपीआई के टीपीएस को बढ़ा सकते हैं। इस तरह, आप एपीआई के क्षेत्रीय सेवा कोटा द्वारा सीमित नहीं हैं क्योंकि आप अन्य क्षेत्रों से अतिरिक्त टीपीएस प्राप्त कर सकते हैं।

निम्नलिखित उदाहरण में, अमेज़ॅन रिकॉग्निशन को कॉल करने के लिए एक लैम्ब्डा फ़ंक्शन बनाया गया है DetectLabels एपीआई के साथ Bytes विकल्प। अधिकतम टीपीएस को बढ़ाने के लिए, आप एपीआई कॉल को वजन के साथ कई क्षेत्रों में फैला सकते हैं। आप जो अधिकतम टीपीएस प्राप्त कर सकते हैं, उसकी गणना निम्न के साथ की जाती है: min(region_1_max_tps/region_1_weight, Region_2_max_tps/region_2_weight, … Region_n_max_tps/region_n_weight)। निम्नलिखित उदाहरण का उपयोग करता है us-east-1 और us-west-2 क्षेत्र।

मान्यता यातायात फैलाओ

कॉल करने के लिए कोड स्निपेट DetectLabels एपीआई इस प्रकार है:

region_1 = os.getenv("REKOGNITION_REGION_1")
region_2 = os.getenv("REKOGNITION_REGION_2")
region_1_traffic_percentage = int(os.getenv("REGION_1_TRAFFIC_PERCENTAGE"))

# randomly generate a number between 1, 100
random_num = random.randint(1, 100)
region = region_1 if random_num <= region_1_traffic_percentage else region_2
rekognition = boto3.client('rekognition', region_name=region)
response = rekognition.detect_labels(Image={"Bytes": image_bytes})
print(response)

क्योंकि us-east-1 और us-west-2 Amazon Rekognition DetectFaces API के लिए दोनों के पास अधिकतम 50 TPS हैं, आप पर्यावरण चर सेट करके API कॉल को 50/50 भार के साथ समान रूप से फैला सकते हैं REGION_1_TRAFFIC_PERCENTAGE से 50। इस तरह, आप सिद्धांत रूप में न्यूनतम (50/50%, 50/50%) = 100 टीपीएस प्राप्त कर सकते हैं।

विचार को मान्य करने के लिए, लैम्ब्डा फ़ंक्शन को REST API के साथ उजागर किया गया है अमेज़ॅन एपीआई गेटवे। तो JMeter एपीआई का परीक्षण लोड करने के लिए प्रयोग किया जाता है।

लोड परीक्षण पहचान एपीआई कॉल

REGION_1_TRAFFIC_PERCENTAGE पहले 100 पर सेट है, इस प्रकार सभी DetectFaces एपीआई कॉल को भेजी जाती हैं us-east-1 केवल। सिद्धांत रूप में, प्राप्त किया जा सकने वाला अधिकतम टीपीएस सेवा कोटा द्वारा सीमित है us-east-1, जो 50 टीपीएस है। कस्टम एपीआई एंडपॉइंट पर लोड टेस्ट, 50 समवर्ती धागे से शुरू होता है, धीरे-धीरे 5 धागे जोड़ता है ProvisionedThroughputExceededException Amazon Recognition से लौटाया गया है।

REGION_1_TRAFFIC_PERCENTAGE फिर 50 पर सेट किया जाता है, इस तरह से सभी DetectLabels एपीआई कॉल समान रूप से भेजी जाती हैं us-east-1 और us-west-2. सिद्धांत रूप में, प्राप्त किया जा सकने वाला अधिकतम TPS सेवा कोटा है जिसे दो क्षेत्र मिलाते हैं, जो कि 100 TPS है। अधिकतम TPS खोजने के लिए 100 थ्रेड्स से फिर से लोड टेस्ट शुरू करें।

निम्न तालिका भार परीक्षण के परिणामों को सारांशित करती है।

DetectLabels API कॉल्स का प्रतिशत us-east-1 DetectLabels API कॉल्स का प्रतिशत us-west-2 सिद्धांत में अधिकतम टीपीएस अधिकतम समवर्ती बिना चलता है प्रावधान थ्रूपुट से अधिक अपवाद
100 0 50 70
50 50 100 145

निष्कर्ष

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

  • अमेज़न मान्यता क्षेत्रीय उपलब्धता
  • ग्राहक डेटा निवास
  • अमेज़ॅन रिकॉग्निशन स्टेटलेस एपीआई 'टीपीएस को स्केल करना

देखें कि Amazon Recognition का उपयोग कैसे किया जाता है विभिन्न कंप्यूटर दृष्टि उपयोग के मामले और अपनी नवाचार यात्रा शुरू करें।


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

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

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

समय टिकट:

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