Xây dựng giải pháp bảo trì dự đoán với Amazon Kinesis, AWS Glue và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.

Xây dựng giải pháp bảo trì dự đoán với Amazon Kinesis, AWS Glue và Amazon SageMaker

Các tổ chức đang ngày càng xây dựng và sử dụng các giải pháp hỗ trợ máy học (ML) cho nhiều trường hợp và vấn đề sử dụng khác nhau, bao gồm bảo trì dự đoán các bộ phận máy, đề xuất sản phẩm dựa trên sở thích của khách hàng, lập hồ sơ tín dụng, kiểm duyệt nội dung, phát hiện gian lận, v.v. Trong nhiều tình huống này, hiệu quả và lợi ích thu được từ các giải pháp hỗ trợ ML này có thể được nâng cao hơn nữa khi chúng có thể xử lý và rút ra thông tin chi tiết từ các sự kiện dữ liệu trong thời gian gần như thực.

Mặc dù giá trị kinh doanh và lợi ích của các giải pháp hỗ trợ ML gần như thời gian thực đã được thiết lập rõ ràng nhưng kiến ​​trúc cần thiết để triển khai các giải pháp này trên quy mô lớn với độ tin cậy và hiệu suất tối ưu vẫn phức tạp. Bài đăng này mô tả cách bạn có thể kết hợp Amazon Kinesis, Keo AWSAmazon SageMaker để xây dựng giải pháp suy luận và kỹ thuật tính năng gần như thời gian thực để bảo trì dự đoán.

Tổng quan về ca sử dụng

Chúng tôi tập trung vào trường hợp sử dụng bảo trì dự đoán trong đó các cảm biến được triển khai tại hiện trường (chẳng hạn như thiết bị công nghiệp hoặc thiết bị mạng), cần được thay thế hoặc khắc phục trước khi chúng bị lỗi và gây ra thời gian ngừng hoạt động. Thời gian ngừng hoạt động có thể gây tốn kém cho doanh nghiệp và có thể dẫn đến trải nghiệm khách hàng kém. Bảo trì dự đoán được hỗ trợ bởi mô hình ML cũng có thể giúp tăng cường các chu kỳ bảo trì thường xuyên theo lịch trình bằng cách thông báo khi nào không nên thay thế một bộ phận máy ở tình trạng tốt, do đó tránh được chi phí không cần thiết.

Trong bài đăng này, chúng tôi tập trung vào việc áp dụng học máy vào tập dữ liệu tổng hợp chứa các lỗi máy do các tính năng như nhiệt độ không khí, nhiệt độ xử lý, tốc độ quay, mô-men xoắn và độ mòn của dụng cụ. Bộ dữ liệu được sử dụng có nguồn gốc từ Kho lưu trữ dữ liệu UCI.

Lỗi máy bao gồm năm dạng lỗi độc lập:

  • Lỗi mài mòn dụng cụ (TWF)
  • Lỗi tản nhiệt (HDF)
  • Mất điện (PWF)
  • Lỗi quá căng (OSF)
  • Lỗi ngẫu nhiên (RNF)

Nhãn lỗi máy cho biết liệu máy có bị lỗi ở một điểm dữ liệu cụ thể hay không nếu bất kỳ chế độ lỗi nào trước đó là đúng. Nếu ít nhất một trong các chế độ lỗi là đúng thì quy trình sẽ không thành công và nhãn lỗi máy được đặt thành 1. Mục tiêu của mô hình ML là xác định chính xác lỗi máy, do đó có thể bắt đầu hành động bảo trì dự đoán tiếp theo.

Tổng quan về giải pháp

