Amazon Kinesis, AWS Glue 및 Amazon SageMaker PlatoBlockchain Data Intelligence로 예측 유지 관리 솔루션을 구축하십시오. 수직 검색. 일체 포함.

Amazon Kinesis, AWS Glue 및 Amazon SageMaker로 예측 유지 관리 솔루션 구축

조직은 기계 부품의 예측 유지 관리, 고객 선호도에 따른 제품 권장 사항, 신용 프로파일링, 콘텐츠 조정, 사기 탐지 등을 포함하여 다양한 사용 사례 및 문제에 대해 기계 학습(ML) 기반 솔루션을 점점 더 구축하고 사용하고 있습니다. 이러한 많은 시나리오에서 이러한 ML 기반 솔루션에서 파생된 효과와 이점은 거의 실시간으로 데이터 이벤트를 처리하고 통찰력을 얻을 수 있을 때 더욱 향상될 수 있습니다.

실시간에 가까운 ML 기반 솔루션의 비즈니스 가치와 이점이 잘 확립되어 있지만 최적의 안정성과 성능으로 이러한 솔루션을 대규모로 구현하는 데 필요한 아키텍처는 복잡합니다. 이 게시물은 어떻게 결합할 수 있는지 설명합니다 아마존 키네 시스, AWS 접착제아마존 세이지 메이커 예측 유지 보수를 위한 거의 실시간 기능 엔지니어링 및 추론 솔루션을 구축합니다.

사용 사례 개요

우리는 현장에 배치된 센서(산업 장비 또는 네트워크 장치와 같은)가 결함이 되어 가동 중지 시간을 일으키기 전에 교체하거나 수정해야 하는 예측 유지 관리 사용 사례에 중점을 둡니다. 가동 중지 시간은 기업에 비용이 많이 들고 고객 경험이 좋지 않을 수 있습니다. ML 모델을 기반으로 하는 예측 유지 관리는 양호한 상태의 기계 부품을 교체해서는 안 되는 시기를 알려 불필요한 비용을 방지함으로써 정기적인 일정 기반 유지 관리 주기를 늘리는 데 도움이 될 수 있습니다.

이 게시물에서는 공기 온도, 프로세스 온도, 회전 속도, 토크 및 도구 마모와 같은 기능으로 인한 기계 고장을 포함하는 합성 데이터 세트에 기계 학습을 적용하는 데 중점을 둡니다. 사용된 데이터세트는 UCI 데이터 저장소.

기계 고장은 XNUMX가지 독립적인 고장 모드로 구성됩니다.

  • 공구 마모 실패(TWF)
  • 방열 실패(HDF)
  • 정전(PWF)
  • 과변형 실패(OSF)
  • 랜덤 실패(RNF)

기계 오류 레이블은 이전 오류 모드 중 하나라도 참인 경우 특정 데이터 포인트에 대해 기계가 실패했는지 여부를 나타냅니다. 오류 모드 중 하나 이상이 true이면 프로세스가 실패하고 기계 오류 레이블이 1로 설정됩니다. ML 모델의 목적은 기계 오류를 올바르게 식별하여 다운스트림 예측 유지 관리 작업을 시작할 수 있도록 하는 것입니다.

솔루션 개요

예측 유지 관리 사용 사례의 경우 장치 센서가 기계 부품에 대한 다양한 측정 및 판독값을 스트리밍한다고 가정합니다. 그런 다음 우리 솔루션은 매번 스트리밍 데이터 조각(마이크로 배치)을 취하고 처리 및 기능 엔지니어링을 수행하여 기능을 생성합니다. 생성된 기능은 훈련되고 배포된 ML 모델에서 거의 실시간으로 추론을 생성하는 데 사용됩니다. 생성된 추론은 다운스트림 애플리케이션에서 추가 처리 및 사용하여 적절한 조치를 취하고 유지 관리 활동을 시작할 수 있습니다.

다음 다이어그램은 전체 솔루션의 아키텍처를 보여줍니다.

