متعدد علاقوں PlatoBlockchain ڈیٹا انٹیلی جنس کا استعمال کرتے ہوئے Amazon Recognition سٹیٹ لیس APIs کے لیے اسکیل ایبلٹی کو بہتر بنائیں۔ عمودی تلاش۔ عی

متعدد علاقوں کا استعمال کرتے ہوئے Amazon Recognition اسٹیٹ لیس APIs کے لیے اسکیل ایبلٹی کو بہتر بنائیں

پچھلے میں بلاگ پوسٹ، ہم نے ایک واحد AWS ریجن میں شناخت کی توثیق کے اختتام سے آخر تک حل بیان کیا۔ حل استعمال کرتا ہے۔ ایمیزون پہچان۔ APIs چہرے کا پتہ لگانا چہرے کا پتہ لگانے کے لیے اور چہرے کا موازنہ کریں۔ چہرے کے مقابلے کے لیے۔ ہم ان APIs کو اسٹیٹ لیس APIs کے طور پر سوچتے ہیں کیونکہ وہ ایمیزون کی شناخت پر انحصار نہیں کرتے ہیں۔ چہرے کا مجموعہ. وہ کمزور بھی ہیں، یعنی ایک ہی پیرامیٹرز کے ساتھ بار بار کال کرنے سے وہی نتیجہ آئے گا۔ وہ تصاویر کو منتقل کرنے پر لچکدار اختیارات فراہم کرتے ہیں، یا تو ایک کے ذریعے ایمیزون سادہ اسٹوریج سروس (ایمیزون S3) مقام یا خام بائٹس۔

اس پوسٹ میں، ہم پر توجہ مرکوز کرتے ہیں Amazon Recognition Image اسٹیٹ لیس APIs، اور امیجز کو پاس کرنے کے دو آپشنز پر تبادلہ خیال کریں اور سسٹم آرکیٹیکچر کے نقطہ نظر سے ایک دوسرے کا انتخاب کب کریں۔ پھر ہم اس بات پر تبادلہ خیال کرتے ہیں کہ کچھ علاقائی حدود پر قابو پانے کے لیے اسٹیٹ لیس APIs کو کیسے پیمانہ کیا جائے۔ اسکیل ایبلٹی کے بارے میں بات کرتے وقت، ہم اکثر زیادہ سے زیادہ لین دین فی سیکنڈ (TPS) کا حوالہ دیتے ہیں جو حل کو سنبھال سکتا ہے۔ مثال کے طور پر، ایک بڑے ایونٹ کی میزبانی کرتے وقت جو کمپیوٹر وژن کو چہروں یا آبجیکٹ کے لیبلز کا پتہ لگانے کے لیے استعمال کرتا ہے، آپ کو ٹریفک میں اضافے کا سامنا کرنا پڑ سکتا ہے، اور آپ نہیں چاہتے کہ سسٹم تھروٹل ہو۔ اس کا مطلب ہے کہ آپ کو بعض اوقات TPS بڑھانے کی ضرورت ہوتی ہے اور یہاں تک کہ Amazon Recognition APIs کے علاقائی سروس کوٹہ سے آگے بڑھنا پڑتا ہے۔ یہ پوسٹ ایک سے زیادہ ریجنز کا استعمال کرتے ہوئے اسٹیٹ لیس APIs کے TPS کو بڑھانے کا حل تجویز کرتی ہے۔

Amazon Recognition اسٹیٹ لیس APIs

دستیاب Amazon Recognition Image APIs میں سے، چہرے کا موازنہ کریں۔, چہرے کا پتہ لگانا, ڈیٹیکٹ لیبلز, ڈیٹیکٹ موڈریشن لیبلز, حفاظتی آلات کا پتہ لگانا, ڈیٹیکٹ ٹیکسٹ، اور مشہور شخصیات کو پہچانیں۔ بے وطن ہیں وہ تصاویر کو منتقل کرنے کے لیے ایمیزون S3 اور خام بائٹس دونوں اختیارات فراہم کرتے ہیں۔ مثال کے طور پر، کی درخواست نحو میں DetectFaces API، پاس کرنے کے لیے دو اختیارات ہیں۔ Image فیلڈ: Bytes or S3Object.

استعمال کرتے وقت S3Object آپشن، ایک عام فن تعمیر مندرجہ ذیل ہے۔

اس حل میں درج ذیل ورک فلو ہے:

  1. کلائنٹ ایپلیکیشن ایک ویب پیج تک رسائی حاصل کرتی ہے جس کی میزبانی کی جاتی ہے۔ AWS بڑھانا.
  2. کلائنٹ کی درخواست کے ساتھ تصدیق شدہ اور مجاز ہے۔ ایمیزون کاگنیٹو.
  3. کلائنٹ ایپلیکیشن S3 بالٹی پر ایک تصویر اپ لوڈ کرتی ہے۔
  4. ایمیزون S3 ایک کو متحرک کرتا ہے۔ او ڈبلیو ایس لامبڈا۔ ایمیزون ریکگنیشن کو کال کرنے کا فنکشن۔
  5. لیمبڈا فنکشن S3Object آپشن کے ساتھ Amazon Recognition APIs کو کال کرتا ہے۔
  6. لیمبڈا فنکشن نتیجہ کو ایک تک برقرار رکھتا ہے۔ ایمیزون ڈائنومو ڈی بی میز.

