أنشئ حل صيانة تنبؤية باستخدام Amazon Kinesis و AWS Glue و Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

أنشئ حل صيانة تنبؤية باستخدام Amazon Kinesis و AWS Glue و Amazon SageMaker

تقوم المؤسسات بشكل متزايد ببناء واستخدام حلول مدعومة بالتعلم الآلي (ML) لمجموعة متنوعة من حالات الاستخدام والمشكلات ، بما في ذلك الصيانة التنبؤية لأجزاء الماكينة ، وتوصيات المنتج بناءً على تفضيلات العملاء ، والتنميط الائتماني ، والإشراف على المحتوى ، واكتشاف الاحتيال ، والمزيد. في العديد من هذه السيناريوهات ، يمكن تحسين الفعالية والفوائد المستمدة من هذه الحلول التي تعمل بنظام ML عندما يمكنها معالجة واستخلاص الرؤى من أحداث البيانات في الوقت الفعلي تقريبًا.

على الرغم من أن القيمة التجارية والفوائد للحلول التي تعمل بتقنية ML في الوقت الفعلي تقريبًا راسخة ، إلا أن البنية المطلوبة لتنفيذ هذه الحلول على نطاق واسع مع الموثوقية والأداء الأمثل معقدة. يصف هذا المنشور كيف يمكنك الجمع أمازون كينسيس, غراء AWSو الأمازون SageMaker لبناء حلول هندسية واستدلالية شبه فورية للصيانة التنبؤية.

نظرة عامة على حالة الاستخدام

نحن نركز على حالة استخدام الصيانة التنبؤية حيث تحتاج المستشعرات المنتشرة في الميدان (مثل المعدات الصناعية أو أجهزة الشبكة) إلى استبدالها أو تصحيحها قبل أن تتعطل وتتسبب في حدوث تعطل. قد يكون التوقف عن العمل مكلفًا للشركات ويمكن أن يؤدي إلى تجربة سيئة للعملاء. يمكن للصيانة التنبؤية التي يتم تشغيلها بواسطة نموذج ML أن تساعد أيضًا في زيادة دورات الصيانة المنتظمة المستندة إلى الجدول الزمني من خلال الإبلاغ عن وقت عدم استبدال جزء من الماكينة في حالة جيدة ، وبالتالي تجنب التكلفة غير الضرورية.

في هذا المنشور ، نركز على تطبيق التعلم الآلي على مجموعة بيانات اصطناعية تحتوي على أعطال في الآلة بسبب ميزات مثل درجة حرارة الهواء ودرجة حرارة العملية وسرعة الدوران وعزم الدوران وارتداء الأدوات. يتم الحصول على مجموعة البيانات المستخدمة من مستودع بيانات UCI.

يتكون فشل الآلة من خمسة أوضاع فشل مستقلة:

  • فشل ارتداء الأداة (TWF)
  • فشل تبديد الحرارة (HDF)
  • انقطاع التيار الكهربائي (PWF)
  • فشل الإجهاد المفرط (OSF)
  • فشل عشوائي (RNF)

يشير ملصق فشل الجهاز إلى ما إذا كان الجهاز قد فشل في نقطة بيانات معينة إذا كان أي من أوضاع الفشل السابقة صحيحًا. إذا كان أحد أوضاع الفشل على الأقل صحيحًا ، تفشل العملية ويتم تعيين ملصق فشل الجهاز على 1. الهدف من نموذج ML هو تحديد أعطال الماكينة بشكل صحيح ، لذلك يمكن بدء إجراء الصيانة التنبؤية النهائية.

حل نظرة عامة

بالنسبة لحالة استخدام الصيانة التنبؤية الخاصة بنا ، نفترض أن مستشعرات الجهاز تبث قياسات وقراءات مختلفة حول أجزاء الماكينة. بعد ذلك ، يأخذ حلنا شريحة من البيانات المتدفقة في كل مرة (دفعة صغيرة) ، ويقوم بمعالجة وهندسة الميزات لإنشاء ميزات. ثم يتم استخدام الميزات التي تم إنشاؤها لإنشاء استنتاجات من نموذج ML مدرب ومُنشر في الوقت الفعلي تقريبًا. يمكن معالجة الاستنتاجات التي تم إنشاؤها واستهلاكها بشكل أكبر بواسطة التطبيقات النهائية ، لاتخاذ الإجراءات المناسبة وبدء نشاط الصيانة.

