Amazon Kinesis, AWS Glue, এবং Amazon SageMaker PlatoBlockchain ডেটা ইন্টেলিজেন্স দিয়ে একটি ভবিষ্যদ্বাণীমূলক রক্ষণাবেক্ষণ সমাধান তৈরি করুন। উল্লম্ব অনুসন্ধান. আ.

Amazon Kinesis, AWS Glue, এবং Amazon SageMaker এর সাথে একটি ভবিষ্যদ্বাণীমূলক রক্ষণাবেক্ষণ সমাধান তৈরি করুন

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

যদিও কাছাকাছি-রিয়েল-টাইম এমএল-চালিত সমাধানগুলির ব্যবসায়িক মূল্য এবং সুবিধাগুলি সুপ্রতিষ্ঠিত, সর্বোত্তম নির্ভরযোগ্যতা এবং কর্মক্ষমতা সহ স্কেলে এই সমাধানগুলি বাস্তবায়নের জন্য প্রয়োজনীয় আর্কিটেকচারটি জটিল। আপনি কিভাবে একত্রিত করতে পারেন এই পোস্টটি বর্ণনা করে আমাজন কিনেসিস, এডাব্লুএস আঠালো, এবং আমাজন সেজমেকার ভবিষ্যদ্বাণীমূলক রক্ষণাবেক্ষণের জন্য একটি কাছাকাছি-রিয়েল-টাইম বৈশিষ্ট্য ইঞ্জিনিয়ারিং এবং অনুমান সমাধান তৈরি করতে।

কেস ওভারভিউ ব্যবহার করুন

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

এই পোস্টে, আমরা বায়ুর তাপমাত্রা, প্রক্রিয়া তাপমাত্রা, ঘূর্ণন গতি, টর্ক এবং টুল পরিধানের মতো বৈশিষ্ট্যগুলির কারণে মেশিনের ব্যর্থতা ধারণকারী একটি সিন্থেটিক ডেটাসেটে মেশিন লার্নিং প্রয়োগ করার উপর ফোকাস করি। ব্যবহৃত ডেটাসেট থেকে উৎস করা হয় UCI ডেটা রিপোজিটরি.

মেশিনের ব্যর্থতা পাঁচটি স্বাধীন ব্যর্থতার মোড নিয়ে গঠিত:

  • টুল পরিধান ব্যর্থতা (TWF)
  • তাপ অপসারণ ব্যর্থতা (HDF)
  • পাওয়ার ব্যর্থতা (PWF)
  • ওভার-স্ট্রেন ব্যর্থতা (OSF)
  • এলোমেলো ব্যর্থতা (RNF)

মেশিনের ব্যর্থতার লেবেল নির্দেশ করে যে মেশিনটি একটি নির্দিষ্ট ডেটা পয়েন্টের জন্য ব্যর্থ হয়েছে কিনা যদি পূর্ববর্তী ব্যর্থতার মোডগুলির কোনটি সত্য হয়। ব্যর্থতার মোডগুলির মধ্যে অন্তত একটি সত্য হলে, প্রক্রিয়াটি ব্যর্থ হয় এবং মেশিনের ব্যর্থতার লেবেলটি 1 এ সেট করা হয়। এমএল মডেলের উদ্দেশ্য হল মেশিনের ব্যর্থতাগুলি সঠিকভাবে চিহ্নিত করা, তাই একটি নিম্নধারার ভবিষ্যদ্বাণীমূলক রক্ষণাবেক্ষণ কর্ম শুরু করা যেতে পারে।

সমাধান ওভারভিউ

আমাদের ভবিষ্যদ্বাণীমূলক রক্ষণাবেক্ষণ ব্যবহারের ক্ষেত্রে, আমরা অনুমান করি যে ডিভাইস সেন্সরগুলি মেশিনের অংশগুলি সম্পর্কে বিভিন্ন পরিমাপ এবং রিডিং স্ট্রিম করে। আমাদের সমাধানটি প্রতিবার (মাইক্রো-ব্যাচ) স্ট্রিমিং ডেটার একটি স্লাইস নেয় এবং বৈশিষ্ট্যগুলি তৈরি করতে প্রক্রিয়াকরণ এবং বৈশিষ্ট্য প্রকৌশল সম্পাদন করে। তৈরি করা বৈশিষ্ট্যগুলি তখন প্রায় বাস্তব সময়ে একটি প্রশিক্ষিত এবং স্থাপন করা এমএল মডেল থেকে অনুমান তৈরি করতে ব্যবহৃত হয়। উত্পন্ন অনুমানগুলিকে আরও প্রক্রিয়াজাত করা যেতে পারে এবং ডাউনস্ট্রিম অ্যাপ্লিকেশনগুলি দ্বারা গ্রাস করা যেতে পারে, যথাযথ পদক্ষেপ নিতে এবং রক্ষণাবেক্ষণের কার্যকলাপ শুরু করতে।