Đối với trường hợp sử dụng bảo trì dự đoán của chúng tôi, chúng tôi giả định rằng các cảm biến của thiết bị truyền tải nhiều phép đo và thông số đọc khác nhau về các bộ phận máy. Sau đó, giải pháp của chúng tôi sẽ lấy một phần dữ liệu phát trực tuyến mỗi lần (vi lô) rồi thực hiện xử lý cũng như kỹ thuật tính năng để tạo ra các tính năng. Sau đó, các tính năng được tạo sẽ được sử dụng để tạo ra các suy luận từ mô hình ML đã được đào tạo và triển khai trong thời gian gần như thực. Các suy luận được tạo ra có thể được các ứng dụng tiếp theo xử lý và sử dụng để thực hiện các hành động thích hợp và bắt đầu hoạt động bảo trì.

Sơ đồ sau đây cho thấy kiến ​​trúc của giải pháp tổng thể của chúng tôi.

Giải pháp nói chung bao gồm các phần sau, được giải thích chi tiết ở phần sau của bài đăng này:

  • Truyền trực tuyến nguồn dữ liệu và nhập - Chúng tôi sử dụng Luồng dữ liệu Amazon Kinesis để thu thập dữ liệu phát trực tuyến từ các cảm biến hiện trường trên quy mô lớn và cung cấp dữ liệu đó để xử lý tiếp.
  • Kỹ thuật tính năng gần thời gian thực – Chúng tôi sử dụng các tác vụ phát trực tuyến AWS Glue để đọc dữ liệu từ luồng dữ liệu Kinesis và thực hiện xử lý dữ liệu cũng như kỹ thuật tính năng trước khi lưu trữ các tính năng dẫn xuất vào Dịch vụ lưu trữ đơn giản của Amazon (Amazon S3). Amazon S3 cung cấp tùy chọn đáng tin cậy và tiết kiệm chi phí để lưu trữ khối lượng dữ liệu lớn.
  • Đào tạo và triển khai mô hình – Chúng tôi sử dụng tập dữ liệu bảo trì dự đoán AI4I từ Kho lưu trữ dữ liệu UCI để huấn luyện mô hình ML dựa trên thuật toán XGBoost bằng SageMaker. Sau đó, chúng tôi triển khai mô hình đã đào tạo đến điểm cuối suy luận không đồng bộ của SageMaker.
  • Suy luận ML gần thời gian thực – Sau khi các tính năng có sẵn trong Amazon S3, chúng tôi cần tạo các suy luận từ mô hình đã triển khai trong thời gian gần như thực. Điểm cuối suy luận không đồng bộ của SageMaker rất phù hợp với yêu cầu này vì chúng hỗ trợ kích thước tải trọng lớn hơn (tối đa 1 GB) và có thể tạo ra suy luận trong vòng vài phút (tối đa 15 phút). Chúng tôi sử dụng thông báo sự kiện S3 để chạy AWS Lambda để gọi điểm cuối suy luận không đồng bộ của SageMaker. Điểm cuối suy luận không đồng bộ của SageMaker chấp nhận vị trí S3 làm đầu vào, tạo ra các suy luận từ mô hình đã triển khai và ghi các suy luận này trở lại Amazon S3 trong thời gian gần như thực.

Mã nguồn của giải pháp này nằm trên GitHub. Giải pháp đã được thử nghiệm và sẽ được chạy trong us-east-1.

Chúng tôi sử dụng một Hình thành đám mây AWS mẫu, được triển khai bằng cách sử dụng Mô hình ứng dụng không có máy chủ AWS (AWS SAM) và sổ ghi chép SageMaker để triển khai giải pháp.

Điều kiện tiên quyết

Để bắt đầu, điều kiện tiên quyết là bạn phải có SAM CLI, Python 3PIP Cài đặt. Bạn cũng phải có Giao diện dòng lệnh AWS (AWS CLI) được định cấu hình đúng cách.

Triển khai giải pháp