يوضح الرسم البياني التالي بنية حلنا الشامل.

يتكون الحل بشكل عام من الأقسام التالية ، والتي سيتم شرحها بالتفصيل لاحقًا في هذا المنشور:

  • مصدر البيانات المتدفقة والابتلاع - نحن نستخدم الأمازون كينسيس دفق البيانات لجمع البيانات المتدفقة من أجهزة الاستشعار الميدانية على نطاق واسع وإتاحتها لمزيد من المعالجة.
  • هندسة الميزات شبه الآنية - نستخدم مهام AWS Glue المتدفقة لقراءة البيانات من تدفق بيانات Kinesis وإجراء معالجة البيانات وهندسة الميزات ، قبل تخزين الميزات المشتقة في خدمة تخزين أمازون البسيطة (أمازون S3). يوفر Amazon S3 خيارًا موثوقًا وفعالًا من حيث التكلفة لتخزين كميات كبيرة من البيانات.
  • تدريب النموذج والنشر - نستخدم مجموعة بيانات الصيانة التنبؤية AI4I من مستودع بيانات UCI لتدريب نموذج ML بناءً على خوارزمية XGBoost باستخدام SageMaker. نقوم بعد ذلك بنشر النموذج المدرب على نقطة نهاية الاستدلال غير المتزامن من SageMaker.
  • استدلال ML في الوقت الفعلي تقريبًا - بعد توفر الميزات في Amazon S3 ، نحتاج إلى إنشاء استنتاجات من النموذج المنشور في الوقت الفعلي تقريبًا. تعد نقاط نهاية الاستدلال غير المتزامن من SageMaker مناسبة تمامًا لهذا المطلب لأنها تدعم أحجام حمولة أكبر (تصل إلى 1 جيجابايت) ويمكنها إنشاء استنتاجات في غضون دقائق (بحد أقصى 15 دقيقة). نستخدم إشعارات أحداث S3 لتشغيل ملف AWS لامدا دالة لاستدعاء نقطة نهاية الاستدلال غير المتزامن لـ SageMaker. تقبل نقاط نهاية الاستدلال غير المتزامن من SageMaker مواقع S3 كمدخلات ، وتولد استنتاجات من النموذج المنشور ، وتعيد كتابة هذه الاستنتاجات إلى Amazon S3 في الوقت الفعلي تقريبًا.

الكود المصدري لهذا الحل موجود على GitHub جيثب:. تم اختبار الحل ويجب تشغيله في us-east-1.

نحن نستخدم ملف تكوين سحابة AWS تم نشره باستخدام نموذج تطبيق AWS Serverless (AWS SAM) وأجهزة الكمبيوتر المحمولة SageMaker لنشر الحل.

المتطلبات الأساسية المسبقة