নিম্নলিখিত চিত্রটি আমাদের সামগ্রিক সমাধানের আর্কিটেকচার দেখায়।

সমাধানটি বিস্তৃতভাবে নিম্নলিখিত বিভাগগুলি নিয়ে গঠিত, যা এই পোস্টে পরে বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে:

  • স্ট্রিমিং ডেটা উৎস এবং ইনজেশন - আমরা ব্যাবহার করি অ্যামাজন কিনসিস ডেটা স্ট্রিম ফিল্ড সেন্সর থেকে স্কেলে স্ট্রিমিং ডেটা সংগ্রহ করা এবং আরও প্রক্রিয়াকরণের জন্য এটি উপলব্ধ করা।
  • কাছাকাছি-রিয়েল-টাইম বৈশিষ্ট্য প্রকৌশল - আমরা AWS Glue স্ট্রিমিং কাজগুলি ব্যবহার করি একটি Kinesis ডেটা স্ট্রিম থেকে ডেটা পড়তে এবং ডেটা প্রসেসিং এবং ফিচার ইঞ্জিনিয়ারিং সঞ্চালনের জন্য, প্রাপ্ত বৈশিষ্ট্যগুলি সংরক্ষণ করার আগে আমাজন সিম্পল স্টোরেজ সার্ভিস (Amazon S3)। Amazon S3 বিপুল পরিমাণ ডেটা সঞ্চয় করার জন্য একটি নির্ভরযোগ্য এবং সাশ্রয়ী বিকল্প প্রদান করে।
  • মডেল প্রশিক্ষণ এবং স্থাপনা - আমরা SageMaker ব্যবহার করে XGBoost অ্যালগরিদমের উপর ভিত্তি করে একটি ML মডেল প্রশিক্ষণের জন্য UCI ডেটা সংগ্রহস্থল থেকে AI4I ভবিষ্যদ্বাণীমূলক রক্ষণাবেক্ষণ ডেটাসেট ব্যবহার করি। তারপরে আমরা প্রশিক্ষিত মডেলটিকে সেজমেকার অ্যাসিঙ্ক্রোনাস ইনফারেন্স এন্ডপয়েন্টে স্থাপন করি।
  • কাছাকাছি-রিয়েল-টাইম ML অনুমান - অ্যামাজন এস 3-তে বৈশিষ্ট্যগুলি উপলব্ধ হওয়ার পরে, আমাদের মোতায়েন করা মডেল থেকে প্রায় বাস্তব সময়ে অনুমান তৈরি করতে হবে। সেজমেকার অ্যাসিঙ্ক্রোনাস ইনফারেন্স এন্ডপয়েন্টগুলি এই প্রয়োজনীয়তার জন্য উপযুক্ত কারণ তারা বৃহত্তর পেলোড আকার (1 জিবি পর্যন্ত) সমর্থন করে এবং মিনিটের মধ্যে (সর্বোচ্চ 15 মিনিট পর্যন্ত) অনুমান তৈরি করতে পারে। আমরা একটি চালানোর জন্য S3 ইভেন্ট বিজ্ঞপ্তি ব্যবহার করি এডাব্লুএস ল্যাম্বদা একটি SageMaker অ্যাসিঙ্ক্রোনাস ইনফারেন্স এন্ডপয়েন্ট আহ্বান করার ফাংশন। SageMaker অ্যাসিঙ্ক্রোনাস ইনফারেন্স এন্ডপয়েন্টগুলি S3 অবস্থানগুলিকে ইনপুট হিসাবে গ্রহণ করে, স্থাপন করা মডেল থেকে অনুমান তৈরি করে এবং এই অনুমানগুলিকে প্রায় বাস্তব সময়ে Amazon S3-এ লিখতে পারে৷

এই সমাধানের জন্য সোর্স কোড অবস্থিত GitHub. সমাধান পরীক্ষা করা হয়েছে এবং us-east-1 এ চালানো উচিত।

আমরা একটি ব্যবহার এডাব্লুএস ক্লাউডফর্মেশন টেমপ্লেট, ব্যবহার করে স্থাপন করা হয়েছে এডাব্লুএস সার্ভারলেস অ্যাপ্লিকেশন মডেল (AWS SAM), এবং SageMaker নোটবুক সমাধান স্থাপন করতে।

পূর্বশর্ত

শুরু করার জন্য, পূর্বশর্ত হিসাবে, আপনার অবশ্যই থাকতে হবে SAM CLI, পাইথন 3, এবং বীচি ইনস্টল করা আপনি এছাড়াও থাকতে হবে এডাব্লুএস কমান্ড লাইন ইন্টারফেস (AWS CLI) সঠিকভাবে কনফিগার করা হয়েছে।

সমাধান স্থাপন করুন

