একাধিক অঞ্চল PlatoBlockchain ডেটা ইন্টেলিজেন্স ব্যবহার করে Amazon Recognition স্টেটলেস API-এর জন্য স্কেলেবিলিটি উন্নত করুন। উল্লম্ব অনুসন্ধান. আ.

একাধিক অঞ্চল ব্যবহার করে Amazon Recognition স্টেটলেস API-এর জন্য স্কেলেবিলিটি উন্নত করুন

অতীতে ব্লগ পোস্ট, আমরা একটি একক AWS অঞ্চলে এন্ড-টু-এন্ড পরিচয় যাচাইকরণ সমাধান বর্ণনা করেছি। সমাধান ব্যবহার করে আমাজন রেকোনিশন API গুলি ডিটেক্টফেস মুখ সনাক্তকরণের জন্য এবং Faces তুলনা করুন মুখ তুলনা জন্য. আমরা সেই APIগুলিকে স্টেটলেস API হিসাবে মনে করি কারণ তারা অ্যামাজন স্বীকৃতির উপর নির্ভর করে না মুখ সংগ্রহ. তারা অদম্য, মানে একই প্যারামিটারের সাথে বারবার কল করলে একই ফলাফল আসবে। তারা ইমেজ পাসিং উপর নমনীয় বিকল্প প্রদান, হয় একটি মাধ্যমে আমাজন সিম্পল স্টোরেজ সার্ভিস (Amazon S3) অবস্থান বা কাঁচা বাইট।

এই পোস্টে, আমরা ফোকাস আমাজন রিকগনিশন ইমেজ স্টেটলেস এপিআই, এবং ইমেজ পাস করার দুটি বিকল্প নিয়ে আলোচনা করুন এবং কখন একটি সিস্টেম আর্কিটেকচার দৃষ্টিকোণ থেকে অন্যটির উপর একটি বেছে নিতে হবে। তারপরে আমরা কিছু আঞ্চলিক সীমাবদ্ধতা কাটিয়ে উঠতে কীভাবে স্টেটলেস এপিআই স্কেল করা যায় তা নিয়ে আলোচনা করি। স্কেলেবিলিটি সম্পর্কে কথা বলার সময়, আমরা প্রায়শই প্রতি সেকেন্ডে সর্বাধিক লেনদেনের কথা উল্লেখ করি (TPS) সমাধানটি পরিচালনা করতে পারে। উদাহরণস্বরূপ, মুখ বা বস্তুর লেবেল সনাক্ত করতে কম্পিউটার দৃষ্টি ব্যবহার করে এমন একটি বড় ইভেন্ট হোস্ট করার সময়, আপনি একটি ট্র্যাফিক স্পাইকের সম্মুখীন হতে পারেন এবং আপনি চান না যে সিস্টেমটি থ্রোটল হোক। তার মানে আপনাকে মাঝে মাঝে টিপিএস বাড়াতে হবে এবং এমনকি আঞ্চলিক পরিষেবা কোটার বাইরে যেতে হবে যা Amazon Recognition API-এর আছে। এই পোস্টটি একাধিক অঞ্চল ব্যবহার করে স্টেটলেস এপিআই'র টিপিএস বাড়ানোর একটি সমাধান প্রস্তাব করে।

Amazon Recognition স্টেটলেস APIs

অ্যামাজন রিকগনিশন ইমেজ API এর মধ্যে উপলব্ধ, Faces তুলনা করুন, ডিটেক্টফেস, লেবেল সনাক্ত করুন, মডারেশন লেবেল সনাক্ত করুন, ডিটেক্ট প্রোটেক্টিভ ইকুইপমেন্ট, সনাক্তকরণ, এবং সেলিব্রিটিদের স্বীকৃতি দিন রাষ্ট্রহীন। তারা ইমেজ পাস করার জন্য Amazon S3 এবং কাঁচা বাইট উভয় বিকল্প প্রদান করে। উদাহরণস্বরূপ, এর অনুরোধ সিনট্যাক্সে DetectFaces API, পাস করার জন্য দুটি বিকল্প আছে Image ক্ষেত্র: Bytes or S3Object.

