Amazon Kinesis، AWS Glue، اور Amazon SageMaker PlatoBlockchain Data Intelligence کے ساتھ ایک پیش گوئی کرنے والا دیکھ بھال کا حل تیار کریں۔ عمودی تلاش۔ عی

Amazon Kinesis، AWS Glue، اور Amazon SageMaker کے ساتھ ایک پیش گوئی کرنے والا دیکھ بھال کا حل بنائیں

تنظیمیں تیزی سے مختلف قسم کے استعمال کے معاملات اور مسائل کے لیے مشین لرننگ (ML) سے چلنے والے حل تیار کر رہی ہیں اور استعمال کر رہی ہیں، بشمول مشین کے پرزوں کی پیشن گوئی کی دیکھ بھال، کسٹمر کی ترجیحات پر مبنی مصنوعات کی سفارشات، کریڈٹ پروفائلنگ، مواد میں اعتدال، دھوکہ دہی کا پتہ لگانا، اور بہت کچھ۔ ان میں سے بہت سے منظرناموں میں، ایم ایل سے چلنے والے ان حلوں سے حاصل ہونے والی تاثیر اور فوائد کو مزید بڑھایا جا سکتا ہے جب وہ قریب قریب حقیقی وقت میں ڈیٹا کے واقعات سے بصیرت حاصل کر سکتے ہیں۔

اگرچہ قریب قریب حقیقی وقت میں ML سے چلنے والے حلوں کی کاروباری قدر اور فوائد اچھی طرح سے قائم ہیں، لیکن ان حلوں کو زیادہ سے زیادہ قابل اعتماد اور کارکردگی کے ساتھ پیمانے پر لاگو کرنے کے لیے درکار فن تعمیر پیچیدہ ہے۔ یہ پوسٹ بیان کرتی ہے کہ آپ کس طرح اکٹھا کر سکتے ہیں۔ ایمیزون کنیسیس, AWS گلو، اور ایمیزون سیج میکر پیشین گوئی کی دیکھ بھال کے لیے قریب قریب ریئل ٹائم فیچر انجینئرنگ اور انفرنس حل تیار کرنا۔

کیس کا جائزہ استعمال کریں۔

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

اس پوسٹ میں، ہم مشین لرننگ کو مصنوعی ڈیٹاسیٹ پر لاگو کرنے پر توجہ مرکوز کرتے ہیں جس میں ہوا کا درجہ حرارت، عمل کا درجہ حرارت، گردش کی رفتار، ٹارک، اور ٹول وئیر جیسی خصوصیات کی وجہ سے مشین کی ناکامی ہوتی ہے۔ استعمال شدہ ڈیٹاسیٹ سے حاصل کیا گیا ہے۔ UCI ڈیٹا ریپوزٹری.

مشین کی ناکامی پانچ آزاد ناکامی طریقوں پر مشتمل ہے:

  • ٹول پہننے میں ناکامی (TWF)
  • حرارت کی کھپت کی ناکامی (HDF)
  • پاور فیلیئر (PWF)
  • زیادہ تناؤ کی ناکامی (OSF)
  • بے ترتیب ناکامی (RNF)

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

حل جائزہ

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

درج ذیل خاکہ ہمارے مجموعی حل کے فن تعمیر کو ظاہر کرتا ہے۔