তুমি ব্যবহার করতে পার এডাব্লুএস ক্লাউডশেল এই পদক্ষেপগুলি চালানোর জন্য। CloudShell হল একটি ব্রাউজার-ভিত্তিক শেল যা আপনার কনসোল শংসাপত্রের সাথে প্রাক-প্রমাণিত করা হয় এবং এতে প্রাক-ইনস্টল করা সাধারণ ডেভেলপমেন্ট এবং অপারেশন টুল (যেমন AWS SAM, AWS CLI, এবং Python) অন্তর্ভুক্ত থাকে। অতএব, কোন স্থানীয় ইনস্টলেশন বা কনফিগারেশন প্রয়োজন হয় না.

  • আমরা একটি S3 বালতি তৈরি করে শুরু করি যেখানে আমরা আমাদের AWS Glue স্ট্রিমিং কাজের জন্য স্ক্রিপ্ট সংরক্ষণ করি। একটি নতুন বালতি তৈরি করতে আপনার টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
aws s3api create-bucket --bucket sample-script-bucket-$RANDOM --region us-east-1

  • তৈরি করা বালতিটির নাম নোট করুন।

ML-9132 সমাধান খিলান

  • এরপরে, আমরা স্থানীয়ভাবে কোড রিপোজিটরি ক্লোন করি, যাতে স্ট্যাক স্থাপনের জন্য ক্লাউডফর্মেশন টেমপ্লেট থাকে। আপনার টার্মিনালে নিম্নলিখিত কমান্ডটি চালান:
git clone https://github.com/aws-samples/amazon-sagemaker-predictive-maintenance

  • sam-টেমপ্লেট ডিরেক্টরিতে নেভিগেট করুন:
cd amazon-sagemaker-predictive-maintenance/sam-template

ML-9132 গিট ক্লোন রেপো

  • আপনার তৈরি করা S3 বালতিতে AWS Glue কাজের স্ক্রিপ্ট (glue_streaming/app.py থেকে) অনুলিপি করতে নিম্নলিখিত কমান্ডটি চালান:
aws s3 cp glue_streaming/app.py s3://sample-script-bucket-30232/glue_streaming/app.py

ML-9132 অনুলিপি আঠালো স্ক্রিপ্ট

  • আপনি এখন AWS SAM এর মাধ্যমে ক্লাউডফর্মেশন টেমপ্লেটের মাধ্যমে সমাধানটি তৈরি এবং স্থাপনের সাথে এগিয়ে যেতে পারেন। নিম্নলিখিত কমান্ড চালান:

ML-9132 SAM বিল্ড

sam deploy --guided

  • স্থাপনার জন্য যুক্তি প্রদান করুন যেমন স্ট্যাকের নাম, পছন্দের AWS অঞ্চল (us-east-1), এবং GlueScriptsBucket.

নিশ্চিত করুন যে আপনি একই S3 বালতি প্রদান করেছেন যা আপনি AWS Glue স্ক্রিপ্ট S3 বালতির জন্য তৈরি করেছেন (প্যারামিটার GlueScriptsBucket নিম্নলিখিত স্ক্রিনশটে)।

ML-9132 SAM ডিপ্লোয় পরম

আপনি প্রয়োজনীয় আর্গুমেন্ট প্রদান করার পরে, AWS SAM স্ট্যাক স্থাপনা শুরু করে। নিম্নলিখিত স্ক্রিনশট তৈরি করা সম্পদ দেখায়।

ML-9132 SAM মোতায়েন করা হয়েছে

স্ট্যাক সফলভাবে স্থাপন করার পরে, আপনার নিম্নলিখিত বার্তাটি দেখতে হবে।

ML-9132 SAM CF মোতায়েন করা হয়েছে

  • AWS CloudFormation কনসোলে, স্ট্যাকটি খুলুন (এই পোস্টের জন্য, nrt-streaming-inference) যা CloudFormation টেমপ্লেট স্থাপন করার সময় প্রদান করা হয়েছিল।
  • উপরে Resources ট্যাব, সেজমেকার নোটবুক ইনস্ট্যান্স আইডি নোট করুন।
  1. ML-9132 SM নোটবুক তৈরি করা হয়েছে
  • SageMaker কনসোলে, এই উদাহরণটি খুলুন।

ML-9132 image018

সেজমেকার নোটবুক উদাহরণে ইতিমধ্যে প্রয়োজনীয় নোটবুকগুলি প্রি-লোড করা আছে।

নোটবুক ফোল্ডারে নেভিগেট করুন এবং নোটবুকের মধ্যে নির্দেশাবলী খুলুন এবং অনুসরণ করুন (Data_Pre-Processing.ipynb এবং ModelTraining-Evaluation-and-Deployment.ipynb) ডেটাসেট অন্বেষণ করতে, প্রিপ্রসেসিং এবং ফিচার ইঞ্জিনিয়ারিং সঞ্চালন করতে এবং মডেলটিকে একটি সেজমেকার অ্যাসিঙ্ক্রোনাস ইনফারেন্স এন্ডপয়েন্টে প্রশিক্ষণ ও স্থাপন করতে।