ব্যবহার করার সময় S3Object বিকল্প, একটি সাধারণ আর্কিটেকচার নিম্নরূপ।

এই সমাধান নিম্নলিখিত কর্মপ্রবাহ আছে:

  1. ক্লায়েন্ট অ্যাপ্লিকেশনটি হোস্ট করা একটি ওয়েবপেজ অ্যাক্সেস করে এডাব্লুএস পরিবর্ধক.
  2. ক্লায়েন্ট অ্যাপ্লিকেশনটি প্রমাণীকৃত এবং অনুমোদিত অ্যামাজন কগনিটো.
  3. ক্লায়েন্ট অ্যাপ্লিকেশন একটি S3 বালতিতে একটি চিত্র আপলোড করে৷
  4. আমাজন S3 একটি ট্রিগার এডাব্লুএস ল্যাম্বদা অ্যামাজন স্বীকৃতি কল করার ফাংশন।
  5. Lambda ফাংশন S3Object বিকল্প সহ Amazon Recognition APIs কল করে।
  6. Lambda ফাংশন একটি ফলাফল বজায় রাখে আমাজন ডায়নামোডিবি টেবিল।

পছন্দ S3Object নিম্নলিখিত পরিস্থিতিতে বিকল্প:

  • ছবিটি হয় একটি PNG বা JPEG ফর্ম্যাট করা ফাইল৷
  • আপনি পুরো স্ট্যাকটি একই অঞ্চলে স্থাপন করেন যেখানে Amazon Recognition উপলব্ধ
  • Amazon Recognition API-এর আঞ্চলিক পরিষেবা কোটা আপনার সিস্টেমের প্রয়োজনীয়তা পূরণ করে

আপনি যখন এই সমস্ত প্রয়োজনীয়তাগুলি পূরণ করেন না, তখন আপনার বেছে নেওয়া উচিত Bytes বিকল্প।

একটি ভিন্ন অঞ্চলে Amazon Recognition Stateless APIs ব্যবহার করুন

ব্যবহার করার একটি উদাহরণ Bytes বিকল্পটি হল যখন আপনি এমন একটি অঞ্চলে আপনার ব্যবহারের কেস স্থাপন করতে চান যেখানে অ্যামাজন স্বীকৃতি সাধারণত উপলব্ধ নয়, উদাহরণস্বরূপ, যদি আপনার দক্ষিণ আমেরিকায় গ্রাহক উপস্থিতি থাকে (sa-east-1) অঞ্চল. ডেটা রেসিডেন্সির জন্য, ব্যবহারকারীদের ছবি সংরক্ষণ করার জন্য আপনি যে S3 বালতি ব্যবহার করেন তা থাকতে হবে sa-east-1, কিন্তু আপনি আপনার সমাধানের জন্য Amazon Recognition ব্যবহার করতে চান যদিও এটি সাধারণত পাওয়া যায় না sa-east-1. একটি সমাধান ব্যবহার করা হয় Bytes একটি ভিন্ন অঞ্চলে অ্যামাজন স্বীকৃতি কল করার বিকল্প যেখানে অ্যামাজন স্বীকৃতি পাওয়া যায়, যেমন us-east-1. নিচের চিত্রটি এই স্থাপত্যকে তুলে ধরে।

বিভিন্ন অঞ্চলে স্বীকৃতি