حل بڑے پیمانے پر درج ذیل حصوں پر مشتمل ہے، جن کی تفصیل بعد میں اس پوسٹ میں بیان کی گئی ہے۔

  • سٹریمنگ ڈیٹا ماخذ اور ادخال - ہم استعمال کرتے ہیں Amazon Kinesis ڈیٹا اسٹریمز پیمانے پر فیلڈ سینسرز سے اسٹریمنگ ڈیٹا اکٹھا کرنا اور اسے مزید پروسیسنگ کے لیے دستیاب کرنا۔
  • قریب قریب ریئل ٹائم فیچر انجینئرنگ - ہم AWS Glue سٹریمنگ جابز کو Kinesis ڈیٹا سٹریم سے ڈیٹا پڑھنے اور ڈیٹا پروسیسنگ اور فیچر انجینئرنگ انجام دینے کے لیے استعمال کرتے ہیں، اس میں اخذ کردہ خصوصیات کو اسٹور کرنے سے پہلے ایمیزون سادہ اسٹوریج سروس (ایمیزون S3)۔ ایمیزون S3 ڈیٹا کی بڑی مقدار کو ذخیرہ کرنے کے لیے ایک قابل اعتماد اور سرمایہ کاری مؤثر اختیار فراہم کرتا ہے۔
  • ماڈل ٹریننگ اور تعیناتی - ہم SageMaker کا استعمال کرتے ہوئے XGBoost الگورتھم پر مبنی ML ماڈل کو تربیت دینے کے لیے UCI ڈیٹا ریپوزٹری سے AI4I پیش گوئی کرنے والے مینٹیننس ڈیٹاسیٹ کا استعمال کرتے ہیں۔ اس کے بعد ہم تربیت یافتہ ماڈل کو SageMaker غیر مطابقت پذیر انفرنس اینڈ پوائنٹ پر تعینات کرتے ہیں۔
  • قریب قریب حقیقی وقت کا ML تخمینہ - Amazon S3 میں فیچرز دستیاب ہونے کے بعد، ہمیں تقریباً حقیقی وقت میں تعینات ماڈل سے قیاس آرائیاں پیدا کرنے کی ضرورت ہے۔ SageMaker غیر مطابقت پذیر انفرنس اینڈ پوائنٹ اس ضرورت کے لیے موزوں ہیں کیونکہ وہ بڑے پے لوڈ سائز (1 GB تک) کو سپورٹ کرتے ہیں اور منٹوں میں (زیادہ سے زیادہ 15 منٹ تک) انفرنس پیدا کر سکتے ہیں۔ ہم S3 ایونٹ کی اطلاعات کو چلانے کے لیے استعمال کرتے ہیں۔ او ڈبلیو ایس لامبڈا۔ SageMaker غیر مطابقت پذیر انفرنس اینڈ پوائنٹ کو طلب کرنے کے لیے فنکشن۔ SageMaker غیر مطابقت پذیر انفرنس اینڈ پوائنٹس S3 مقامات کو ان پٹ کے طور پر قبول کرتے ہیں، تعینات کردہ ماڈل سے قیاس آرائیاں پیدا کرتے ہیں، اور ان قیاسات کو Amazon S3 پر واپس قریب حقیقی وقت میں لکھتے ہیں۔

اس حل کے لیے سورس کوڈ پر واقع ہے۔ GitHub کے. حل کا تجربہ کیا گیا ہے اور اسے us-east-1 میں چلایا جانا چاہئے۔

ہم ایک استعمال کرتے ہیں AWS کلاؤڈ فارمیشن ٹیمپلیٹ، استعمال کرتے ہوئے تعینات AWS سرور لیس ایپلیکیشن ماڈل (AWS SAM)، اور SageMaker نوٹ بک حل کو تعینات کرنے کے لیے۔

شرائط

شروع کرنے کے لیے، شرط کے طور پر، آپ کے پاس ہونا ضروری ہے۔ SAM CLI, ازگر 3، اور PIP نصب آپ کے پاس بھی ہونا ضروری ہے۔ AWS کمانڈ لائن انٹرفیس (AWS CLI) مناسب طریقے سے ترتیب دیا گیا ہے۔

حل تعینات کریں۔

آپ استعمال کر سکتے ہیں AWS CloudShell ان اقدامات کو چلانے کے لیے۔ CloudShell ایک براؤزر پر مبنی شیل ہے جو آپ کے کنسول کی اسناد کے ساتھ پہلے سے تصدیق شدہ ہے اور اس میں پہلے سے نصب شدہ کامن ڈویلپمنٹ اور آپریشنز ٹولز (جیسے AWS SAM، AWS CLI، اور Python) شامل ہیں۔ لہذا، کسی مقامی تنصیب یا ترتیب کی ضرورت نہیں ہے۔

  • ہم ایک S3 بالٹی بنا کر شروع کرتے ہیں جہاں ہم اپنی AWS Glue سٹریمنگ جاب کے لیے اسکرپٹ اسٹور کرتے ہیں۔ ایک نئی بالٹی بنانے کے لیے اپنے ٹرمینل میں درج ذیل کمانڈ کو چلائیں:
aws s3api create-bucket --bucket sample-script-bucket-$RANDOM --region us-east-1

  • بنائی گئی بالٹی کا نام نوٹ کریں۔

ML-9132 سلوشن آرچ

  • اگلا، ہم مقامی طور پر کوڈ ریپوزٹری کو کلون کرتے ہیں، جس میں اسٹیک کو تعینات کرنے کے لیے CloudFormation ٹیمپلیٹ ہوتا ہے۔ اپنے ٹرمینل میں درج ذیل کمانڈ کو چلائیں:
git clone https://github.com/aws-samples/amazon-sagemaker-predictive-maintenance

  • sam-template ڈائریکٹری پر جائیں:
cd amazon-sagemaker-predictive-maintenance/sam-template

ML-9132 گٹ کلون ریپو

  • AWS Glue جاب اسکرپٹ (glue_streaming/app.py سے) کو آپ کی بنائی ہوئی S3 بالٹی میں کاپی کرنے کے لیے درج ذیل کمانڈ کو چلائیں:
aws s3 cp glue_streaming/app.py s3://sample-script-bucket-30232/glue_streaming/app.py

ML-9132 کاپی گلو اسکرپٹ

  • اب آپ AWS SAM کے ذریعے CloudFormation ٹیمپلیٹ کے ذریعے حل کی تعمیر اور تعیناتی کے ساتھ آگے بڑھ سکتے ہیں۔ درج ذیل کمانڈ کو چلائیں:

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 ٹیمپلیٹ کو تعینات کرتے وقت فراہم کیا گیا تھا۔
  • پر وسائل ٹیب، سیج میکر نوٹ بک مثال کی شناخت کو نوٹ کریں۔
  1. ML-9132 SM نوٹ بک بنائی گئی۔
  • سیج میکر کنسول پر، اس مثال کو کھولیں۔

ML-9132 image018

سیج میکر نوٹ بک مثال میں پہلے سے ہی مطلوبہ نوٹ بک پہلے سے بھری ہوئی ہے۔

نوٹ بک کے فولڈر میں جائیں اور کھولیں اور نوٹ بک کے اندر دی گئی ہدایات پر عمل کریں (Data_Pre-Processing.ipynb اور ModelTraining-Evaluation-and-Deployment.ipynb) ڈیٹاسیٹ کو دریافت کرنے، پری پروسیسنگ اور فیچر انجینئرنگ انجام دینے، اور ماڈل کو سیج میکر غیر مطابقت پذیر انفرنس اینڈ پوائنٹ پر تربیت اور تعینات کرنے کے لیے۔

ML-9132 کھولیں SM نوٹ بک

سٹریمنگ ڈیٹا ماخذ اور ادخال

Kinesis Data Streams ایک سرور لیس، قابل توسیع، اور پائیدار ریئل ٹائم ڈیٹا اسٹریمنگ سروس ہے جسے آپ حقیقی وقت میں ڈیٹا ریکارڈز کے بڑے سلسلے کو جمع کرنے اور اس پر کارروائی کرنے کے لیے استعمال کر سکتے ہیں۔ Kinesis ڈیٹا اسٹریمز مختلف ذرائع سے ڈیٹا اسٹریمز کو کیپچرنگ، پروسیسنگ اور اسٹور کرنے کے قابل بناتا ہے، جیسے کہ IT انفراسٹرکچر لاگ ڈیٹا، ایپلیکیشن لاگز، سوشل میڈیا، مارکیٹ ڈیٹا فیڈز، ویب کلک اسٹریم ڈیٹا، IoT ڈیوائسز اور سینسر وغیرہ۔ آپ تھرو پٹ اور اسکیلنگ کی ضروریات کے لحاظ سے آن ڈیمانڈ موڈ یا پروویژنڈ موڈ میں کائنیسس ڈیٹا سٹریم فراہم کر سکتے ہیں۔ مزید معلومات کے لیے دیکھیں ڈیٹا سٹریم کیپیسیٹی موڈ کا انتخاب کرنا.