이 솔루션은 다음 섹션으로 광범위하게 구성되어 있으며 이 섹션의 뒷부분에서 자세히 설명합니다.

  • 스트리밍 데이터 소스 및 수집 - 우리는 사용 Amazon Kinesis 데이터 스트림 대규모 현장 센서에서 스트리밍 데이터를 수집하고 추가 처리에 사용할 수 있도록 합니다.
  • 실시간에 가까운 기능 엔지니어링 – AWS Glue 스트리밍 작업을 사용하여 Kinesis 데이터 스트림에서 데이터를 읽고 파생된 기능을 저장하기 전에 데이터 처리 및 기능 엔지니어링을 수행합니다. 아마존 단순 스토리지 서비스 (아마존 S3). Amazon S3는 대용량 데이터를 저장할 수 있는 안정적이고 비용 효율적인 옵션을 제공합니다.
  • 모델 교육 및 배포 – UCI Data Repository의 AI4I 예측 유지 관리 데이터 세트를 사용하여 SageMaker를 사용하여 XGBoost 알고리즘을 기반으로 하는 ML 모델을 학습합니다. 그런 다음 훈련된 모델을 SageMaker 비동기 추론 엔드포인트에 배포합니다.
  • 실시간에 가까운 ML 추론 – Amazon S3에서 기능을 사용할 수 있게 되면 배포된 모델에서 거의 실시간으로 추론을 생성해야 합니다. SageMaker 비동기 추론 엔드포인트는 더 큰 페이로드 크기(최대 1GB)를 지원하고 몇 분(최대 15분) 이내에 추론을 생성할 수 있기 때문에 이 요구 사항에 매우 적합합니다. 우리는 S3 이벤트 알림을 사용하여 AWS 람다 함수를 사용하여 SageMaker 비동기 추론 끝점을 호출합니다. SageMaker 비동기식 추론 엔드포인트는 S3 위치를 입력으로 받아들이고 배포된 모델에서 추론을 생성하며 이러한 추론을 거의 실시간으로 Amazon S3에 다시 씁니다.

이 솔루션의 소스 코드는 다음 위치에 있습니다. GitHub의. 솔루션이 테스트되었으며 us-east-1에서 실행되어야 합니다.

우리는 AWS 클라우드 포메이션 템플릿, 사용하여 배포 AWS 서버리스 애플리케이션 모델 (AWS SAM) 및 SageMaker 노트북을 사용하여 솔루션을 배포합니다.

사전 조건

시작하려면 전제 조건으로 샘 CLI, 파이썬 3PIP 설치되었습니다. 당신은 또한 가지고 있어야합니다 AWS 명령 줄 인터페이스 (AWS CLI)가 올바르게 구성되었습니다.

솔루션 배포

당신이 사용할 수 AWS 클라우드쉘 이 단계를 실행합니다. CloudShell은 콘솔 자격 증명으로 사전 인증되고 사전 설치된 공통 개발 및 운영 도구(예: AWS SAM, AWS CLI 및 Python)를 포함하는 브라우저 기반 셸입니다. 따라서 로컬 설치 또는 구성이 필요하지 않습니다.

  • 먼저 AWS Glue 스트리밍 작업에 대한 스크립트를 저장할 S3 버킷을 생성합니다. 터미널에서 다음 명령을 실행하여 새 버킷을 만듭니다.
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.

AWS Glue 스크립트 S3 버킷(매개변수 GlueScriptsBucket 다음 스크린샷에서).

ML-9132 SAM 배포 매개변수

필수 인수를 제공하면 AWS SAM이 스택 배포를 시작합니다. 다음 스크린샷은 생성된 리소스를 보여줍니다.

ML-9132 SAM 배치됨

스택이 성공적으로 배포되면 다음 메시지가 표시되어야 합니다.