ML-9132 খুলুন SM নোটবুক

স্ট্রিমিং ডেটা উৎস এবং ইনজেশন

Kinesis ডেটা স্ট্রীমস হল একটি সার্ভারবিহীন, মাপযোগ্য, এবং টেকসই রিয়েল-টাইম ডেটা স্ট্রিমিং পরিষেবা যা আপনি রিয়েল টাইমে ডেটা রেকর্ডের বড় স্ট্রিম সংগ্রহ এবং প্রক্রিয়া করতে ব্যবহার করতে পারেন। Kinesis ডেটা স্ট্রিমগুলি বিভিন্ন উত্স থেকে ডেটা স্ট্রিমগুলি ক্যাপচার, প্রক্রিয়াকরণ এবং সংরক্ষণ করতে সক্ষম করে, যেমন IT পরিকাঠামো লগ ডেটা, অ্যাপ্লিকেশন লগ, সোশ্যাল মিডিয়া, মার্কেট ডেটা ফিড, ওয়েব ক্লিকস্ট্রিম ডেটা, IoT ডিভাইস এবং সেন্সর এবং আরও অনেক কিছু। আপনি থ্রুপুট এবং স্কেলিং প্রয়োজনীয়তার উপর নির্ভর করে অন-ডিমান্ড মোডে বা প্রভিশন মোডে একটি কাইনেসিস ডেটা স্ট্রিম প্রভিশন করতে পারেন। আরও তথ্যের জন্য, দেখুন ডেটা স্ট্রিম ক্যাপাসিটি মোড নির্বাচন করা হচ্ছে.

আমাদের ব্যবহারের ক্ষেত্রে, আমরা ধরে নিই যে বিভিন্ন সেন্সর একটি ডেটা স্ট্রীমে তাপমাত্রা, ঘূর্ণন গতি, টর্ক এবং টুল পরিধানের মতো পরিমাপ পাঠাচ্ছে। কাইনেসিস ডেটা স্ট্রিমগুলি ডেটা স্ট্রিমগুলি সংগ্রহ এবং গ্রহণ করার জন্য একটি ফানেল হিসাবে কাজ করে।

আমরা ব্যবহার করি অ্যামাজন কাইনেসিস ডেটা জেনারেটর (KDG) পরে এই পোস্টে একটি Kinesis ডেটা স্ট্রীমে ডেটা তৈরি এবং পাঠাতে, সেন্সর দ্বারা তৈরি করা ডেটা অনুকরণ করে। ডেটা স্ট্রীম সেন্সর-ডেটা-স্ট্রীম থেকে ডেটা গ্রহণ করা হয় এবং একটি AWS গ্লু স্ট্রিমিং কাজ ব্যবহার করে প্রক্রিয়া করা হয়, যা আমরা পরবর্তী আলোচনা করব।

কাছাকাছি-রিয়েল-টাইম বৈশিষ্ট্য প্রকৌশল

AWS Glue স্ট্রিমিং জব কম্পিউট এনভায়রনমেন্ট পরিচালনা করার প্রয়োজন ছাড়াই স্কেলে স্ট্রিমিং ডেটা প্রক্রিয়া করার একটি সুবিধাজনক উপায় প্রদান করে। AWS Glue আপনাকে ক্রমাগত চলমান কাজগুলি ব্যবহার করে স্ট্রিমিং ডেটাতে এক্সট্রাক্ট, ট্রান্সফর্ম এবং লোড (ETL) অপারেশন করতে দেয়। এডাব্লুএস গ্লু স্ট্রিমিং ইটিএল অ্যাপাচি স্পার্ক স্ট্রাকচার্ড স্ট্রিমিং ইঞ্জিনে তৈরি করা হয়েছে এবং এটি কিনেসিস, অ্যাপাচি কাফকা এবং Apache Kafka-এর জন্য Amazon পরিচালিত স্ট্রিমিং (আমাজন এমএসকে)।

স্ট্রিমিং ETL জব AWS Glue বিল্ট-ইন ট্রান্সফর্ম এবং রূপান্তর উভয়ই ব্যবহার করতে পারে যা Apache Spark স্ট্রাকচার্ড স্ট্রিমিং-এর নেটিভ। আপনি স্পার্ক এমএল এবং ব্যবহার করতে পারেন MLLib সহজলভ্য সাহায্যকারী লাইব্রেরি ব্যবহার করে সহজ বৈশিষ্ট্য প্রক্রিয়াকরণের জন্য AWS Glue-এর লাইব্রেরি।