ہمارے استعمال کے معاملے کے لیے، ہم فرض کرتے ہیں کہ مختلف سینسرز پیمائش بھیج رہے ہیں جیسے درجہ حرارت، گردش کی رفتار، ٹارک، اور ٹول وئیر کو ڈیٹا سٹریم میں۔ Kinesis ڈیٹا اسٹریمز ڈیٹا اسٹریمز کو اکٹھا کرنے اور ہضم کرنے کے لیے ایک فنل کے طور پر کام کرتا ہے۔

ہم استعمال کرتے ہیں Amazon Kinesis ڈیٹا جنریٹر (KDG) بعد میں اس پوسٹ میں ڈیٹا بنانے اور بھیجنے کے لیے Kinesis ڈیٹا سٹریم میں، سینسرز کے ذریعے تیار کیے جانے والے ڈیٹا کی نقل کرتے ہوئے۔ ڈیٹا سٹریم سینسر-ڈیٹا-سٹریم کا ڈیٹا AWS Glue سٹریمنگ جاب کا استعمال کرتے ہوئے کھایا جاتا ہے اور اس پر کارروائی کی جاتی ہے، جس پر ہم آگے بات کرتے ہیں۔

قریب قریب ریئل ٹائم فیچر انجینئرنگ

AWS Glue سٹریمنگ جابز کمپیوٹ ماحول کو منظم کرنے کی ضرورت کے بغیر پیمانے پر اسٹریمنگ ڈیٹا پر کارروائی کرنے کا ایک آسان طریقہ فراہم کرتا ہے۔ AWS Glue آپ کو مسلسل چلنے والی جابز کا استعمال کرتے ہوئے سٹریمنگ ڈیٹا پر ایکسٹریکٹ، ٹرانسفارم، اور لوڈ (ETL) آپریشن کرنے کی اجازت دیتا ہے۔ AWS Glue streaming ETL اپاچی اسپارک سٹرکچرڈ سٹریمنگ انجن پر بنایا گیا ہے، اور Kinesis، Apache Kafka، اور سے اسٹریمز کو کھا سکتا ہے۔ ایمیزون نے اپاچی کافکا کے لیے سٹریمنگ کا انتظام کیا۔ (ایمیزون ایم ایس کے)۔

سٹریمنگ ETL جاب AWS Glue بلٹ ان ٹرانسفارمز اور ٹرانسفارمز دونوں کا استعمال کر سکتی ہے جو Apache Spark Structured Streaming کے مقامی ہیں۔ آپ اسپارک ایم ایل اور بھی استعمال کر سکتے ہیں۔ ایم ایل آئی بی آسانی سے دستیاب مددگار لائبریریوں کا استعمال کرتے ہوئے آسان فیچر پروسیسنگ کے لیے AWS Glue جابز میں لائبریریاں۔

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

اس پوسٹ کے لیے، ہم AWS گلو ڈیٹا کیٹلاگ ٹیبل بناتے ہیں (sensor-stream) ہمارے Kinesis ڈیٹا سٹریم کو بطور ذریعہ بنائیں اور ہمارے سینسر ڈیٹا کے لیے اسکیما کی وضاحت کریں۔

ہم Kinesis سے اسٹریمنگ ڈیٹا کو پڑھنے کے لیے ڈیٹا کیٹلاگ ٹیبل سے AWS Glue ڈائنامک ڈیٹا فریم بناتے ہیں۔ ہم درج ذیل اختیارات کی بھی وضاحت کرتے ہیں:

  • 60 سیکنڈ کی ونڈو کا سائز، تاکہ AWS Glue جاب 60 سیکنڈ کی ونڈوز میں ڈیٹا کو پڑھے اور اس پر کارروائی کرے۔
  • ابتدائی پوزیشن TRIM_HORIZON، Kinesis ڈیٹا سٹریم میں قدیم ترین ریکارڈز سے پڑھنے کی اجازت دینے کے لیے