منتخب کیجئیے S3Object درج ذیل منظرناموں میں آپشن:

  • تصویر یا تو PNG یا JPEG فارمیٹ شدہ فائل ہے۔
  • آپ پورے اسٹیک کو اسی علاقے میں تعینات کرتے ہیں جہاں Amazon Recognition دستیاب ہے۔
  • Amazon Recognition API کا علاقائی سروس کوٹہ آپ کے سسٹم کی ضرورت کو پورا کرتا ہے۔

جب آپ ان تمام ضروریات کو پورا نہیں کرتے ہیں، تو آپ کو منتخب کرنا چاہیے۔ Bytes آپشن.

Amazon Recognition Stateless APIs کو کسی مختلف علاقے میں استعمال کریں۔

استعمال کرنے کی ایک مثال Bytes آپشن اس وقت ہوتا ہے جب آپ اپنے استعمال کے کیس کو کسی ایسے خطے میں تعینات کرنا چاہتے ہیں جہاں Amazon Recognition عام طور پر دستیاب نہیں ہے، مثال کے طور پر، اگر آپ کے پاس جنوبی امریکہ میں کسٹمر کی موجودگی ہے (sa-east-1) علاقہ۔ ڈیٹا ریذیڈنسی کے لیے، S3 بالٹی جو آپ صارفین کی تصاویر کو ذخیرہ کرنے کے لیے استعمال کرتے ہیں اس میں ہونا ضروری ہے۔ sa-east-1، لیکن آپ اپنے حل کے لیے Amazon Recognition استعمال کرنا چاہتے ہیں حالانکہ یہ عام طور پر دستیاب نہیں ہے۔ sa-east-1. ایک حل استعمال کرنا ہے۔ Bytes ایمیزون ریکگنیشن کو کسی دوسرے علاقے میں کال کرنے کا اختیار جہاں ایمیزون ریکگنیشن دستیاب ہے، جیسے us-east-1. مندرجہ ذیل خاکہ اس فن تعمیر کو واضح کرتا ہے۔

مختلف علاقوں میں شناخت