যদি স্ট্রিমিং ডেটা উৎসের স্কিমা পূর্ব-নির্ধারিত থাকে, তাহলে আপনি এটি একটি AWS ডেটা ক্যাটালগ টেবিলে উল্লেখ করতে পারেন। স্কিমার সংজ্ঞা আগে থেকে নির্ধারণ করা না গেলে, আপনি স্ট্রিমিং ETL কাজের মধ্যে স্কিমা সনাক্তকরণ সক্ষম করতে পারেন। কাজটি তখন স্বয়ংক্রিয়ভাবে আগত ডেটা থেকে স্কিমা নির্ধারণ করে। উপরন্তু, আপনি ব্যবহার করতে পারেন AWS গ্লু স্কিমা রেজিস্ট্রি ডেটা স্ট্রিম স্কিমাগুলির কেন্দ্রীয় আবিষ্কার, নিয়ন্ত্রণ এবং বিবর্তনের অনুমতি দিতে। ডেটা ক্যাটালগে AWS Glue টেবিল বা পার্টিশন তৈরি বা আপডেট করার সময় আপনি স্কিমা রেজিস্ট্রিতে সঞ্চিত স্কিমাগুলিকে ঐচ্ছিকভাবে ব্যবহার করতে ডেটা ক্যাটালগের সাথে স্কিমা রেজিস্ট্রিকে আরও একীভূত করতে পারেন।

এই পোস্টের জন্য, আমরা একটি AWS আঠালো ডেটা ক্যাটালগ টেবিল তৈরি করি (sensor-stream) উৎস হিসাবে আমাদের Kinesis ডেটা স্ট্রিম সহ এবং আমাদের সেন্সর ডেটার জন্য স্কিমা সংজ্ঞায়িত করুন।

আমরা Kinesis থেকে স্ট্রিমিং ডেটা পড়ার জন্য ডেটা ক্যাটালগ টেবিল থেকে একটি AWS Glue ডাইনামিক ডেটাফ্রেম তৈরি করি। আমরা নিম্নলিখিত বিকল্পগুলিও নির্দিষ্ট করি:

  • 60 সেকেন্ডের একটি উইন্ডোর আকার, যাতে AWS Glue জব 60-সেকেন্ডের উইন্ডোতে ডেটা পড়ে এবং প্রক্রিয়া করে
  • শুরুর অবস্থান TRIM_HORIZON, কাইনেসিস ডেটা স্ট্রীমের প্রাচীনতম রেকর্ডগুলি থেকে পড়ার অনুমতি দিতে

আমরা স্পার্ক এমএললিব ব্যবহার করি স্ট্রিং ইনডেক্সার স্ট্রিং কলাম টাইপকে লেবেল ইনডেক্সে এনকোড করতে ফিচার ট্রান্সফরমার। এই রূপান্তরটি স্পার্ক এমএল পাইপলাইন ব্যবহার করে বাস্তবায়িত হয়। স্পার্ক এমএল পাইপলাইন একাধিক অ্যালগরিদমকে একক পাইপলাইন বা ওয়ার্কফ্লোতে একত্রিত করা সহজ করার জন্য ML অ্যালগরিদমের জন্য উচ্চ-স্তরের APIগুলির একটি অভিন্ন সেট প্রদান করুন।

আমরা প্রসেসব্যাচ নামের একটি ফাংশন চালু করতে 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})

ফাংশন প্রসেসব্যাচ বছর, মাস, দিন এবং ব্যাচ আইডির উপর ভিত্তি করে Amazon S3-এ নির্দিষ্ট রূপান্তর এবং ডেটা পার্টিশন করে।

Amazon S3-এ খুব বেশি ছোট ফাইল থাকা এড়াতে আমরা AWS Glue পার্টিশনগুলিকে একটি একক পার্টিশনে পুনরায় পার্টিশন করি। বেশ কয়েকটি ছোট ফাইল থাকার ফলে পড়ার কার্যক্ষমতাকে বাধাগ্রস্ত করতে পারে, কারণ এটি প্রতিটি ফাইল খোঁজা, খোলা এবং পড়ার সাথে সম্পর্কিত ওভারহেডকে প্রশস্ত করে। আমরা অবশেষে 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()))

মডেল প্রশিক্ষণ এবং স্থাপনা

SageMaker হল একটি সম্পূর্ণরূপে পরিচালিত এবং সমন্বিত ML পরিষেবা যা ডেটা বিজ্ঞানী এবং ML ইঞ্জিনিয়ারদের দ্রুত এবং সহজে ML মডেলগুলি তৈরি করতে, প্রশিক্ষণ দিতে এবং স্থাপন করতে সক্ষম করে৷

Data_Pre-Processing.ipynb নোটবুকের মধ্যে, আমরা প্রথমে UCI ডেটা রিপোজিটরি থেকে AI4I ভবিষ্যদ্বাণীমূলক রক্ষণাবেক্ষণ ডেটাসেট আমদানি করি এবং অনুসন্ধানমূলক ডেটা বিশ্লেষণ (EDA) করি। মডেল প্রশিক্ষণের জন্য আমাদের বৈশিষ্ট্যগুলিকে আরও উপযোগী করে তুলতে আমরা ফিচার ইঞ্জিনিয়ারিংও করি।