Lambda ফাংশনটি ট্রিগার হওয়ার পরে (ধাপ 4), চিত্রের S3 অবস্থানের সাথে সরাসরি Amazon Recognition কল করার পরিবর্তে, ফাংশনটিকে S3 বালতি (ধাপ 5) থেকে চিত্রটি পুনরুদ্ধার করতে হবে, তারপর ছবির কাঁচা বাইটগুলির সাথে Amazon Recognition কল করতে হবে (ধাপ 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 কল ছড়িয়ে রাজ্যবিহীন API-এর TPS স্কেল করুন

আরেকটি ব্যবহারের ক্ষেত্রে Bytes বিকল্প হল আপনি একাধিক অঞ্চলে API কল ছড়িয়ে দিয়ে স্টেটলেস API-এর TPS স্কেল করতে পারেন। এইভাবে, আপনি API-এর আঞ্চলিক পরিষেবা কোটা দ্বারা সীমাবদ্ধ নন কারণ আপনি অন্যান্য অঞ্চল থেকে অতিরিক্ত TPS পেতে পারেন।

নিম্নলিখিত উদাহরণে, অ্যামাজন স্বীকৃতি কল করার জন্য একটি ল্যাম্বডা ফাংশন তৈরি করা হয়েছে DetectLabels API এর সাথে Bytes বিকল্প সর্বাধিক TPS স্কেল করতে, আপনি ওজন সহ একাধিক অঞ্চলে API কলগুলি ছড়িয়ে দিতে পারেন। আপনি যে সর্বাধিক টিপিএস অর্জন করতে পারেন তা দিয়ে গণনা করা হয়: 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 টিপিএস রয়েছে, আপনি এনভায়রনমেন্ট ভেরিয়েবল সেট করে 50/50 ওজন সহ API কলগুলি সমানভাবে ছড়িয়ে দিতে পারেন REGION_1_TRAFFIC_PERCENTAGE 50 পর্যন্ত। এইভাবে, আপনি তত্ত্বগতভাবে মিনিম (50/50%, 50/50%) = 100 টিপিএস অর্জন করতে পারেন।

ধারণাটি যাচাই করার জন্য, ল্যাম্বডা ফাংশনটি একটি REST API হিসাবে উন্মুক্ত করা হয়েছে অ্যামাজন এপিআই গেটওয়ে। তারপর JMeter API পরীক্ষা লোড করতে ব্যবহৃত হয়।

লোড পরীক্ষা স্বীকৃতি API কল

REGION_1_TRAFFIC_PERCENTAGE প্রথম 100 সেট করা হয়, এই ভাবে সব DetectFaces API কল পাঠানো হয় us-east-1 কেবল. তাত্ত্বিকভাবে, সর্বোচ্চ যে টিপিএস অর্জন করা যেতে পারে তা পরিষেবা কোটা দ্বারা সীমিত us-east-1, যা 50 টিপিএস। কাস্টম API এন্ডপয়েন্টে লোড পরীক্ষা, 50টি সমবর্তী থ্রেড দিয়ে শুরু করে, ক্রমবর্ধমানভাবে 5টি থ্রেড যোগ করা পর্যন্ত ProvisionedThroughputExceededException আমাজন থেকে ফিরে স্বীকৃতি পরিলক্ষিত হয়.

REGION_1_TRAFFIC_PERCENTAGE তারপর 50 সেট করা হয়, এই ভাবে সব DetectLabels API কল সমানভাবে পাঠানো হয় us-east-1 এবং us-west-2. তাত্ত্বিকভাবে, সর্বোচ্চ যেটি টিপিএস অর্জন করা যেতে পারে তা হল পরিষেবা কোটা যা দুটি অঞ্চল একত্রিত করে, যা 100 টিপিএস। সর্বোচ্চ TPS খুঁজে পেতে 100টি থ্রেড থেকে আবার লোড পরীক্ষা শুরু করুন।

নিম্নলিখিত সারণী লোড পরীক্ষার ফলাফল সংক্ষিপ্ত করে।

DetectLabels API কলের শতাংশ-ইস্ট-1 DetectLabels API কলের শতকরা হার to us-west-2 তত্ত্বে সর্বোচ্চ টিপিএস সর্বোচ্চ সমসাময়িক রান ছাড়া ProvisionedThroughputExceededException
100 0 50 70
50 50 100 145

উপসংহার

অনেক গ্রাহক পরিচয় যাচাইকরণ, বিষয়বস্তু সংযমকরণ, মিডিয়া প্রক্রিয়াকরণ এবং আরও অনেক কিছু সহ বিভিন্ন ব্যবহারের ক্ষেত্রে Amazon Recognition Image Stateless API ব্যবহার করছেন। এই পোস্টটি চিত্র পাস করার দুটি বিকল্প এবং নিম্নলিখিত ব্যবহারের ক্ষেত্রে কাঁচা বাইট বিকল্পটি কীভাবে ব্যবহার করতে হয় তা নিয়ে আলোচনা করেছে:

  • আমাজন স্বীকৃতি আঞ্চলিক প্রাপ্যতা
  • কাস্টমার ডাটা রেসিডেন্সি
  • Amazon Recognition স্টেটলেস API-এর TPS স্কেল করা

কিভাবে Amazon Recognition ব্যবহার করা হয় তা দেখুন বিভিন্ন কম্পিউটার ভিশন ব্যবহারের ক্ষেত্রে এবং আপনার উদ্ভাবনী যাত্রা শুরু করুন।


লেখক সম্পর্কে

একাধিক অঞ্চল PlatoBlockchain ডেটা ইন্টেলিজেন্স ব্যবহার করে Amazon Recognition স্টেটলেস API-এর জন্য স্কেলেবিলিটি উন্নত করুন। উল্লম্ব অনুসন্ধান. আ.শ্যারন লি বোস্টন, এমএ এলাকায় অবস্থিত AWS-এর একজন সমাধান স্থপতি। তিনি এন্টারপ্রাইজ গ্রাহকদের সাথে কাজ করেন, তাদের কঠিন সমস্যা সমাধান করতে এবং AWS তৈরিতে সহায়তা করেন। কাজের বাইরে, তিনি তার পরিবারের সাথে সময় কাটাতে এবং স্থানীয় রেস্তোরাঁগুলো ঘুরে দেখতে পছন্দ করেন।

একাধিক অঞ্চল PlatoBlockchain ডেটা ইন্টেলিজেন্স ব্যবহার করে Amazon Recognition স্টেটলেস API-এর জন্য স্কেলেবিলিটি উন্নত করুন। উল্লম্ব অনুসন্ধান. আ.বৈভব শাহ তিনি AWS-এর একজন সিনিয়র সলিউশন আর্কিটেক্ট এবং তার গ্রাহকদের সবকিছু ক্লাউড দিয়ে সাহায্য করতে এবং তাদের ক্লাউড গ্রহণের যাত্রা সক্ষম করতে চান। কাজের বাইরে, তিনি ভ্রমণ, নতুন জায়গা এবং রেস্তোরাঁগুলি অন্বেষণ করতে, রান্না করতে, ক্রিকেট এবং ফুটবলের মতো খেলাধুলা অনুসরণ করতে, সিনেমা এবং সিরিজ (মার্ভেল ফ্যান) দেখা এবং হাইকিং, স্কাইডাইভিংয়ের মতো দুঃসাহসিক কার্যকলাপ পছন্দ করেন এবং তালিকাটি চলতে থাকে।

সময় স্ট্যাম্প:

থেকে আরো এডাব্লুএস মেশিন লার্নিং

অ্যামাজন সেজমেকার ডেটা র্যাংলারের সাথে মাল্টিকলিনিয়ারিটি, টার্গেট লিকেজ এবং বৈশিষ্ট্যের সম্পর্ক সনাক্ত করুন

উত্স নোড: 1756415
সময় স্ট্যাম্প: নভেম্বর 15, 2022

AWS APEJ AI লাইফ-সাইকেল সফটওয়্যার টুলস এবং প্ল্যাটফর্ম ভেন্ডর অ্যাসেসমেন্টের জন্য 2022 IDC মার্কেটস্কেপে লিডার ক্যাটাগরিতে অবস্থান করেছে

উত্স নোড: 1785099
সময় স্ট্যাম্প: জানুয়ারী 6, 2023