Bạn có thể sử dụng Đám mây AWS để chạy các bước này. CloudShell là một shell dựa trên trình duyệt được xác thực trước bằng thông tin xác thực trên bảng điều khiển của bạn và bao gồm các công cụ vận hành và phát triển phổ biến được cài đặt sẵn (chẳng hạn như AWS SAM, AWS CLI và Python). Do đó, không cần cài đặt hoặc cấu hình cục bộ.

  • Chúng tôi bắt đầu bằng cách tạo vùng lưu trữ S3 nơi chúng tôi lưu trữ tập lệnh cho tác vụ phát trực tuyến AWS Glue của mình. Chạy lệnh sau trong thiết bị đầu cuối của bạn để tạo nhóm mới:
aws s3api create-bucket --bucket sample-script-bucket-$RANDOM --region us-east-1

  • Ghi lại tên của nhóm được tạo.

Vòm giải pháp ML-9132

  • Tiếp theo, chúng tôi sao chép cục bộ kho mã chứa mẫu CloudFormation để triển khai ngăn xếp. Chạy lệnh sau trong terminal của bạn:
git clone https://github.com/aws-samples/amazon-sagemaker-predictive-maintenance

  • Điều hướng đến thư mục sam-template:
cd amazon-sagemaker-predictive-maintenance/sam-template

Bản sao git ML-9132

  • Chạy lệnh sau để sao chép tập lệnh công việc AWS Glue (từ Glue_streaming/app.py) sang vùng lưu trữ S3 mà bạn đã tạo:
aws s3 cp glue_streaming/app.py s3://sample-script-bucket-30232/glue_streaming/app.py

Tập lệnh sao chép keo ML-9132

  • Bây giờ bạn có thể tiếp tục xây dựng và triển khai giải pháp thông qua mẫu CloudFormation qua AWS SAM. Chạy lệnh sau:

Bản dựng SAM ML-9132

sam deploy --guided

  • Cung cấp các đối số cho việc triển khai, chẳng hạn như tên ngăn xếp, Khu vực AWS ưa thích (us-east-1), Và GlueScriptsBucket.

Đảm bảo bạn cung cấp cùng một nhóm S3 mà bạn đã tạo trước đó cho nhóm S3 tập lệnh AWS Glue (tham số GlueScriptsBucket trong ảnh chụp màn hình sau).

Thông số triển khai ML-9132 SAM

Sau khi bạn cung cấp các đối số cần thiết, AWS SAM sẽ bắt đầu triển khai ngăn xếp. Ảnh chụp màn hình sau đây hiển thị các tài nguyên được tạo.

ML-9132 SAM đã được triển khai

Sau khi ngăn xếp được triển khai thành công, bạn sẽ thấy thông báo sau.

ML-9132 SAM CF được triển khai

  • Trên bảng điều khiển AWS CloudFormation, hãy mở ngăn xếp (đối với bài đăng này, nrt-streaming-inference) được cung cấp khi triển khai mẫu CloudFormation.
  • trên Thông tin tab, hãy lưu ý ID phiên bản sổ ghi chép SageMaker.
  1. Máy tính xách tay SM ML-9132 đã được tạo
  • Trên bảng điều khiển SageMaker, hãy mở phiên bản này.

ML-9132 hình ảnh018

Phiên bản sổ ghi chép SageMaker đã được tải sẵn các sổ ghi chép cần thiết.

Điều hướng đến thư mục sổ ghi chép, mở và làm theo hướng dẫn trong sổ ghi chép (Data_Pre-Processing.ipynbModelTraining-Evaluation-and-Deployment.ipynb) để khám phá tập dữ liệu, thực hiện tiền xử lý và kỹ thuật tính năng, đồng thời đào tạo và triển khai mô hình đến điểm cuối suy luận không đồng bộ của SageMaker.

ML-9132 Máy tính xách tay SM mở

Truyền trực tuyến nguồn dữ liệu và nhập