উদাহরণস্বরূপ, ডেটাসেটের মধ্যে, আমাদের টাইপ নামের একটি বৈশিষ্ট্য রয়েছে, যা পণ্যের গুণমানের ধরণকে L (নিম্ন), M (মাঝারি), বা H (উচ্চ) হিসাবে উপস্থাপন করে। কারণ এটি একটি স্বতন্ত্র বৈশিষ্ট্য, আমাদের মডেল প্রশিক্ষণের আগে আমাদের এটিকে এনকোড করতে হবে। আমরা এটি অর্জন করতে Scikit-Learn এর LabelEncoder ব্যবহার করি:

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

বৈশিষ্ট্যগুলি প্রক্রিয়া করার পরে এবং কিউরেটেড ট্রেন এবং পরীক্ষার ডেটাসেটগুলি তৈরি হওয়ার পরে, আমরা সিস্টেম রিডিংয়ের উপর ভিত্তি করে মেশিনটি ব্যর্থ হয়েছে কিনা তা অনুমান করতে একটি ML মডেলকে প্রশিক্ষণ দিতে প্রস্তুত৷ SageMaker বিল্ট-ইন অ্যালগরিদম ব্যবহার করে আমরা একটি XGBoost মডেলকে প্রশিক্ষণ দিই। এক্সজিবিস্ট প্রশিক্ষণের নমুনা সীমিত থাকলেও ক্লাসিফিকেশন সহ একাধিক ধরনের ML সমস্যার জন্য ভালো ফলাফল দিতে পারে।

সেজমেকার প্রশিক্ষণের চাকরি সেজমেকারে এমএল মডেলগুলিকে প্রশিক্ষণের জন্য একটি শক্তিশালী এবং নমনীয় উপায় প্রদান করে। সেজমেকার অন্তর্নিহিত গণনা পরিকাঠামো পরিচালনা করে এবং প্রদান করে একাধিক বিকল্প ব্যবহারের ক্ষেত্রের উপর ভিত্তি করে, বিভিন্ন মডেল প্রশিক্ষণের প্রয়োজনীয়তার জন্য বেছে নিতে।

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},
},)

তারপরে আমরা তৈরি করা এন্ডপয়েন্ট কনফিগারেশন ব্যবহার করে একটি SageMaker অ্যাসিঙ্ক্রোনাস ইনফারেন্স এন্ডপয়েন্ট তৈরি করি। এটির ব্যবস্থা করার পরে, আমরা অ্যাসিঙ্ক্রোনাসভাবে অনুমানগুলি তৈরি করতে এন্ডপয়েন্টটি শুরু করতে পারি।

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 ক্ষেত্রের সাথে আপনার এন্ডপয়েন্ট কনফিগারেশন তৈরি করার সময়। নিম্নলিখিত চিত্রটি অনুমান কার্যপ্রবাহ দেখায় এবং কীভাবে একটি অ্যাসিঙ্ক্রোনাস ইনফারেন্স এন্ডপয়েন্ট একটি অনুমান তৈরি করে।

ML-9132 SageMaker Asych Arch

অ্যাসিঙ্ক্রোনাস ইনফারেন্স এন্ডপয়েন্ট চালু করতে, অনুরোধের পেলোডটি Amazon S3 এ সংরক্ষণ করা উচিত এবং InvokeEndpointAsync অনুরোধের অংশ হিসাবে এই পেলোডের রেফারেন্স প্রদান করা প্রয়োজন। আহ্বানের পরে, সেজমেকার প্রক্রিয়াকরণের জন্য অনুরোধটি সারিবদ্ধ করে এবং প্রতিক্রিয়া হিসাবে একটি শনাক্তকারী এবং আউটপুট অবস্থান প্রদান করে। প্রক্রিয়াকরণের পরে, সেজমেকার ফলাফলটিকে আমাজন S3 অবস্থানে রাখে। আপনি ঐচ্ছিকভাবে এর সাথে সাফল্য বা ত্রুটি বিজ্ঞপ্তিগুলি পেতে বেছে নিতে পারেন৷ অ্যামাজন সাধারণ বিজ্ঞপ্তি পরিষেবা (আমাজন এসএনএস)।

শেষ থেকে শেষ সমাধান পরীক্ষা করুন

সমাধান পরীক্ষা করতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  • AWS CloudFormation কনসোলে, আপনি আগে তৈরি করা স্ট্যাকটি খুলুন (nrt-streaming-inference).
  • উপরে আউটপুট ট্যাব, S3 বালতির নাম অনুলিপি করুন (EventsBucket).

এটি হল সেই S3 বালতি যেখানে আমাদের AWS Glue স্ট্রিমিং জব Kinesis ডেটা স্ট্রীম থেকে পড়ার এবং প্রক্রিয়াকরণের পরে বৈশিষ্ট্যগুলি লেখে।

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 ইভেন্ট বালতি বিজ্ঞপ্তি কনফিগার ল্যাম্বডা

  • AWS Glue কনসোলে, কাজটি খুলুন GlueStreaming-Kinesis-S3.
  • বেছে নিন কাজ চালান.