للبدء ، كشرط أساسي ، يجب أن يكون لديك سام كلي, بيثون 3و PIP المثبتة. يجب أن يكون لديك أيضًا واجهة سطر الأوامر AWS (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

  • بعد ذلك ، نقوم باستنساخ مستودع الكود محليًا ، والذي يحتوي على قالب 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 نسخ البرنامج النصي الغراء

  • يمكنك الآن المضي قدمًا في إنشاء الحل ونشره ، من خلال نموذج CloudFormation عبر AWS SAM. قم بتشغيل الأمر التالي:

ML-9132 سام البناء

sam deploy --guided

  • قدم وسيطات للنشر مثل اسم المكدس ومنطقة AWS المفضلة (us-east-1)، و GlueScriptsBucket.

تأكد من توفير نفس حاوية S3 التي قمت بإنشائها مسبقًا لحاوية S3 الخاصة بالبرنامج النصي AWS Glue (المعلمة GlueScriptsBucket في لقطة الشاشة التالية).

ML-9132 SAM نشر المعلمة

بعد تقديم الوسائط المطلوبة ، يبدأ AWS SAM في نشر المكدس. تُظهر لقطة الشاشة التالية الموارد التي تم إنشاؤها.

تم نشر ML-9132 SAM

بعد نشر المكدس بنجاح ، يجب أن ترى الرسالة التالية.

تم نشر ML-9132 SAM CF

  • في وحدة تحكم AWS CloudFormation ، افتح الحزمة (لهذا المنشور ، nrt-streaming-inference) التي تم توفيرها عند نشر نموذج CloudFormation.
  • على الموارد علامة التبويب ، لاحظ معرف مثيل دفتر ملاحظات SageMaker.
  1. تم إنشاء الكمبيوتر الدفتري ML-9132 SM
  • في وحدة تحكم SageMaker ، افتح هذا المثيل.

ML-9132 صورة018

تم تحميل دفاتر الملاحظات المطلوبة مسبقًا في مثيل دفتر SageMaker.

انتقل إلى مجلد دفاتر الملاحظات وافتح واتبع الإرشادات الموجودة في دفاتر الملاحظات (Data_Pre-Processing.ipynb و ModelTraining-Evaluation-and-Deployment.ipynb) لاستكشاف مجموعة البيانات وإجراء المعالجة المسبقة وهندسة الميزات وتدريب النموذج ونشره في نقطة نهاية الاستدلال غير المتزامن من SageMaker.

ML-9132 فتح أجهزة الكمبيوتر المحمولة SM

مصدر البيانات المتدفقة والابتلاع

Kinesis Data Streams هي خدمة دفق بيانات في الوقت الحقيقي بدون خادم وقابلة للتطوير ودائمة يمكنك استخدامها لجمع ومعالجة تدفقات كبيرة من سجلات البيانات في الوقت الفعلي. تتيح Kinesis Data Streams التقاط ومعالجة وتخزين تدفقات البيانات من مجموعة متنوعة من المصادر ، مثل بيانات سجل البنية التحتية لتكنولوجيا المعلومات ، وسجلات التطبيق ، والوسائط الاجتماعية ، وموجزات بيانات السوق ، وبيانات النقر على الويب ، وأجهزة IoT وأجهزة الاستشعار ، والمزيد. يمكنك توفير تدفق بيانات Kinesis في الوضع عند الطلب أو الوضع المتوفر وفقًا لمتطلبات الإنتاجية والقياس. لمزيد من المعلومات، راجع اختيار وضع سعة تدفق البيانات.

بالنسبة لحالة الاستخدام الخاصة بنا ، نفترض أن أجهزة الاستشعار المختلفة ترسل قياسات مثل درجة الحرارة وسرعة الدوران وعزم الدوران وتآكل الأداة إلى تدفق البيانات. تعمل Kinesis Data Streams بمثابة مسار لجمع واستيعاب تدفقات البيانات.

نستخدم مولد بيانات Amazon Kinesis (KDG) لاحقًا في هذا المنشور لإنشاء وإرسال البيانات إلى دفق بيانات Kinesis ، ومحاكاة البيانات التي يتم إنشاؤها بواسطة أجهزة الاستشعار. يتم استيعاب البيانات من تدفق بيانات مستشعر تدفق البيانات ومعالجتها باستخدام وظيفة تدفق AWS Glue ، والتي نناقشها بعد ذلك.

هندسة الميزات في الوقت الفعلي تقريبًا

وظائف تدفق AWS Glue توفر طريقة ملائمة لمعالجة تدفق البيانات على نطاق واسع ، دون الحاجة إلى إدارة بيئة الحوسبة. يتيح لك AWS Glue إجراء عمليات الاستخراج والتحويل والتحميل (ETL) على تدفق البيانات باستخدام مهام قيد التشغيل باستمرار. تم إنشاء AWS Glue Streaming ETL على محرك Apache Spark Structured Streaming ، ويمكنه استيعاب التدفقات من Kinesis و Apache Kafka و Amazon Managed Streaming لأباتشي كافكا (أمازون MSK).

يمكن أن تستخدم وظيفة ETL المتدفقة كل من التحولات والتحويلات المضمنة في AWS Glue والتي تكون أصلية في Apache Spark Structured Streaming. يمكنك أيضًا استخدام Spark ML و مليب المكتبات في مهام AWS Glue لتسهيل معالجة الميزات باستخدام مكتبات المساعدة المتاحة بسهولة.

إذا كان مخطط مصدر البيانات المتدفقة محددًا مسبقًا ، يمكنك تحديده في جدول AWS Data Catalog. إذا تعذر تحديد تعريف المخطط مسبقًا ، فيمكنك تمكين اكتشاف المخطط في مهمة ETL المتدفقة. ثم تحدد الوظيفة تلقائيًا المخطط من البيانات الواردة. بالإضافة إلى ذلك ، يمكنك استخدام ملف سجل مخطط AWS Glue للسماح بالاكتشاف المركزي والتحكم في مخططات تدفق البيانات وتطورها. يمكنك أيضًا دمج Schema Registry مع كتالوج البيانات لاستخدام المخططات المخزنة في Schema Registry اختياريًا عند إنشاء أو تحديث جداول أو أقسام AWS Glue في كتالوج البيانات.

بالنسبة لهذا المنشور ، نقوم بإنشاء جدول AWS Glue Data Catalog (sensor-stream) باستخدام دفق بيانات Kinesis كمصدر وتحديد مخطط بيانات المستشعر الخاص بنا.

نقوم بإنشاء إطار بيانات ديناميكي AWS Glue من جدول Data Catalog لقراءة البيانات المتدفقة من Kinesis. نحدد أيضًا الخيارات التالية:

  • نافذة بحجم 60 ثانية ، بحيث تقوم وظيفة AWS Glue بقراءة البيانات ومعالجتها في نوافذ 60 ثانية
  • نقطة الانطلاق TRIM_HORIZON، للسماح بالقراءة من أقدم السجلات في دفق بيانات Kinesis

نستخدم أيضًا Spark MLlib StringIndexer ميزة محول لتشفير نوع عمود السلسلة في فهارس التسمية. يتم تنفيذ هذا التحول باستخدام خطوط أنابيب Spark ML. سبارك ML خطوط الأنابيب توفير مجموعة موحدة من واجهات برمجة التطبيقات عالية المستوى لخوارزميات ML لتسهيل دمج خوارزميات متعددة في خط أنابيب واحد أو سير عمل.

نستخدم واجهة برمجة تطبيقات foreachBatch لاستدعاء وظيفة تسمى processBatch ، والتي بدورها تعالج البيانات المشار إليها بواسطة إطار البيانات هذا. انظر الكود التالي:

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

تقوم الوظيفة processBatch بإجراء عمليات التحويل المحددة وتقسيم البيانات في Amazon S3 استنادًا إلى السنة والشهر واليوم ومعرف الدُفعة.

نقوم أيضًا بإعادة تقسيم أقسام 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, نقوم أولاً باستيراد مجموعة بيانات الصيانة التنبؤية AI4I من مستودع بيانات UCI وإجراء تحليل البيانات الاستكشافية (EDA). نقوم أيضًا بإجراء هندسة الميزات لجعل ميزاتنا أكثر فائدة لتدريب النموذج.

على سبيل المثال ، ضمن مجموعة البيانات ، لدينا نوع خاص بالميزة ، والذي يمثل نوع جودة المنتج مثل L (منخفض) أو M (متوسط) أو H (مرتفع). نظرًا لأن هذه ميزة فئوية ، نحتاج إلى تشفيرها قبل تدريب نموذجنا. نستخدم LabelEncoder الخاص بـ Scikit-Learn لتحقيق ذلك:

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

بعد معالجة الميزات وإنشاء مجموعة بيانات الاختبار والقطار المنسق ، نحن مستعدون لتدريب نموذج ML للتنبؤ بما إذا كانت الآلة قد فشلت أم لا بناءً على قراءات النظام. نقوم بتدريب نموذج XGBoost ، باستخدام خوارزمية SageMaker المدمجة. XGBoost يمكن أن يوفر نتائج جيدة لأنواع متعددة من مشاكل ML ، بما في ذلك التصنيف ، حتى عندما تكون عينات التدريب محدودة.

وظائف تدريب SageMaker توفر طريقة قوية ومرنة لتدريب نماذج ML على SageMaker. يدير SageMaker البنية الأساسية للحوسبة الأساسية ويوفرها خيارات متعددة للاختيار من بينها ، لمتطلبات تدريب نموذجية متنوعة ، بناءً على حالة الاستخدام.

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 دقيقة) ، ولها متطلبات زمن انتقال في الوقت الفعلي تقريبًا. يمكّنك الاستدلال غير المتزامن أيضًا من توفير التكاليف عن طريق القياس التلقائي لعدد المثيلات إلى الصفر في حالة عدم وجود طلبات للمعالجة ، لذلك لا تدفع إلا عندما تقوم نقطة النهاية بمعالجة الطلبات.