Kinesis Data Streams là dịch vụ truyền dữ liệu thời gian thực bền bỉ, không cần máy chủ và có thể mở rộng quy mô mà bạn có thể sử dụng để thu thập và xử lý các luồng bản ghi dữ liệu lớn trong thời gian thực. Kinesis Data Streams cho phép thu thập, xử lý và lưu trữ luồng dữ liệu từ nhiều nguồn khác nhau, chẳng hạn như dữ liệu nhật ký cơ sở hạ tầng CNTT, nhật ký ứng dụng, mạng xã hội, nguồn cấp dữ liệu thị trường, dữ liệu luồng nhấp chuột trên web, thiết bị và cảm biến IoT, v.v. Bạn có thể cung cấp luồng dữ liệu Kinesis ở chế độ theo yêu cầu hoặc chế độ được cung cấp tùy thuộc vào thông lượng và yêu cầu mở rộng quy mô. Để biết thêm thông tin, xem Chọn chế độ dung lượng luồng dữ liệu.

Đối với trường hợp sử dụng của chúng tôi, chúng tôi giả định rằng các cảm biến khác nhau đang gửi các phép đo như nhiệt độ, tốc độ quay, mô-men xoắn và độ mòn của dụng cụ tới luồng dữ liệu. Luồng dữ liệu Kinesis hoạt động như một kênh để thu thập và nhập luồng dữ liệu.

Chúng tôi sử dụng Trình tạo dữ liệu Amazon Kinesis (KDG) ở phần sau của bài đăng này để tạo và gửi dữ liệu đến luồng dữ liệu Kinesis, mô phỏng dữ liệu do cảm biến tạo ra. Dữ liệu từ luồng dữ liệu cảm biến luồng dữ liệu được nhập và xử lý bằng cách sử dụng tác vụ phát trực tuyến AWS Glue mà chúng ta sẽ thảo luận tiếp theo.

Kỹ thuật tính năng gần thời gian thực

Công việc phát trực tuyến AWS Glue cung cấp một cách thuận tiện để xử lý dữ liệu truyền phát trên quy mô lớn mà không cần quản lý môi trường điện toán. AWS Glue cho phép bạn thực hiện các thao tác trích xuất, chuyển đổi và tải (ETL) trên truyền dữ liệu bằng các tác vụ chạy liên tục. AWS Glue streaming ETL được xây dựng trên công cụ Truyền phát có cấu trúc Apache Spark và có thể sử dụng các luồng từ Kinesis, Apache Kafka và Truyền trực tuyến được quản lý của Amazon cho Apache Kafka (Amazon MSK).

Tác vụ phát trực tuyến ETL có thể sử dụng cả các phép biến đổi tích hợp sẵn của AWS Glue và các phép biến đổi có nguồn gốc từ Truyền phát có cấu trúc Apache Spark. Bạn cũng có thể sử dụng Spark ML và MLLib thư viện trong công việc AWS Glue để xử lý tính năng dễ dàng hơn bằng cách sử dụng các thư viện trợ giúp có sẵn.

Nếu lược đồ của nguồn dữ liệu phát trực tuyến được xác định trước, bạn có thể chỉ định lược đồ đó trong bảng Danh mục dữ liệu AWS. Nếu không thể xác định trước định nghĩa lược đồ, bạn có thể bật tính năng phát hiện lược đồ trong công việc phát trực tuyến ETL. Sau đó, công việc sẽ tự động xác định lược đồ từ dữ liệu đến. Ngoài ra, bạn có thể sử dụng Đăng ký lược đồ keo AWS để cho phép khám phá, kiểm soát và phát triển trung tâm các lược đồ luồng dữ liệu. Bạn có thể tích hợp thêm Sổ đăng ký lược đồ với Danh mục dữ liệu để tùy ý sử dụng các lược đồ được lưu trữ trong Sổ đăng ký lược đồ khi tạo hoặc cập nhật các bảng hoặc phân vùng AWS Glue trong Danh mục dữ liệu.

Đối với bài đăng này, chúng tôi tạo bảng Danh mục dữ liệu AWS Glue (sensor-stream) với luồng dữ liệu Kinesis làm nguồn và xác định lược đồ cho dữ liệu cảm biến của chúng tôi.