ML-9132 SAM CF 배치

  • AWS CloudFormation 콘솔에서 스택을 엽니다(이 게시물의 경우, nrt-streaming-inference) CloudFormation 템플릿을 배포할 때 제공되었습니다.
  • 자료 탭에서 SageMaker 노트북 인스턴스 ID를 기록해 둡니다.
  1. ML-9132 SM 노트북 제작
  • SageMaker 콘솔에서 이 인스턴스를 엽니다.

ML-9132 이미지018

SageMaker 노트북 인스턴스에는 필수 노트북이 미리 로드되어 있습니다.

노트북 폴더로 이동하여 노트북(Data_Pre-Processing.ipynbModelTraining-Evaluation-and-Deployment.ipynb) 데이터 세트를 탐색하고, 전처리 및 기능 엔지니어링을 수행하고, 모델을 SageMaker 비동기 추론 엔드포인트에 교육 및 배포합니다.

ML-9132 오픈 SM 노트북

스트리밍 데이터 소스 및 수집

Kinesis Data Streams는 대규모 데이터 레코드 스트림을 실시간으로 수집하고 처리하는 데 사용할 수 있는 확장 가능하고 내구성이 뛰어난 서버리스 실시간 데이터 스트리밍 서비스입니다. Kinesis Data Streams를 사용하면 IT 인프라 로그 데이터, 애플리케이션 로그, 소셜 미디어, 시장 데이터 피드, 웹 클릭스트림 데이터, IoT 디바이스 및 센서 등과 같은 다양한 소스의 데이터 스트림을 캡처, 처리 및 저장할 수 있습니다. 처리량 및 조정 요구 사항에 따라 Kinesis 데이터 스트림을 온디맨드 모드 또는 프로비저닝된 모드로 프로비저닝할 수 있습니다. 자세한 내용은 데이터 스트림 용량 모드 선택.

우리의 사용 사례에서는 다양한 센서가 온도, 회전 속도, 토크 및 도구 마모와 같은 측정값을 데이터 스트림으로 전송한다고 가정합니다. Kinesis Data Streams는 데이터 스트림을 수집하고 수집하기 위한 깔때기 역할을 합니다.

우리는을 사용하여 Amazon Kinesis 데이터 생성기 (KDG)는 이 게시물의 뒷부분에서 데이터를 생성하고 Kinesis 데이터 스트림으로 전송하여 센서에서 생성되는 데이터를 시뮬레이션합니다. 데이터 스트림 sensor-data-stream의 데이터는 AWS Glue 스트리밍 작업을 사용하여 수집 및 처리되며, 이에 대해서는 다음에 설명합니다.

실시간에 가까운 기능 엔지니어링

AWS Glue 스트리밍 작업 컴퓨팅 환경을 관리할 필요 없이 대규모 스트리밍 데이터를 처리할 수 있는 편리한 방법을 제공합니다. AWS Glue를 사용하면 지속적으로 실행되는 작업을 사용하여 스트리밍 데이터에서 추출, 변환 및 로드(ETL) 작업을 수행할 수 있습니다. AWS Glue 스트리밍 ETL은 Apache Spark 구조적 스트리밍 엔진을 기반으로 하며 Kinesis, Apache Kafka 및 Apache Kafka 용 Amazon Managed Streaming (아마존 MSK).

스트리밍 ETL 작업은 AWS Glue 기본 제공 변환과 Apache Spark 구조적 스트리밍에 고유한 변환을 모두 사용할 수 있습니다. Spark ML을 사용할 수도 있습니다. MLib 쉽게 사용할 수 있는 도우미 라이브러리를 사용하여 더 쉽게 기능을 처리할 수 있도록 AWS Glue 작업의 라이브러리.