ML-9132 আঠালো কাজ চালান

এরপরে আমরা কাইনেসিস ডেটা জেনারেটর (KDG) ব্যবহার করি আমাদের কাইনেসিস ডেটা স্ট্রীমে ডেটা পাঠানোর সেন্সরগুলিকে অনুকরণ করতে। আপনি যদি প্রথমবার KDG ব্যবহার করেন, তাহলে দেখুন সংক্ষিপ্ত বিবরণ প্রাথমিক সেটআপের জন্য। KDG ব্যবহারকারী তৈরি করার জন্য একটি ক্লাউডফর্মেশন টেমপ্লেট প্রদান করে এবং Kinesis-এ ইভেন্ট পাঠানোর জন্য KDG ব্যবহার করার জন্য যথেষ্ট অনুমতি বরাদ্দ করে। চালান CloudFormation টেমপ্লেট AWS অ্যাকাউন্টের মধ্যে যা আপনি এই পোস্টে সমাধান তৈরি করতে ব্যবহার করছেন। KDG সেট আপ করার পরে, আমাদের Kinesis ডেটা স্ট্রীমে পরীক্ষার ইভেন্টগুলি পাঠাতে লগ ইন করুন এবং KDG-এ অ্যাক্সেস করুন।

  • যে অঞ্চলে আপনি কাইনেসিস ডেটা স্ট্রিম তৈরি করেছেন সেটি ব্যবহার করুন (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 Data Gen

AWS Glue স্ট্রিমিং কাজ প্রদত্ত উইন্ডোর আকারের উপর ভিত্তি করে Kinesis ডেটা স্ট্রীম থেকে ডেটার একটি মাইক্রো-ব্যাচ (সেন্সর রিডিং প্রতিনিধিত্ব করে) পড়ে এবং বের করে। স্ট্রিমিং কাজটি পার্টিশন করার আগে এই মাইক্রো-ব্যাচে ফিচার ইঞ্জিনিয়ারিং প্রক্রিয়া করে এবং সম্পাদন করে এবং এটিকে S3 বাকেটের মধ্যে প্রিফিক্স বৈশিষ্ট্যগুলিতে লেখা হয়।

যেহেতু AWS Glue স্ট্রিমিং কাজের দ্বারা তৈরি নতুন বৈশিষ্ট্যগুলি S3 বালতিতে লেখা হয়, একটি Lambda ফাংশন (invoke-endpoint-asynch) ট্রিগার করা হয়েছে, যা আমাদের মোতায়েন করা এমএল মডেল থেকে অনুমান পেতে একটি আহ্বানের অনুরোধ পাঠিয়ে একটি সেজমেকার অ্যাসিঙ্ক্রোনাস ইনফারেন্স এন্ডপয়েন্টকে আহ্বান করে। অ্যাসিঙ্ক্রোনাস ইনফারেন্স এন্ডপয়েন্ট অ্যাসিঙ্ক্রোনাস ইনভোকেশনের অনুরোধের সারিবদ্ধ করে। প্রক্রিয়াকরণ সম্পূর্ণ হলে, সেজমেকার আমাজন S3 অবস্থানে অনুমান ফলাফল সংরক্ষণ করে (S3OutputPath) যা অ্যাসিঙ্ক্রোনাস ইনফারেন্স এন্ডপয়েন্ট কনফিগারেশনের সময় নির্দিষ্ট করা হয়েছিল।

আমাদের ব্যবহারের ক্ষেত্রে, অনুমান ফলাফলগুলি সেন্সর রিডিংয়ের উপর ভিত্তি করে একটি মেশিনের অংশ ব্যর্থ হওয়ার সম্ভাবনা রয়েছে কিনা তা নির্দেশ করে।

ML-9132 মডেল অনুমান

সেজমেকার অ্যামাজন এসএনএস-এর সাথে সাফল্য বা ত্রুটির বিজ্ঞপ্তিও পাঠায়। উদাহরণস্বরূপ, যদি আপনি একটি সেট আপ ইমেল সাবস্ক্রিপশন সাফল্য এবং ত্রুটি SNS বিষয়গুলির জন্য (অসিঙ্ক্রোনাস সেজমেকার ইনফারেন্স এন্ডপয়েন্ট কনফিগারেশনের মধ্যে নির্দিষ্ট করা হয়েছে), প্রতিবার একটি অনুমান অনুরোধ প্রক্রিয়া করার সময় একটি ইমেল পাঠানো যেতে পারে। নিম্নলিখিত স্ক্রিনশটটি SNS সাফল্যের বিষয় থেকে একটি নমুনা ইমেল দেখায়।

ML-9132 SNS ইমেইল সাবস্ক্রাইব করুন

বাস্তব-বিশ্বের অ্যাপ্লিকেশনের জন্য, আপনি SNS বিজ্ঞপ্তিগুলিকে অন্যান্য পরিষেবার সাথে একীভূত করতে পারেন যেমন অ্যামাজন সরল সারি পরিষেবা (Amazon SQS) এবং Lambda আপনার প্রয়োজনীয়তার উপর ভিত্তি করে, উত্পন্ন অনুমানগুলির অতিরিক্ত পোস্টপ্রসেসিং বা অন্যান্য ডাউনস্ট্রিম অ্যাপ্লিকেশনগুলির সাথে একীকরণের জন্য। উদাহরণস্বরূপ, আমাদের ভবিষ্যদ্বাণীমূলক রক্ষণাবেক্ষণ ব্যবহারের ক্ষেত্রে, আপনি Amazon S3 থেকে উত্পন্ন অনুমান পড়ার জন্য একটি SNS বিজ্ঞপ্তির উপর ভিত্তি করে একটি Lambda ফাংশন চালু করতে পারেন, এটিকে আরও প্রক্রিয়া করতে পারেন (যেমন একত্রিতকরণ বা ফিল্টারিং), এবং কাজের আদেশ পাঠানোর মতো কর্মপ্রবাহ শুরু করতে পারেন প্রযুক্তিবিদদের যন্ত্রপাতি মেরামত.

পরিষ্কার কর

আপনি স্ট্যাক পরীক্ষা করা শেষ হলে, অপ্রত্যাশিত চার্জ এড়াতে সংস্থানগুলি (বিশেষ করে কাইনেসিস ডেটা স্ট্রিম, গ্লু স্ট্রিমিং কাজ এবং SNS বিষয়) মুছুন।

আপনার স্ট্যাক মুছে ফেলার জন্য নিম্নলিখিত কোড চালান:

sam delete nrt-streaming-inference

এছাড়াও ModelTraining-Evaluation-and-deployment নোটবুকের ক্লিনআপ বিভাগ অনুসরণ করে সেজমেকার এন্ডপয়েন্টের মতো সংস্থানগুলি মুছুন।

উপসংহার

এই পোস্টে, আমরা একটি ভবিষ্যদ্বাণীমূলক রক্ষণাবেক্ষণ ব্যবহার কেস ব্যবহার করেছি কিভাবে বিভিন্ন পরিষেবা যেমন কাইনেসিস, AWS Glue, এবং SageMaker ব্যবহার করে কাছাকাছি-রিয়েল-টাইম ইনফারেন্স পাইপলাইন তৈরি করতে ব্যবহার করতে হয়। আমরা আপনাকে এই সমাধানটি চেষ্টা করার জন্য উত্সাহিত করি এবং আপনি কী মনে করেন তা আমাদের জানান।

আপনার যদি কোন প্রশ্ন থাকে, মন্তব্যে তাদের শেয়ার করুন.


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

Amazon Kinesis, AWS Glue, এবং Amazon SageMaker PlatoBlockchain ডেটা ইন্টেলিজেন্স দিয়ে একটি ভবিষ্যদ্বাণীমূলক রক্ষণাবেক্ষণ সমাধান তৈরি করুন। উল্লম্ব অনুসন্ধান. আ. রাহুল শর্মা তিনি AWS ডেটা ল্যাবের একজন সলিউশন আর্কিটেক্ট, AWS গ্রাহকদের AI/ML সলিউশন ডিজাইন ও তৈরি করতে সাহায্য করেন। AWS-এ যোগদানের আগে, রাহুল অর্থ ও বীমা খাতে বেশ কয়েক বছর কাটিয়েছেন, গ্রাহকদের ডেটা এবং বিশ্লেষণাত্মক প্ল্যাটফর্ম তৈরি করতে সহায়তা করেছেন।

Amazon Kinesis, AWS Glue, এবং Amazon SageMaker PlatoBlockchain ডেটা ইন্টেলিজেন্স দিয়ে একটি ভবিষ্যদ্বাণীমূলক রক্ষণাবেক্ষণ সমাধান তৈরি করুন। উল্লম্ব অনুসন্ধান. আ.প্যাট রিলি তিনি AWS ডেটা ল্যাবের একজন স্থপতি, যেখানে তিনি গ্রাহকদের তাদের ব্যবসায় সমর্থন করার জন্য ডেটা ওয়ার্কলোড ডিজাইন এবং তৈরি করতে সহায়তা করেন। AWS এর আগে, প্যাট একটি AWS অংশীদারের সাথে পরামর্শ করে, বিভিন্ন শিল্প জুড়ে AWS ডেটা কাজের চাপ তৈরি করে।

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

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

আমাজন সেজমেকার মডেল সমান্তরাল এবং ডেটা সমান্তরাল লাইব্রেরির সাথে বিতরণ প্রশিক্ষণ এবং দক্ষ স্কেলিং | আমাজন ওয়েব সার্ভিসেস

উত্স নোড: 1965236
সময় স্ট্যাম্প: এপ্রিল 16, 2024