با Amazon Kinesis، AWS Glue و Amazon SageMaker PlatoBlockchain Data Intelligence یک راه حل تعمیر و نگهداری پیش بینی کننده بسازید. جستجوی عمودی Ai.

با Amazon Kinesis، AWS Glue و Amazon SageMaker یک راه حل تعمیر و نگهداری پیش بینی بسازید

سازمان‌ها به طور فزاینده‌ای در حال ساخت و استفاده از راه‌حل‌های مبتنی بر یادگیری ماشین (ML) برای موارد و مشکلات مختلف هستند، از جمله نگهداری پیش‌بینی‌کننده قطعات ماشین، توصیه‌های محصول بر اساس ترجیحات مشتری، پروفایل اعتباری، تعدیل محتوا، تشخیص تقلب و موارد دیگر. در بسیاری از این سناریوها، اثربخشی و مزایای حاصل از این راه‌حل‌های مبتنی بر ML زمانی که بتوانند اطلاعاتی را از رویدادهای داده در زمان واقعی پردازش کرده و به دست آورند، بیشتر می‌شوند.

اگرچه ارزش تجاری و مزایای راه حل های مبتنی بر ML در زمان واقعی به خوبی ثابت شده است، معماری مورد نیاز برای اجرای این راه حل ها در مقیاس با قابلیت اطمینان و عملکرد بهینه پیچیده است. این پست توضیح می دهد که چگونه می توانید ترکیب کنید آمازون کینسیس, چسب AWSو آمازون SageMaker برای ساختن یک راه حل مهندسی ویژگی و استنتاج تقریباً واقعی برای تعمیر و نگهداری پیش بینی.

از نمای کلی مورد استفاده کنید

ما روی یک مورد استفاده از تعمیر و نگهداری پیش‌بینی‌کننده تمرکز می‌کنیم که در آن حسگرهای مستقر در میدان (مانند تجهیزات صنعتی یا دستگاه‌های شبکه)، قبل از اینکه معیوب شوند و باعث خرابی شوند، باید جایگزین یا اصلاح شوند. زمان از کار افتادن می‌تواند برای کسب‌وکارها گران باشد و منجر به تجربه ضعیف مشتری شود. تعمیر و نگهداری پیش‌بینی‌شده توسط یک مدل ML همچنین می‌تواند با اطلاع‌رسانی زمانی که یک قطعه ماشین در شرایط خوب جایگزین نمی‌شود، به افزایش چرخه‌های تعمیر و نگهداری منظم مبتنی بر برنامه کمک کند، بنابراین از هزینه‌های غیرضروری جلوگیری می‌کند.

در این پست، ما بر روی اعمال یادگیری ماشینی به مجموعه داده مصنوعی حاوی خرابی ماشین به دلیل ویژگی‌هایی مانند دمای هوا، دمای فرآیند، سرعت چرخش، گشتاور و سایش ابزار تمرکز می‌کنیم. مجموعه داده استفاده شده از مخزن داده UCI.

خرابی ماشین از پنج حالت شکست مستقل تشکیل شده است:

  • خرابی سایش ابزار (TWF)
  • شکست اتلاف حرارت (HDF)
  • قطع برق (PWF)
  • شکست بیش از حد کرنش (OSF)
  • خرابی تصادفی (RNF)

برچسب خرابی ماشین نشان می دهد که اگر هر یک از حالت های خرابی قبلی درست باشد آیا ماشین برای یک نقطه داده خاص خراب شده است یا خیر. اگر حداقل یکی از حالت‌های خرابی درست باشد، فرآیند با شکست مواجه می‌شود و برچسب خرابی ماشین روی 1 تنظیم می‌شود. هدف مدل ML شناسایی صحیح خرابی‌های ماشین است، بنابراین می‌توان یک اقدام تعمیر و نگهداری پیش‌بینی پایین‌دستی را آغاز کرد.

بررسی اجمالی راه حل

برای موارد استفاده پیش‌بینی‌کننده تعمیر و نگهداری، ما فرض می‌کنیم که حسگرهای دستگاه، اندازه‌گیری‌ها و خوانش‌های مختلفی را در مورد قطعات ماشین پخش می‌کنند. سپس راه‌حل ما هر بار تکه‌ای از داده‌های جریان را می‌گیرد (ریز دسته‌ای)، و پردازش و مهندسی ویژگی را برای ایجاد ویژگی‌ها انجام می‌دهد. سپس ویژگی‌های ایجاد شده برای تولید استنتاج از یک مدل ML آموزش‌دیده و مستقر در زمان تقریباً واقعی استفاده می‌شوند. استنباط های تولید شده را می توان برای انجام اقدامات مناسب و شروع فعالیت های تعمیر و نگهداری، پردازش و توسط برنامه های پایین دستی مصرف کرد.