스트리밍 데이터 원본의 스키마가 미리 결정된 경우 AWS Data Catalog 테이블에서 지정할 수 있습니다. 스키마 정의를 미리 결정할 수 없는 경우 스트리밍 ETL 작업에서 스키마 감지를 활성화할 수 있습니다. 그런 다음 작업은 들어오는 데이터에서 스키마를 자동으로 결정합니다. 또한 다음을 사용할 수 있습니다. AWS Glue 스키마 레지스트리 데이터 스트림 스키마의 중앙 검색, 제어 및 진화를 허용합니다. 스키마 레지스트리를 데이터 카탈로그와 추가로 통합하여 데이터 카탈로그에서 AWS Glue 테이블 또는 파티션을 생성하거나 업데이트할 때 스키마 레지스트리에 저장된 스키마를 선택적으로 사용할 수 있습니다.

이 게시물에서는 AWS Glue 데이터 카탈로그 테이블(sensor-stream) Kinesis 데이터 스트림을 소스로 사용하고 센서 데이터에 대한 스키마를 정의합니다.

Kinesis에서 스트리밍 데이터를 읽기 위해 Data Catalog 테이블에서 AWS Glue 동적 데이터 프레임을 생성합니다. 다음 옵션도 지정합니다.

  • AWS Glue 작업이 60초 창에서 데이터를 읽고 처리할 수 있도록 60초의 창 크기
  • 시작 위치 TRIM_HORIZON, Kinesis 데이터 스트림에서 가장 오래된 레코드 읽기 허용

우리는 또한 Spark MLlib의 문자열 인덱서 문자열 열 유형을 레이블 인덱스로 인코딩하는 기능 변환기. 이 변환은 Spark ML 파이프라인을 사용하여 구현됩니다. 스파크 ML 파이프라인 여러 알고리즘을 단일 파이프라인 또는 워크플로로 쉽게 결합할 수 있도록 ML 알고리즘에 대한 균일한 고급 API 세트를 제공합니다.

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 함수는 지정된 변환을 수행하고 연도, 월, 일 및 배치 ID를 기반으로 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 Data Repository에서 AI4I Predictive Maintenance 데이터 세트를 가져오고 탐색적 데이터 분석(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 모델을 훈련합니다. XGBoost 훈련 샘플이 제한된 경우에도 분류를 포함하여 여러 유형의 ML 문제에 대해 좋은 결과를 제공할 수 있습니다.

SageMaker 교육 작업 SageMaker에서 ML 모델을 훈련하는 강력하고 유연한 방법을 제공합니다. 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)

거의 실시간 추론

세이지 메이커 비동기 추론 엔드포인트는 들어오는 추론 요청을 대기열에 넣고 거의 실시간으로 비동기식으로 처리하는 기능을 제공합니다. 이는 페이로드 크기가 더 큰(최대 1GB) 추론 요청이 있고 처리 시간이 더 길어야 하고(최대 15분) 실시간에 가까운 대기 시간 요구 사항이 있는 애플리케이션에 이상적입니다. 비동기식 추론을 사용하면 처리할 요청이 없을 때 인스턴스 수를 XNUMX으로 자동 조정하여 비용을 절감할 수 있으므로 엔드포인트가 요청을 처리할 때만 비용을 지불하면 됩니다.

실시간 추론 끝점을 생성하는 방법과 유사하게 SageMaker 비동기 추론 끝점을 만들고 추가로 지정할 수 있습니다. AsyncInferenceConfig CreateEndpointConfig API의 EndpointConfig 필드를 사용하여 엔드포인트 구성을 생성하는 동안 다음 다이어그램은 추론 워크플로와 비동기 추론 끝점이 추론을 생성하는 방법을 보여줍니다.

ML-9132 SageMaker 아시크 아치

비동기식 추론 엔드포인트를 호출하려면 요청 페이로드가 Amazon S3에 저장되어야 하고 이 페이로드에 대한 참조가 InvokeEndpointAsync 요청의 일부로 제공되어야 합니다. 호출 시 SageMaker는 처리를 위해 요청을 대기열에 넣고 식별자와 출력 위치를 응답으로 반환합니다. 처리 시 SageMaker는 결과를 Amazon S3 위치에 배치합니다. 선택적으로 성공 또는 오류 알림을 받도록 선택할 수 있습니다. 아마존 단순 알림 서비스 (아마존 SNS).