Chúng tôi tạo khung dữ liệu động AWS Glue từ bảng Danh mục dữ liệu để đọc dữ liệu truyền phát từ Kinesis. Chúng tôi cũng chỉ định các tùy chọn sau:

  • Kích thước cửa sổ là 60 giây để tác vụ AWS Glue đọc và xử lý dữ liệu trong cửa sổ 60 giây
  • Vị trí bắt đầu TRIM_HORIZON, để cho phép đọc từ các bản ghi cũ nhất trong luồng dữ liệu Kinesis

Chúng tôi cũng sử dụng Spark MLlib's Trình lập chỉ mục chuỗi tính năng biến đổi để mã hóa kiểu cột chuỗi thành các chỉ mục nhãn. Việc chuyển đổi này được thực hiện bằng cách sử dụng Spark ML Pipelines. Đường ống Spark ML cung cấp một bộ API cấp cao thống nhất cho các thuật toán ML để giúp kết hợp nhiều thuật toán vào một quy trình hoặc quy trình làm việc duy nhất dễ dàng hơn.

Chúng tôi sử dụng API foreachBatch để gọi hàm có tên là processBatch, hàm này sẽ xử lý dữ liệu được tham chiếu bởi khung dữ liệu này. Xem đoạn mã sau:

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

Hàm processBatch thực hiện các chuyển đổi được chỉ định và phân vùng dữ liệu trong Amazon S3 dựa trên năm, tháng, ngày và ID lô.

Chúng tôi cũng phân vùng lại các phân vùng AWS Glue thành một phân vùng duy nhất để tránh có quá nhiều tệp nhỏ trong Amazon S3. Việc có nhiều tệp nhỏ có thể cản trở hiệu suất đọc vì nó làm tăng chi phí liên quan đến việc tìm kiếm, mở và đọc từng tệp. Cuối cùng, chúng tôi viết các tính năng để tạo suy luận vào tiền tố (tính năng) trong nhóm S3. Xem đoạn mã sau:

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

Đào tạo và triển khai mô hình

SageMaker là dịch vụ ML được tích hợp và quản lý toàn phần, cho phép các nhà khoa học dữ liệu và kỹ sư ML xây dựng, đào tạo và triển khai các mô hình ML một cách nhanh chóng và dễ dàng.

Trong sổ ghi chép Data_Pre-Processing.ipynb, trước tiên, chúng tôi nhập tập dữ liệu Bảo trì dự đoán AI4I từ Kho lưu trữ dữ liệu UCI và thực hiện phân tích dữ liệu khám phá (EDA). Chúng tôi cũng thực hiện kỹ thuật tính năng để làm cho các tính năng của chúng tôi hữu ích hơn cho việc đào tạo mô hình.

Ví dụ: trong tập dữ liệu, chúng tôi có một đặc điểm có tên là loại, đại diện cho loại chất lượng của sản phẩm là L (thấp), M (trung bình) hoặc H (cao). Vì đây là tính năng phân loại nên chúng tôi cần mã hóa nó trước khi đào tạo mô hình của mình. Chúng tôi sử dụng LabelEncode của Scikit-Learn để đạt được điều này:

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

Sau khi các tính năng được xử lý và tạo ra các tập dữ liệu kiểm tra và huấn luyện tuyển chọn, chúng tôi sẵn sàng huấn luyện mô hình ML để dự đoán xem máy có bị lỗi hay không dựa trên kết quả đọc của hệ thống. Chúng tôi đào tạo mô hình XGBoost bằng thuật toán tích hợp SageMaker. XGBoost có thể mang lại kết quả tốt cho nhiều loại vấn đề ML, bao gồm cả phân loại, ngay cả khi mẫu đào tạo bị hạn chế.