يمكنك إنشاء نقطة نهاية للاستدلال غير المتزامن لـ SageMaker مشابهة لكيفية إنشاء نقطة نهاية للاستدلال في الوقت الفعلي وتحديد AsyncInferenceConfig الكائن ، أثناء إنشاء تكوين نقطة النهاية باستخدام حقل EndpointConfig في CreateEndpointConfig API. يوضح الرسم التخطيطي التالي سير عمل الاستدلال وكيف تولد نقطة نهاية الاستدلال غير المتزامن استنتاجًا.

ML-9132 قوس SageMaker Asych

لاستدعاء نقطة نهاية الاستدلال غير المتزامن ، يجب تخزين حمولة الطلب في Amazon S3 ويجب توفير مرجع لهذه الحمولة كجزء من طلب InvokeEndpointAsync. عند الاستدعاء ، يصطف SageMaker الطلب للمعالجة ويعيد المعرف وموقع الإخراج كاستجابة. عند المعالجة ، يضع SageMaker النتيجة في موقع Amazon S3. يمكنك اختياريًا اختيار تلقي إشعارات النجاح أو الخطأ باستخدام خدمة إعلام أمازون البسيطة (أمازون SNS).

اختبر الحل الشامل

لاختبار الحل ، أكمل الخطوات التالية:

  • في وحدة تحكم 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 تكوين إعلام حاوية الأحداث lambda

  • في وحدة تحكم AWS Glue ، افتح الوظيفة GlueStreaming-Kinesis-S3.
  • اختار شغل الوظيفة.