엔드 투 엔드 솔루션 테스트

솔루션을 테스트하려면 다음 단계를 완료하십시오.

  • AWS CloudFormation 콘솔에서 이전에 생성한 스택을 엽니다(nrt-streaming-inference).
  • 출력 탭에서 S3 버킷의 이름을 복사합니다(EventsBucket).

이것은 AWS Glue 스트리밍 작업이 Kinesis 데이터 스트림을 읽고 처리한 후 기능을 쓰는 S3 버킷입니다.

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 접착제 작업 실행

다음으로 Kinesis Data Generator(KDG)를 사용하여 Kinesis 데이터 스트림으로 데이터를 보내는 센서를 시뮬레이션합니다. KDG를 처음 사용하는 경우 다음을 참조하십시오. 살펴보기 초기 설정을 위해. KDG는 사용자를 생성하고 Kinesis에 이벤트를 보내는 데 KDG를 사용하기에 충분한 권한만 할당하는 CloudFormation 템플릿을 제공합니다. 실행 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)가 트리거되어 배포된 ML 모델에서 추론을 가져오기 위해 호출 요청을 보내 SageMaker 비동기 추론 엔드포인트를 호출합니다. 비동기 추론 엔드포인트는 비동기 호출에 대한 요청을 대기열에 넣습니다. 처리가 완료되면 SageMaker는 추론 결과를 Amazon S3 위치(S3OutputPath) 비동기 추론 끝점 구성 중에 지정되었습니다.

우리의 사용 사례의 경우 추론 결과는 센서 판독값을 기반으로 기계 부품이 고장날 가능성이 있는지 여부를 나타냅니다.

ML-9132 모델 추론

SageMaker는 또한 Amazon SNS를 통해 성공 또는 오류 알림을 보냅니다. 예를 들어 이메일 구독 성공 및 오류 SNS 주제(비동기식 SageMaker 추론 엔드포인트 구성 내에서 지정됨)의 경우 추론 요청이 처리될 때마다 이메일을 보낼 수 있습니다. 다음 스크린샷은 SNS 성공 주제의 샘플 이메일을 보여줍니다.

ML-9132 SNS 이메일 구독

실제 애플리케이션의 경우 SNS 알림을 다음과 같은 다른 서비스와 통합할 수 있습니다. 아마존 단순 대기열 서비스 (Amazon SQS) 및 요구 사항에 따라 생성된 추론의 추가 사후 처리 또는 다른 다운스트림 애플리케이션과의 통합을 위한 Lambda. 예를 들어 예측 유지 관리 사용 사례의 경우 SNS 알림을 기반으로 Lambda 함수를 호출하여 Amazon S3에서 생성된 추론을 읽고 추가 처리(예: 집계 또는 필터링)하고 작업 주문 전송과 같은 워크플로를 시작할 수 있습니다. 기술자에게 장비 수리.

정리

스택 테스트가 끝나면 리소스(특히 Kinesis 데이터 스트림, Glue 스트리밍 작업 및 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 Data Lab의 솔루션 아키텍트이며 AWS 고객이 AI/ML 솔루션을 설계하고 구축할 수 있도록 지원합니다. AWS에 합류하기 전에 Rahul은 금융 및 보험 부문에서 수년간 고객이 데이터 및 분석 플랫폼을 구축하도록 지원했습니다.

Amazon Kinesis, AWS Glue 및 Amazon SageMaker PlatoBlockchain Data Intelligence로 예측 유지 관리 솔루션을 구축하십시오. 수직 검색. 일체 포함.팻 라일리 AWS Data Lab의 아키텍트이며 고객이 비즈니스를 지원하기 위해 데이터 워크로드를 설계하고 구축하는 것을 돕습니다. AWS에 합류하기 전에 Pat은 AWS 파트너에서 컨설팅을 받아 다양한 산업 분야에서 AWS 데이터 워크로드를 구축했습니다.

타임 스탬프 :

더보기 AWS 기계 학습