نمودار زیر معماری راه حل کلی ما را نشان می دهد.

راه حل به طور کلی شامل بخش های زیر است که در ادامه این پست به تفصیل توضیح داده شده است:

  • منبع داده و جذب جریانی - ما استفاده می کنیم آمازون کینزیس جریان داده برای جمع آوری داده های جریانی از حسگرهای میدانی در مقیاس و در دسترس قرار دادن آنها برای پردازش بیشتر.
  • مهندسی ویژگی در زمان واقعی - ما از کارهای پخش AWS Glue برای خواندن داده ها از یک جریان داده Kinesis و انجام پردازش داده ها و مهندسی ویژگی ها، قبل از ذخیره ویژگی های مشتق شده در سرویس ذخیره سازی ساده آمازون (Amazon S3). آمازون S3 یک گزینه قابل اعتماد و مقرون به صرفه برای ذخیره حجم زیادی از داده ها ارائه می دهد.
  • آموزش و استقرار مدل – ما از مجموعه داده نگهداری پیش‌بینی‌کننده AI4I از مخزن داده UCI برای آموزش یک مدل ML بر اساس الگوریتم XGBoost با استفاده از SageMaker استفاده می‌کنیم. سپس مدل آموزش دیده را در یک نقطه پایانی استنتاج ناهمزمان SageMaker مستقر می کنیم.
  • استنتاج ML در زمان واقعی - پس از اینکه ویژگی ها در آمازون S3 در دسترس هستند، باید استنباط هایی را از مدل مستقر شده در زمان تقریباً واقعی ایجاد کنیم. نقاط پایانی استنتاج ناهمزمان SageMaker برای این نیاز مناسب هستند زیرا از اندازه های بار بزرگتر (تا 1 گیگابایت) پشتیبانی می کنند و می توانند در عرض چند دقیقه (حداکثر حداکثر 15 دقیقه) استنتاج ایجاد کنند. ما از اعلان‌های رویداد S3 برای اجرا استفاده می‌کنیم AWS لامبدا تابعی برای فراخوانی یک نقطه پایانی استنتاج ناهمزمان SageMaker. نقاط پایانی استنتاج ناهمزمان SageMaker مکان‌های S3 را به‌عنوان ورودی می‌پذیرند، استنتاج‌هایی را از مدل مستقر شده تولید می‌کنند و این استنتاج‌ها را در زمان تقریباً واقعی به Amazon S3 باز می‌نویسند.

کد منبع این راه حل در قرار دارد GitHub. راه حل آزمایش شده است و باید در us-east-1 اجرا شود.

ما از یک AWS CloudFormation الگو، مستقر با استفاده از مدل برنامه بدون سرور 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 Solution Arch

  • در مرحله بعد، مخزن کد را به صورت محلی کلون می کنیم، که حاوی الگوی CloudFormation برای استقرار پشته است. دستور زیر را در ترمینال خود اجرا کنید:
git clone https://github.com/aws-samples/amazon-sagemaker-predictive-maintenance

  • به دایرکتوری sam-template بروید:
cd amazon-sagemaker-predictive-maintenance/sam-template

مخزن کلون git 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 Build

sam deploy --guided

  • ارائه آرگومان هایی برای استقرار مانند نام پشته، منطقه ترجیحی AWS (us-east-1)، و GlueScriptsBucket.

اطمینان حاصل کنید که همان سطل S3 را که قبلاً برای سطل S3 اسکریپت AWS Glue ایجاد کرده بودید (پارامتر GlueScriptsBucket در تصویر زیر).

ML-9132 SAM Deploy Param

پس از ارائه آرگومان های مورد نیاز، AWS SAM استقرار پشته را شروع می کند. تصویر زیر منابع ایجاد شده را نشان می دهد.

ML-9132 SAM مستقر شد

پس از استقرار موفقیت آمیز پشته، باید پیام زیر را مشاهده کنید.

ML-9132 SAM CF مستقر شد

  • در کنسول AWS CloudFormation، پشته را باز کنید (برای این پست، nrt-streaming-inference) که هنگام استقرار الگوی CloudFormation ارائه شد.
  • بر منابع برگه، به شناسه نمونه نوت بوک SageMaker توجه کنید.
  1. نوت بوک ML-9132 SM ایجاد شد
  • در کنسول SageMaker، این نمونه را باز کنید.

ML-9132 image018

نمونه نوت بوک 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 به عنوان یک قیف برای جمع آوری و جذب جریان های داده عمل می کند.