ہم Spark MLlib's بھی استعمال کرتے ہیں۔ StringIndexer سٹرنگ کالم کی قسم کو لیبل انڈیکس میں انکوڈ کرنے کے لیے فیچر ٹرانسفارمر۔ اس تبدیلی کو اسپارک ایم ایل پائپ لائنز کا استعمال کرتے ہوئے لاگو کیا گیا ہے۔ چنگاری ایم ایل پائپ لائنز ML الگورتھم کے لیے اعلیٰ سطح کے APIs کا یکساں سیٹ فراہم کریں تاکہ ایک سے زیادہ الگورتھم کو ایک پائپ لائن یا ورک فلو میں جوڑنا آسان ہو جائے۔

ہم 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})

فنکشن پروسیس بیچ مخصوص تبدیلیاں کرتا ہے اور ایمیزون S3 میں ڈیٹا کو سال، مہینے، دن اور بیچ ID کی بنیاد پر تقسیم کرتا ہے۔

ہم AWS Glue پارٹیشنز کو ایک ہی پارٹیشن میں دوبارہ تقسیم کرتے ہیں، تاکہ Amazon S3 میں بہت سی چھوٹی فائلیں نہ ہوں۔ کئی چھوٹی فائلوں کا ہونا پڑھنے کی کارکردگی میں رکاوٹ بن سکتا ہے، کیونکہ یہ ہر فائل کو تلاش کرنے، کھولنے اور پڑھنے سے متعلق اوور ہیڈ کو بڑھا دیتا ہے۔ ہم آخر میں 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's LabelEncoder استعمال کرتے ہیں:

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

فیچرز پر کارروائی ہونے اور کیوریٹڈ ٹرین اور ٹیسٹ ڈیٹا سیٹس تیار ہونے کے بعد، ہم ML ماڈل کو تربیت دینے کے لیے تیار ہیں تاکہ یہ اندازہ لگایا جا سکے کہ آیا مشین فیل ہوئی یا سسٹم ریڈنگ کی بنیاد پر۔ ہم SageMaker بلٹ ان الگورتھم کا استعمال کرتے ہوئے XGBoost ماڈل کو تربیت دیتے ہیں۔ 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)

قریب قریب حقیقی وقت کا اندازہ

سیج میکر۔ متضاد تخمینہ اختتامی نقطے آنے والی تخمینہ کی درخواستوں کو قطار میں لگانے کی صلاحیت فراہم کرتے ہیں اور انہیں قریب کے حقیقی وقت میں متضاد طور پر کارروائی کرتے ہیں۔ یہ ان ایپلی کیشنز کے لیے مثالی ہے جن میں بڑے پے لوڈ سائز (1 جی بی تک) کے ساتھ قیاس کی درخواستیں ہیں، ان کے لیے طویل پروسیسنگ ٹائم (15 منٹ تک) درکار ہو سکتا ہے، اور قریب قریب ریئل ٹائم لیٹنسی کے تقاضے ہیں۔ غیر مطابقت پذیر تخمینہ آپ کو اس قابل بناتا ہے کہ آپ خود کار طریقے سے مثال کی گنتی کو صفر تک سکیل کر کے لاگت میں بچت کر سکیں، جب کارروائی کی کوئی درخواست نہ ہو، لہذا آپ صرف اس وقت ادائیگی کرتے ہیں جب آپ کا اختتامی نقطہ درخواستوں پر کارروائی کر رہا ہو۔

آپ SageMaker غیر مطابقت پذیر انفرنس اینڈ پوائنٹ بنا سکتے ہیں جیسا کہ آپ ریئل ٹائم انفرنس اینڈ پوائنٹ بناتے ہیں اور اس کے علاوہ AsyncInferenceConfig آبجیکٹ، CreateEndpointConfig API میں EndpointConfig فیلڈ کے ساتھ اپنی اینڈ پوائنٹ کنفیگریشن بناتے وقت۔ مندرجہ ذیل ڈایاگرام انفرنس ورک فلو کو دکھاتا ہے اور یہ کہ کس طرح ایک غیر مطابقت پذیر انفرنس اینڈ پوائنٹ ایک تخمینہ تیار کرتا ہے۔

ML-9132 SageMaker Asych Arch