SageMaker đào tạo việc làm cung cấp một cách mạnh mẽ và linh hoạt để đào tạo các mô hình ML trên SageMaker. SageMaker quản lý cơ sở hạ tầng điện toán cơ bản và cung cấp nhiều lựa chọn để lựa chọn, đáp ứng các yêu cầu đào tạo mô hình đa dạng, dựa trên trường hợp sử dụng.

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

Khi quá trình đào tạo mô hình hoàn tất và việc đánh giá mô hình đạt yêu cầu dựa trên yêu cầu nghiệp vụ, chúng ta có thể bắt đầu triển khai mô hình. Trước tiên, chúng tôi tạo cấu hình điểm cuối với tùy chọn đối tượng AsyncInferenceConfig và sử dụng mô hình đã được đào tạo trước đó:

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

Sau đó, chúng tôi tạo điểm cuối suy luận không đồng bộ SageMaker bằng cách sử dụng cấu hình điểm cuối mà chúng tôi đã tạo. Sau khi được cung cấp, chúng ta có thể bắt đầu gọi điểm cuối để tạo ra các suy luận không đồng bộ.

endpoint_name = resource_name.format("Endpoint")
create_endpoint_response = sm_client.create_endpoint(
EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name)

Suy luận gần thời gian thực

SageMaker suy luận không đồng bộ điểm cuối cung cấp khả năng xếp hàng các yêu cầu suy luận đến và xử lý chúng một cách không đồng bộ trong thời gian gần như thực. Điều này lý tưởng cho các ứng dụng có yêu cầu suy luận với kích thước tải trọng lớn hơn (tối đa 1 GB), có thể yêu cầu thời gian xử lý lâu hơn (tối đa 15 phút) và có yêu cầu về độ trễ gần như thời gian thực. Suy luận không đồng bộ cũng cho phép bạn tiết kiệm chi phí bằng cách tự động điều chỉnh số lượng phiên bản về XNUMX khi không có yêu cầu nào để xử lý, do đó bạn chỉ thanh toán khi điểm cuối của bạn đang xử lý yêu cầu.

Bạn có thể tạo điểm cuối suy luận không đồng bộ SageMaker tương tự như cách bạn tạo điểm cuối suy luận thời gian thực và chỉ định thêm AsyncInferenceConfig đối tượng, trong khi tạo cấu hình điểm cuối của bạn bằng trường EndpointConfig trong API CreateEndpointConfig. Sơ đồ sau đây cho thấy quy trình suy luận và cách điểm cuối suy luận không đồng bộ tạo ra suy luận.

ML-9132 SageMaker Asych Arch

Để gọi điểm cuối suy luận không đồng bộ, tải trọng yêu cầu phải được lưu trữ trong Amazon S3 và cần cung cấp tham chiếu đến tải trọng này như một phần của yêu cầu InvokeEndpointAsync. Khi gọi, SageMaker xếp hàng yêu cầu xử lý và trả về mã định danh cũng như vị trí đầu ra dưới dạng phản hồi. Sau khi xử lý, SageMaker đặt kết quả vào vị trí Amazon S3. Bạn có thể tùy ý chọn nhận thông báo thành công hoặc lỗi với Dịch vụ thông báo đơn giản của Amazon (SNS của Amazon).

Kiểm tra giải pháp end-to-end

Để kiểm tra giải pháp, hãy hoàn thành các bước sau:

  • Trên bảng điều khiển AWS CloudFormation, hãy mở ngăn xếp bạn đã tạo trước đó (nrt-streaming-inference).
  • trên Kết quả đầu ra tab, sao chép tên của nhóm S3 (EventsBucket).

Đây là bộ chứa S3 mà tác vụ phát trực tuyến AWS Glue của chúng tôi ghi các tính năng sau khi đọc và xử lý từ luồng dữ liệu Kinesis.

Nhóm sự kiện ML-9132 S3