ما با استفاده از مولد داده آمازون Kinesis (KDG) بعداً در این پست برای تولید و ارسال داده به یک جریان داده Kinesis، شبیه سازی داده های تولید شده توسط حسگرها. داده‌های جریان داده‌های حسگر-جریان داده با استفاده از یک کار پخش AWS Glue جذب و پردازش می‌شوند که در ادامه به آن می‌پردازیم.

مهندسی ویژگی تقریباً در زمان واقعی

کارهای پخش AWS Glue روشی مناسب برای پردازش داده های جریانی در مقیاس، بدون نیاز به مدیریت محیط محاسباتی ارائه می دهد. چسب AWS به شما امکان می دهد عملیات استخراج، تبدیل و بارگذاری (ETL) را روی داده های جریانی با استفاده از کارهایی که به طور مداوم در حال اجرا هستند انجام دهید. AWS Glue Streaming ETL بر روی موتور جریان ساختار یافته Apache Spark ساخته شده است و می تواند جریان های Kinesis، Apache Kafka و آمازون پخش جریانی را برای آپاچی کافکا مدیریت کرد (Amazon MSK).

کار پخش جریانی ETL می‌تواند از تبدیل‌های داخلی چسب AWS و تبدیل‌های بومی جریان ساختار یافته Apache Spark استفاده کند. همچنین می توانید از Spark ML و MLLib کتابخانه‌ها در AWS Glue jobs برای پردازش آسان‌تر ویژگی‌ها با استفاده از کتابخانه‌های کمکی در دسترس.

اگر طرح منبع داده جریانی از قبل تعیین شده باشد، می توانید آن را در جدول AWS Data Catalog مشخص کنید. اگر تعریف طرحواره را نمی توان از قبل تعیین کرد، می توانید تشخیص طرحواره را در کار پخش جریانی ETL فعال کنید. سپس کار به طور خودکار طرحواره را از داده های دریافتی تعیین می کند. علاوه بر این، می توانید از AWS Glue Schema Registry امکان کشف مرکزی، کنترل و تکامل طرحواره های جریان داده را فراهم کند. شما می توانید رجیستری طرحواره را با کاتالوگ داده ادغام کنید تا به صورت اختیاری از طرحواره های ذخیره شده در رجیستری طرحواره هنگام ایجاد یا به روز رسانی جداول یا پارتیشن های چسب AWS در کاتالوگ داده استفاده کنید.

برای این پست، ما یک جدول AWS Glue Data Catalog ایجاد می کنیم (sensor-stream) با جریان داده های Kinesis ما به عنوان منبع و طرح واره را برای داده های حسگر خود تعریف کنید.

ما یک دیتافریم دینامیک AWS Glue از جدول Data Catalog برای خواندن داده‌های جریان از Kinesis ایجاد می‌کنیم. گزینه های زیر را نیز مشخص می کنیم:

  • اندازه پنجره 60 ثانیه، به طوری که کار AWS Glue داده ها را در پنجره های 60 ثانیه می خواند و پردازش می کند.
  • موقعیت شروع TRIM_HORIZON، برای اجازه خواندن از قدیمی ترین رکوردها در جریان داده Kinesis

ما همچنین از Spark MLlib's استفاده می کنیم StringIndexer ویژگی ترانسفورماتور برای رمزگذاری نوع ستون رشته در فهرست های برچسب. این تبدیل با استفاده از Spark ML Pipelines پیاده سازی شده است. خطوط لوله اسپارک ام ال یک مجموعه یکنواخت از APIهای سطح بالا برای الگوریتم‌های ML ارائه می‌کند تا ترکیب چندین الگوریتم در یک خط لوله یا گردش کار را آسان‌تر کند.

ما از foreachBatch API برای فراخوانی تابعی به نام 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 تبدیل های مشخص شده را انجام می دهد و داده ها را در آمازون S3 بر اساس سال، ماه، روز و شناسه دسته ای پارتیشن بندی می کند.

ما همچنین پارتیشن‌های چسب AWS را به یک پارتیشن واحد تقسیم می‌کنیم تا از داشتن فایل‌های کوچک زیاد در آمازون 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) را انجام می دهیم. ما همچنین مهندسی ویژگی را انجام می دهیم تا ویژگی های خود را برای آموزش مدل مفیدتر کنیم.

به عنوان مثال، در داخل مجموعه داده، یک ویژگی به نام type داریم که نوع کیفیت محصول را به صورت 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 هستیم تا پیش‌بینی کنیم که آیا دستگاه بر اساس خوانش‌های سیستم شکست خورده است یا خیر. ما یک مدل 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 Arch