اسینکرونس انفرنس اینڈ پوائنٹ کی درخواست کرنے کے لیے، درخواست کے پے لوڈ کو Amazon S3 میں اسٹور کیا جانا چاہیے اور InvokeEndpointAsync درخواست کے حصے کے طور پر اس پے لوڈ کا حوالہ فراہم کرنے کی ضرورت ہے۔ درخواست کرنے پر، سیج میکر پروسیسنگ کی درخواست کو قطار میں کھڑا کرتا ہے اور جواب کے طور پر شناخت کنندہ اور آؤٹ پٹ لوکیشن واپس کرتا ہے۔ پروسیسنگ کے بعد، SageMaker نتیجہ Amazon 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 Glue جاب چلائیں۔

اس کے بعد ہم اپنے Kinesis ڈیٹا سٹریم میں ڈیٹا بھیجنے والے سینسرز کی نقل کرنے کے لیے Kinesis ڈیٹا جنریٹر (KDG) کا استعمال کرتے ہیں۔ اگر آپ پہلی بار KDG استعمال کر رہے ہیں، تو رجوع کریں۔ مجموعی جائزہ ابتدائی سیٹ اپ کے لیے۔ KDG صارف کو تخلیق کرنے کے لیے ایک CloudFormation ٹیمپلیٹ فراہم کرتا ہے اور Kinesis کو ایونٹس بھیجنے کے لیے KDG کو استعمال کرنے کے لیے کافی اجازتیں تفویض کرتا ہے۔ چلائیں CloudFormation ٹیمپلیٹ AWS اکاؤنٹ کے اندر جسے آپ اس پوسٹ میں حل بنانے کے لیے استعمال کر رہے ہیں۔ KDG کے سیٹ اپ ہونے کے بعد، ہمارے Kinesis ڈیٹا سٹریم میں ٹیسٹ ایونٹس بھیجنے کے لیے لاگ ان کریں اور KDG تک رسائی حاصل کریں۔

  • وہ علاقہ استعمال کریں جس میں آپ نے Kinesis ڈیٹا اسٹریم (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 بالٹی پر لکھی جاتی ہیں، ایک لیمبڈا فنکشن (invoke-endpoint-asynch) کو متحرک کیا جاتا ہے، جو ہمارے تعینات کردہ ML ماڈل سے نتائج حاصل کرنے کے لیے ایک درخواست بھیج کر SageMaker غیر مطابقت پذیر انفرنس اینڈ پوائنٹ کو طلب کرتا ہے۔ غیر مطابقت پذیر انفرنس اینڈ پوائنٹ غیر مطابقت پذیر درخواست کی درخواست کو قطار میں کھڑا کرتا ہے۔ جب پروسیسنگ مکمل ہو جاتی ہے، سیج میکر انفرنس کے نتائج کو Amazon S3 لوکیشن (S3OutputPath) جو غیر مطابقت پذیر انفرنس اینڈ پوائنٹ کنفیگریشن کے دوران بیان کیا گیا تھا۔

ہمارے استعمال کے معاملے کے لیے، قیاس کے نتائج بتاتے ہیں کہ آیا مشین کا پرزہ ناکام ہونے کا امکان ہے یا نہیں، سینسر ریڈنگ کی بنیاد پر۔

ML-9132 ماڈل کے نتائج

SageMaker Amazon SNS کے ساتھ کامیابی یا غلطی کی اطلاع بھی بھیجتا ہے۔ مثال کے طور پر، اگر آپ ایک سیٹ اپ کرتے ہیں۔ ای میل کی رکنیت کامیابی اور خرابی کے SNS عنوانات کے لیے (غیر مطابقت پذیر سیج میکر انفرنس اینڈ پوائنٹ کنفیگریشن کے اندر بیان کیا گیا ہے)، جب بھی کسی تخمینے کی درخواست پر کارروائی ہوتی ہے تو ایک ای میل بھیجا جا سکتا ہے۔ درج ذیل اسکرین شاٹ SNS کامیابی کے عنوان سے ایک نمونہ ای میل دکھاتا ہے۔

ML-9132 SNS ای میل سبسکرائب کریں۔

حقیقی دنیا کی ایپلی کیشنز کے لیے، آپ SNS اطلاعات کو دیگر خدمات کے ساتھ مربوط کر سکتے ہیں جیسے ایمیزون سادہ قطار سروس (Amazon SQS) اور Lambda آپ کے تقاضوں کی بنیاد پر پیدا ہونے والے انفرنسز کی اضافی پوسٹ پروسیسنگ یا دیگر ڈاؤن اسٹریم ایپلی کیشنز کے ساتھ انضمام کے لیے۔ مثال کے طور پر، ہمارے پیشن گوئی کے دیکھ بھال کے استعمال کے معاملے کے لیے، آپ ایمیزون S3 سے تیار کردہ تخمینہ کو پڑھنے کے لیے ایس این ایس نوٹیفکیشن پر مبنی لیمبڈا فنکشن کو طلب کر سکتے ہیں، اس پر مزید کارروائی کر سکتے ہیں (جیسے کہ جمع یا فلٹرنگ)، اور ورک فلو شروع کر سکتے ہیں جیسے کہ کام کے آرڈر بھیجنا۔ تکنیکی ماہرین کو سامان کی مرمت.

صاف کرو

جب آپ اسٹیک کی جانچ کر لیں تو، غیر متوقع چارجز سے بچنے کے لیے وسائل (خاص طور پر Kinesis ڈیٹا سٹریم، Glue streaming job، اور SNS موضوعات) کو حذف کر دیں۔

اپنے اسٹیک کو حذف کرنے کے لیے درج ذیل کوڈ کو چلائیں:

sam delete nrt-streaming-inference

ModelTraining-Evaluation-and-Deployment نوٹ بک میں کلین اپ سیکشن کی پیروی کرتے ہوئے SageMaker اینڈ پوائنٹس جیسے وسائل کو بھی حذف کریں۔

نتیجہ

اس پوسٹ میں، ہم نے یہ ظاہر کرنے کے لیے ایک پیشن گوئی کی دیکھ بھال کے استعمال کے کیس کا استعمال کیا ہے کہ کس طرح مختلف خدمات جیسے Kinesis، AWS Glue، اور SageMaker کو استعمال کیا جائے تاکہ قریب قریب حقیقی وقت میں انفرنس پائپ لائن بنائی جائے۔ ہم آپ کو اس حل کو آزمانے کی ترغیب دیتے ہیں اور ہمیں بتائیں کہ آپ کیا سوچتے ہیں۔

اگر آپ کے کوئی سوالات ہیں تو، تبصرے میں ان کا اشتراک کریں.


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

Amazon Kinesis، AWS Glue، اور Amazon SageMaker PlatoBlockchain Data Intelligence کے ساتھ ایک پیش گوئی کرنے والا دیکھ بھال کا حل تیار کریں۔ عمودی تلاش۔ عی راہول شرما AWS ڈیٹا لیب میں ایک سولیوشن آرکیٹیکٹ ہے، جو AWS کے صارفین کو AI/ML سلوشنز ڈیزائن اور بنانے میں مدد کرتا ہے۔ AWS میں شامل ہونے سے پہلے، راہول نے کئی سال فنانس اور انشورنس کے شعبے میں گزارے ہیں، جس سے صارفین کو ڈیٹا اور تجزیاتی پلیٹ فارم بنانے میں مدد ملتی ہے۔

Amazon Kinesis، AWS Glue، اور Amazon SageMaker PlatoBlockchain Data Intelligence کے ساتھ ایک پیش گوئی کرنے والا دیکھ بھال کا حل تیار کریں۔ عمودی تلاش۔ عیپیٹ ریلی AWS ڈیٹا لیب میں ایک آرکیٹیکٹ ہے، جہاں وہ صارفین کو ان کے کاروبار کو سپورٹ کرنے کے لیے ڈیٹا ورک بوجھ کو ڈیزائن اور بنانے میں مدد کرتا ہے۔ AWS سے پہلے، Pat نے AWS پارٹنر سے مشورہ کیا، مختلف صنعتوں میں AWS ڈیٹا ورک بوجھ تیار کیا۔

ٹائم اسٹیمپ:

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