Tiếp theo, chúng tôi thiết lập thông báo sự kiện cho bộ chứa S3 này.

  • Trên bảng điều khiển Amazon S3, điều hướng đến nhóm EventsBucket.
  • trên Bất động sản tab, trong Thông báo sự kiện phần, chọn Tạo thông báo sự kiện.

Thuộc tính nhóm sự kiện ML-9132 S3

Thông báo nhóm sự kiện ML-9132 S3

  • Trong Tên sự kiện, đi vào invoke-endpoint-lambda.
  • Trong Tiếp đầu ngữ, đi vào features/.
  • Trong suffix, đi vào .csv.
  • Trong Các loại sự kiện, lựa chọn Tất cả các đối tượng tạo sự kiện.

Cấu hình thông báo nhóm sự kiện ML-9132 S3
Cấu hình thông báo nhóm sự kiện ML-9132 S3

  • Trong Nơi đến, lựa chọn Hàm Lambda.
  • Trong Hàm Lambdavà chọn hàm invoke-endpoint-asynch.
  • Chọn Lưu các thay đổi.

Cấu hình thông báo nhóm sự kiện ML-9132 S3 lambda

  • Trên bảng điều khiển AWS Glue, hãy mở công việc GlueStreaming-Kinesis-S3.
  • Chọn Chạy công việc.

ML-9132 Chạy keo công việc

Tiếp theo, chúng tôi sử dụng Trình tạo dữ liệu Kinesis (KDG) để mô phỏng các cảm biến gửi dữ liệu đến luồng dữ liệu Kinesis của chúng tôi. Nếu đây là lần đầu tiên bạn sử dụng KDG, hãy tham khảo Giới thiệu chung cho thiết lập ban đầu. KDG cung cấp mẫu CloudFormation để tạo người dùng và chỉ định đủ quyền để sử dụng KDG nhằm gửi sự kiện đến Kinesis. Chạy Mẫu CloudFormation trong tài khoản AWS mà bạn đang sử dụng để xây dựng giải pháp trong bài đăng này. Sau khi KDG được thiết lập, hãy đăng nhập và truy cập KDG để gửi các sự kiện thử nghiệm tới luồng dữ liệu Kinesis của chúng tôi.

  • Sử dụng Khu vực mà bạn đã tạo luồng dữ liệu Kinesis (us-east-1).
  • Trên menu thả xuống, chọn luồng dữ liệu sensor-data-stream.
  • Trong tạp chí Ghi mỗi giây phần, chọn Liên tục và nhập 100.
  • Bỏ chọn Nén bản ghi.
  • Trong Ghi mẫu, hãy sử dụng mẫu sau:
{
"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"])}}"
}

  • Nhấp chuột Gửi dữ liệu để bắt đầu gửi dữ liệu đến luồng dữ liệu Kinesis.

ML-9132 Kineses Data Gen

Tác vụ phát trực tuyến AWS Glue đọc và trích xuất một loạt dữ liệu vi mô (thể hiện kết quả đọc của cảm biến) từ luồng dữ liệu Kinesis dựa trên kích thước cửa sổ được cung cấp. Sau đó, công việc phát trực tuyến sẽ xử lý và thực hiện kỹ thuật tính năng trên lô vi mô này trước khi phân vùng và ghi nó vào các tính năng tiền tố trong nhóm S3.

Khi các tính năng mới do tác vụ phát trực tuyến AWS Glue tạo ra được ghi vào bộ chứa S3, hàm Lambda (invoke-endpoint-asynch) được kích hoạt, gọi ra điểm cuối suy luận không đồng bộ SageMaker bằng cách gửi yêu cầu gọi để nhận các suy luận từ mô hình ML đã triển khai của chúng tôi. Điểm cuối suy luận không đồng bộ xếp hàng yêu cầu gọi không đồng bộ. Khi quá trình xử lý hoàn tất, SageMaker lưu trữ kết quả suy luận ở vị trí Amazon S3 (S3OutputPath) đã được chỉ định trong cấu hình điểm cuối suy luận không đồng bộ.