ML-9132 شغل وظيفة الغراء

بعد ذلك ، نستخدم Kinesis Data Generator (KDG) لمحاكاة أجهزة الاستشعار التي ترسل البيانات إلى دفق بيانات Kinesis الخاص بنا. إذا كانت هذه هي المرة الأولى التي تستخدم فيها KDG ، فارجع إلى نبذة للإعداد الأولي. يوفر KDG قالب CloudFormation لإنشاء المستخدم وتعيين أذونات كافية فقط لاستخدام KDG لإرسال الأحداث إلى Kinesis. قم بتشغيل قالب CloudFormation ضمن حساب AWS الذي تستخدمه لبناء الحل في هذا المنشور. بعد إعداد KDG ، قم بتسجيل الدخول والوصول إلى KDG لإرسال أحداث الاختبار إلى تدفق بيانات Kinesis الخاص بنا.

  • استخدم المنطقة التي أنشأت فيها دفق بيانات 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 كينيسيس داتا جين

تقرأ وظيفة البث في AWS Glue وتستخرج مجموعة صغيرة من البيانات (تمثل قراءات المستشعر) من تدفق بيانات Kinesis بناءً على حجم النافذة المقدمة. تقوم وظيفة البث بعد ذلك بمعالجة وتنفيذ هندسة الميزات على هذه الدُفعة الصغيرة قبل تقسيمها وكتابتها في ميزات البادئة داخل حاوية S3.

نظرًا لأن الميزات الجديدة التي تم إنشاؤها بواسطة وظيفة تدفق AWS Glue تتم كتابتها في حاوية S3 ، فإن وظيفة Lambda (invoke-endpoint-asynch) ، والذي يستدعي نقطة نهاية الاستدلال غير المتزامن من SageMaker عن طريق إرسال طلب استدعاء للحصول على استنتاجات من نموذج ML المنشور. تصطف نقطة نهاية الاستدلال غير المتزامن طلب الاستدعاء غير المتزامن. عند اكتمال المعالجة ، يقوم SageMaker بتخزين نتائج الاستدلال في موقع Amazon S3 (S3OutputPath) التي تم تحديدها أثناء تكوين نقطة نهاية الاستدلال غير المتزامن.