لیمبڈا فنکشن کے متحرک ہونے کے بعد (مرحلہ 4)، امیزون ریکوگنیشن کو براہ راست امیج کے S3 لوکیشن کے ساتھ کال کرنے کے بجائے، فنکشن کو S3 بالٹی (مرحلہ 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 فارمیٹس کے لیے کام کرتا ہے۔ دیگر تصویری فارمیٹس کے لیے، جیسے BMP، Amazon Recognition کو بھیجنے سے پہلے اسے JPEG یا PNG بائٹس میں تبدیل کرنے کے لیے اضافی امیج پروسیسنگ کی ضرورت ہے۔ درج ذیل کوڈ BMP کو JPEG بائٹس میں تبدیل کرتا ہے۔

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'])

متعدد خطوں میں API کالوں کو پھیلا کر اسٹیٹ لیس APIs کے TPS کو بڑھا دیں۔

کا ایک اور استعمال کیس Bytes آپشن یہ ہے کہ آپ API کالوں کو متعدد علاقوں میں پھیلا کر اسٹیٹ لیس APIs کے TPS کو بڑھا سکتے ہیں۔ اس طرح، آپ API کے علاقائی سروس کوٹہ تک محدود نہیں ہیں کیونکہ آپ دوسرے علاقوں سے اضافی TPS حاصل کر سکتے ہیں۔

مندرجہ ذیل مثال میں، ایمیزون ریکگنیشن کو کال کرنے کے لیے لیمبڈا فنکشن بنایا گیا ہے۔ DetectLabels API کے ساتھ Bytes اختیار زیادہ سے زیادہ TPS کو بڑھانے کے لیے، آپ API کالز کو وزن کے ساتھ متعدد علاقوں میں پھیلا سکتے ہیں۔ آپ جو زیادہ سے زیادہ TPS حاصل کر سکتے ہیں اس کا حساب اس کے ساتھ کیا جاتا ہے: 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 API مندرجہ ذیل ہے:

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 Recognition DetectFaces API کے لیے زیادہ سے زیادہ 50 TPS ہیں، آپ ماحولیاتی متغیر کو ترتیب دے کر 50/50 وزن کے ساتھ API کالز کو یکساں طور پر پھیلا سکتے ہیں۔ REGION_1_TRAFFIC_PERCENTAGE 50 تک۔ اس طرح، آپ تھیوری میں کم سے کم(50/50%، 50/50%) = 100 TPS حاصل کر سکتے ہیں۔

خیال کی توثیق کرنے کے لیے، لیمبڈا فنکشن کو REST API کے ساتھ سامنے لایا گیا ہے۔ ایمیزون API گیٹ وے. پھر جے میٹر API کو ٹیسٹ کرنے کے لیے استعمال کیا جاتا ہے۔

لوڈ ٹیسٹ ریکوگنیشن API کالز

REGION_1_TRAFFIC_PERCENTAGE اس طرح سب سے پہلے 100 پر سیٹ کیا گیا ہے۔ DetectFaces API کالیں بھیجی جاتی ہیں۔ us-east-1 صرف نظریہ میں، زیادہ سے زیادہ TPS جو حاصل کیا جا سکتا ہے وہ سروس کوٹہ میں محدود ہے۔ us-east-1جو کہ 50 TPS ہے۔ کسٹم API اینڈ پوائنٹ پر لوڈ ٹیسٹ، 50 کنکرنٹ تھریڈز کے ساتھ شروع کرتے ہوئے، بتدریج 5 تھریڈز شامل کرتے ہوئے ProvisionedThroughputExceededException Amazon Recognition سے واپسی کا مشاہدہ کیا جاتا ہے۔

REGION_1_TRAFFIC_PERCENTAGE پھر 50 پر سیٹ کیا جاتا ہے، اس طرح سب DetectLabels API کالیں یکساں طور پر بھیجی جاتی ہیں۔ us-east-1 اور us-west-2. نظریہ میں، زیادہ سے زیادہ TPS جو حاصل کیا جا سکتا ہے وہ سروس کوٹہ ہے جسے دونوں خطوں کا ملایا جاتا ہے، جو کہ 100 TPS ہے۔ زیادہ سے زیادہ TPS تلاش کرنے کے لیے 100 تھریڈز سے دوبارہ لوڈ ٹیسٹ شروع کریں۔

درج ذیل جدول میں لوڈ ٹیسٹنگ کے نتائج کا خلاصہ کیا گیا ہے۔

DetectLabels API کالز کا فیصد to us-east-1 DetectLabels API کالز کا فیصد to us-west-2 تھیوری میں زیادہ سے زیادہ TPS بغیر زیادہ سے زیادہ کنکرنٹ رنز ProvisionedThroughputExceededException
100 0 50 70
50 50 100 145

نتیجہ

بہت سے صارفین ایمیزون ریکگنیشن امیج سٹیٹ لیس APIs استعمال کر رہے ہیں مختلف استعمال کے معاملات کے لیے، بشمول شناخت کی تصدیق، مواد کی اعتدال، میڈیا پروسیسنگ، اور بہت کچھ۔ اس پوسٹ میں امیجز کو پاس کرنے کے دو آپشنز اور درج ذیل استعمال کے کیسز کے لیے خام بائٹس کے آپشن کو استعمال کرنے کے طریقہ پر تبادلہ خیال کیا گیا ہے۔

  • Amazon Recognition علاقائی دستیابی
  • کسٹمر ڈیٹا کی رہائش
  • ایمیزون ریکوگنیشن اسٹیٹ لیس APIs کے TPS کو بڑھانا

چیک کریں کہ ایمیزون ریکگنیشن کو کس طرح استعمال کیا جاتا ہے۔ کمپیوٹر وژن کے استعمال کے مختلف کیسز اور اپنا جدت کا سفر شروع کریں۔


مصنفین کے بارے میں

متعدد علاقوں PlatoBlockchain ڈیٹا انٹیلی جنس کا استعمال کرتے ہوئے Amazon Recognition سٹیٹ لیس APIs کے لیے اسکیل ایبلٹی کو بہتر بنائیں۔ عمودی تلاش۔ عیشیرون لی بوسٹن، ایم اے کے علاقے میں مقیم AWS میں ایک حل آرکیٹیکٹ ہے۔ وہ انٹرپرائز صارفین کے ساتھ کام کرتی ہے، مشکل مسائل کو حل کرنے اور AWS پر تعمیر کرنے میں ان کی مدد کرتی ہے۔ کام سے باہر، وہ اپنے خاندان کے ساتھ وقت گزارنا اور مقامی ریستوراں تلاش کرنا پسند کرتی ہے۔

متعدد علاقوں PlatoBlockchain ڈیٹا انٹیلی جنس کا استعمال کرتے ہوئے Amazon Recognition سٹیٹ لیس APIs کے لیے اسکیل ایبلٹی کو بہتر بنائیں۔ عمودی تلاش۔ عیوہاب شاہ AWS کے ساتھ ایک سینئر سولیوشن آرکیٹیکٹ ہے اور اپنے صارفین کی ہر چیز کلاؤڈ کے ساتھ مدد کرنا اور ان کے کلاؤڈ گود لینے کے سفر کو فعال کرنا چاہتا ہے۔ کام کے علاوہ، اسے سفر کرنا، نئی جگہوں اور ریستوراں کی تلاش، کھانا پکانا، کرکٹ اور فٹ بال جیسے کھیلوں کی پیروی کرنا، فلمیں اور سیریز دیکھنا (مارول فین)، اور ہائیکنگ، اسکائی ڈائیونگ جیسی مہم جوئی پسند ہے اور فہرست جاری ہے۔

ٹائم اسٹیمپ:

سے زیادہ AWS مشین لرننگ