برای فراخوانی نقطه پایان استنتاج ناهمزمان، بار درخواست باید در آمازون S3 ذخیره شود و ارجاع به این بار باید به عنوان بخشی از درخواست InvokeEndpointAsync ارائه شود. پس از فراخوانی، SageMaker درخواست را برای پردازش در صف قرار می دهد و یک شناسه و مکان خروجی را به عنوان پاسخ برمی گرداند. پس از پردازش، SageMaker نتیجه را در محل آمازون S3 قرار می دهد. شما می توانید به صورت اختیاری انتخاب کنید که اعلان های موفقیت یا خطا را دریافت کنید سرویس اطلاع رسانی ساده آمازون (Amazon SNS).

محلول انتها به انتها را تست کنید

برای آزمایش راه حل، مراحل زیر را انجام دهید:

  • در کنسول AWS CloudFormation، پشته‌ای را که قبلاً ایجاد کرده‌اید باز کنید (nrt-streaming-inference).
  • بر خروجی برگه، نام سطل S3 را کپی کنید (EventsBucket).

این سطل S3 است که کار پخش AWS Glue ما ویژگی‌ها را پس از خواندن و پردازش از جریان داده Kinesis روی آن می‌نویسد.

سطل رویداد ML-9132 S3

سپس، اعلان‌های رویداد را برای این سطل S3 تنظیم می‌کنیم.

  • در کنسول آمازون 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 Run Glue job

سپس از 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 Kineses Data Gen

کار پخش AWS Glue یک ریز دسته از داده ها (نماینده خوانش های حسگر) را از جریان داده های Kinesis بر اساس اندازه پنجره ارائه شده می خواند و استخراج می کند. سپس کار استریم، مهندسی ویژگی‌ها را روی این ریز دسته‌ای قبل از پارتیشن‌بندی و نوشتن آن بر روی ویژگی‌های پیشوند در سطل S3، پردازش و انجام می‌دهد.

همانطور که ویژگی های جدید ایجاد شده توسط کار پخش AWS Glue در سطل S3 نوشته می شود، یک تابع Lambda (invoke-endpoint-asynch) راه اندازی می شود، که با ارسال یک درخواست فراخوانی برای دریافت استنتاج از مدل مستقر ML ما، یک نقطه پایان استنتاج ناهمزمان SageMaker را فراخوانی می کند. نقطه پایانی استنتاج ناهمزمان درخواست فراخوانی ناهمزمان را در صف قرار می دهد. هنگامی که پردازش کامل شد، SageMaker نتایج استنتاج را در مکان Amazon S3 ذخیره می کند (S3OutputPath) که در طول پیکربندی نقطه پایانی استنتاج ناهمزمان مشخص شد.

برای مورد استفاده ما، نتایج استنتاج نشان می‌دهد که آیا یک قطعه ماشین احتمالاً بر اساس خوانش‌های حسگر خراب می‌شود یا خیر.

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

SageMaker همچنین یک اعلان موفقیت یا خطا با Amazon SNS ارسال می کند. به عنوان مثال، اگر شما راه اندازی کنید اشتراک ایمیل برای موفقیت و خطای موضوعات SNS (مشخص شده در پیکربندی نقطه پایانی استنتاج ناهمزمان SageMaker)، هر بار که یک درخواست استنتاج پردازش می شود، می توان یک ایمیل ارسال کرد. تصویر زیر یک ایمیل نمونه از موضوع موفقیت SNS را نشان می دهد.

ML-9132 SNS ایمیل مشترک شوید

برای برنامه های کاربردی دنیای واقعی، می توانید اعلان های SNS را با سرویس های دیگری مانند سرویس صف ساده آمازون (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 یک راه حل تعمیر و نگهداری پیش بینی کننده بسازید. جستجوی عمودی Ai. رهول شرما یک معمار راه حل در آزمایشگاه داده AWS است که به مشتریان AWS در طراحی و ساخت راه حل های AI/ML کمک می کند. قبل از پیوستن به AWS، راهول چندین سال را در بخش مالی و بیمه سپری کرده است و به مشتریان در ساخت پلتفرم های داده و تحلیلی کمک می کند.

با Amazon Kinesis، AWS Glue و Amazon SageMaker PlatoBlockchain Data Intelligence یک راه حل تعمیر و نگهداری پیش بینی کننده بسازید. جستجوی عمودی Ai.پت ریلی یک معمار در آزمایشگاه داده AWS است، جایی که به مشتریان کمک می کند تا حجم کاری داده را برای پشتیبانی از کسب و کار خود طراحی و ایجاد کنند. قبل از AWS، پت با یک شریک AWS مشورت کرد و حجم کاری داده AWS را در صنایع مختلف ایجاد کرد.

تمبر زمان:

بیشتر از آموزش ماشین AWS