Đối với trường hợp sử dụng của chúng tôi, kết quả suy luận cho biết liệu một bộ phận máy có khả năng bị lỗi hay không, dựa trên kết quả đọc của cảm biến.

ML-9132 Suy luận mô hình

SageMaker cũng gửi thông báo thành công hoặc lỗi bằng Amazon SNS. Ví dụ: nếu bạn thiết lập một đăng ký email đối với các chủ đề SNS thành công và lỗi (được chỉ định trong cấu hình điểm cuối suy luận SageMaker không đồng bộ), một email có thể được gửi mỗi khi yêu cầu suy luận được xử lý. Ảnh chụp màn hình sau đây hiển thị email mẫu từ chủ đề thành công của SNS.

Đăng ký email ML-9132 SNS

Đối với các ứng dụng trong thế giới thực, bạn có thể tích hợp thông báo SNS với các dịch vụ khác như Dịch vụ xếp hàng đơn giản trên Amazon (Amazon SQS) và Lambda để xử lý hậu kỳ bổ sung các suy luận được tạo hoặc tích hợp với các ứng dụng hạ nguồn khác, dựa trên yêu cầu của bạn. Ví dụ: đối với trường hợp sử dụng bảo trì dự đoán của chúng tôi, bạn có thể gọi hàm Lambda dựa trên thông báo SNS để đọc suy luận được tạo từ Amazon S3, xử lý thêm (chẳng hạn như tổng hợp hoặc lọc) và bắt đầu quy trình công việc như gửi lệnh sản xuất cho sửa chữa thiết bị cho kỹ thuật viên.

Làm sạch

Khi bạn kiểm tra xong ngăn xếp, hãy xóa các tài nguyên (đặc biệt là luồng dữ liệu Kinesis, công việc truyền trực tuyến Glue và các chủ đề SNS) để tránh các khoản phí không mong muốn.

Chạy đoạn mã sau để xóa ngăn xếp của bạn:

sam delete nrt-streaming-inference

Đồng thời xóa các tài nguyên như điểm cuối SageMaker bằng cách làm theo phần dọn dẹp trong sổ tay ModelTraining-Evaluation-and-Deployment.

Kết luận

Trong bài đăng này, chúng tôi đã sử dụng trường hợp sử dụng bảo trì dự đoán để trình bày cách sử dụng các dịch vụ khác nhau như Kinesis, AWS Glue và SageMaker để xây dựng quy trình suy luận gần như thời gian thực. Chúng tôi khuyến khích bạn thử giải pháp này và cho chúng tôi biết suy nghĩ của bạn.

Nếu bạn có bất kỳ câu hỏi nào, hãy chia sẻ chúng trong phần bình luận.


Giới thiệu về tác giả

Xây dựng giải pháp bảo trì dự đoán với Amazon Kinesis, AWS Glue và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái. La Mã là Kiến trúc sư giải pháp tại Phòng thí nghiệm dữ liệu AWS, giúp khách hàng AWS thiết kế và xây dựng các giải pháp AI/ML. Trước khi gia nhập AWS, Rahul đã có nhiều năm làm việc trong lĩnh vực tài chính và bảo hiểm, giúp khách hàng xây dựng nền tảng dữ liệu và phân tích.

Xây dựng giải pháp bảo trì dự đoán với Amazon Kinesis, AWS Glue và Amazon SageMaker PlatoBlockchain Data Intelligence. Tìm kiếm dọc. Ái.Pat Reilly là Kiến trúc sư tại Phòng thí nghiệm dữ liệu AWS, nơi anh giúp khách hàng thiết kế và xây dựng khối lượng công việc dữ liệu để hỗ trợ hoạt động kinh doanh của họ. Trước AWS, Pat đã tư vấn cho Đối tác AWS, xây dựng khối lượng công việc dữ liệu AWS trên nhiều ngành khác nhau.

Dấu thời gian:

Thêm từ Học máy AWS