بالنسبة لحالة الاستخدام الخاصة بنا ، تشير نتائج الاستدلال إلى ما إذا كان من المحتمل أن يفشل جزء من الآلة أم لا ، بناءً على قراءات المستشعر.

استدلالات نموذج ML-9132

يرسل SageMaker أيضًا إشعارًا بالنجاح أو الخطأ باستخدام Amazon SNS. على سبيل المثال ، إذا قمت بإعداد ملف اشتراك البريد الإلكتروني بالنسبة إلى موضوعات SNS للنجاح والخطأ (المحددة في تكوين نقطة نهاية الاستدلال غير المتزامن لـ SageMaker) ، يمكن إرسال بريد إلكتروني في كل مرة تتم فيها معالجة طلب الاستدلال. تُظهر لقطة الشاشة التالية نموذج بريد إلكتروني من موضوع نجاح SNS.

ML-9132 الاشتراك بالبريد الإلكتروني SNS

بالنسبة للتطبيقات الواقعية ، يمكنك دمج إشعارات SNS مع خدمات أخرى مثل خدمة Amazon Simple Queue Service (Amazon SQS) و Lambda للمعالجة اللاحقة الإضافية للاستنتاجات التي تم إنشاؤها أو التكامل مع التطبيقات النهائية الأخرى ، بناءً على متطلباتك. على سبيل المثال ، بالنسبة لحالة استخدام الصيانة التنبؤية الخاصة بنا ، يمكنك استدعاء دالة Lambda بناءً على إشعار SNS لقراءة الاستدلال الناتج من Amazon S3 ، ومعالجته (مثل التجميع أو التصفية) ، وبدء مهام سير العمل مثل إرسال أوامر العمل لـ إصلاح المعدات للفنيين.

تنظيف

عند الانتهاء من اختبار المكدس ، احذف الموارد (خاصة تدفق بيانات Kinesis ووظيفة تدفق الغراء وموضوعات SNS) لتجنب الرسوم غير المتوقعة.

قم بتشغيل الكود التالي لحذف المكدس الخاص بك:

sam delete nrt-streaming-inference

احذف أيضًا الموارد مثل نقاط نهاية SageMaker باتباع قسم التنظيف في دفتر الملاحظات ModelTraining-Evaluation-and-Deployment.

وفي الختام

في هذا المنشور ، استخدمنا حالة استخدام الصيانة التنبؤية لشرح كيفية استخدام خدمات متنوعة مثل Kinesis و AWS Glue و SageMaker لبناء خط أنابيب للاستدلال في الوقت الفعلي تقريبًا. نحن نشجعك على تجربة هذا الحل وإعلامنا برأيك.

إذا كان لديك أي أسئلة ، شاركها في التعليقات.


عن المؤلفين

أنشئ حل صيانة تنبؤية باستخدام Amazon Kinesis و AWS Glue و Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي. راهول شارما مهندس حلول في AWS Data Lab ، يساعد عملاء AWS على تصميم وبناء حلول AI / ML. قبل انضمامه إلى AWS ، أمضى راهول عدة سنوات في قطاع التمويل والتأمين ، لمساعدة العملاء على بناء منصات البيانات والتحليل.

أنشئ حل صيانة تنبؤية باستخدام Amazon Kinesis و AWS Glue و Amazon SageMaker PlatoBlockchain Data Intelligence. البحث العمودي. عاي.بات رايلي مهندس معماري في AWS Data Lab ، حيث يساعد العملاء على تصميم وبناء أعباء عمل البيانات لدعم أعمالهم. قبل AWS ، تشاور بات مع أحد شركاء AWS ، ليبني أعباء عمل بيانات AWS عبر مجموعة متنوعة من الصناعات.

الطابع الزمني:

اكثر من التعلم الآلي من AWS