Δημιουργήστε μια προγνωστική λύση συντήρησης με το Amazon Kinesis, το AWS Glue και το Amazon SageMaker PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Δημιουργήστε μια προγνωστική λύση συντήρησης με το Amazon Kinesis, το AWS Glue και το Amazon SageMaker

Οι οργανισμοί δημιουργούν και χρησιμοποιούν ολοένα και περισσότερο λύσεις μηχανικής εκμάθησης (ML) για μια ποικιλία περιπτώσεων χρήσης και προβλημάτων, συμπεριλαμβανομένης της προγνωστικής συντήρησης εξαρτημάτων μηχανών, των συστάσεων προϊόντων με βάση τις προτιμήσεις των πελατών, του προφίλ πίστωσης, της εποπτείας περιεχομένου, του εντοπισμού απάτης και πολλά άλλα. Σε πολλά από αυτά τα σενάρια, η αποτελεσματικότητα και τα οφέλη που προκύπτουν από αυτές τις λύσεις που υποστηρίζονται από ML μπορούν να βελτιωθούν περαιτέρω όταν μπορούν να επεξεργαστούν και να αντλήσουν πληροφορίες από συμβάντα δεδομένων σε σχεδόν πραγματικό χρόνο.

Αν και η επιχειρηματική αξία και τα οφέλη των λύσεων που λειτουργούν με ML σε σχεδόν πραγματικό χρόνο είναι καλά εδραιωμένα, η αρχιτεκτονική που απαιτείται για την εφαρμογή αυτών των λύσεων σε κλίμακα με τη βέλτιστη αξιοπιστία και απόδοση είναι πολύπλοκη. Αυτή η ανάρτηση περιγράφει πώς μπορείτε να συνδυάσετε Amazon Kinesis, Κόλλα AWS, να Amazon Sage Maker για την κατασκευή μιας λύσης μηχανικής και συμπερασμάτων χαρακτηριστικών σχεδόν σε πραγματικό χρόνο για προγνωστική συντήρηση.

Χρησιμοποιήστε επισκόπηση περίπτωσης

Εστιάζουμε σε μια περίπτωση χρήσης προγνωστικής συντήρησης όπου οι αισθητήρες που αναπτύσσονται στο πεδίο (όπως βιομηχανικός εξοπλισμός ή συσκευές δικτύου), πρέπει να αντικατασταθούν ή να επιδιορθωθούν πριν γίνουν ελαττωματικά και προκαλέσουν διακοπές λειτουργίας. Ο χρόνος διακοπής λειτουργίας μπορεί να είναι ακριβός για τις επιχειρήσεις και μπορεί να οδηγήσει σε κακή εμπειρία πελατών. Η προγνωστική συντήρηση που υποστηρίζεται από ένα μοντέλο ML μπορεί επίσης να βοηθήσει στην αύξηση των τακτικών κύκλων συντήρησης βάσει χρονοδιαγράμματος, ενημερώνοντας πότε ένα εξάρτημα μηχανής σε καλή κατάσταση δεν πρέπει να αντικαθίσταται, αποφεύγοντας έτσι το περιττό κόστος.

Σε αυτήν την ανάρτηση, εστιάζουμε στην εφαρμογή μηχανικής εκμάθησης σε ένα συνθετικό σύνολο δεδομένων που περιέχει αστοχίες μηχανής λόγω χαρακτηριστικών όπως η θερμοκρασία αέρα, η θερμοκρασία διεργασίας, η ταχύτητα περιστροφής, η ροπή και η φθορά του εργαλείου. Το σύνολο δεδομένων που χρησιμοποιείται προέρχεται από το Αποθετήριο δεδομένων UCI.

Η αστοχία μηχανής αποτελείται από πέντε ανεξάρτητους τρόπους αστοχίας:

  • Βλάβη φθοράς εργαλείου (TWF)
  • Βλάβη διάχυσης θερμότητας (HDF)
  • Διακοπή ρεύματος (PWF)
  • Αποτυχία υπερέντασης (OSF)
  • Τυχαία αποτυχία (RNF)

Η ετικέτα αποτυχίας μηχανήματος υποδεικνύει εάν το μηχάνημα απέτυχε για ένα συγκεκριμένο σημείο δεδομένων, εάν οποιαδήποτε από τις προηγούμενες λειτουργίες αστοχίας είναι αληθής. Εάν τουλάχιστον ένας από τους τρόπους αστοχίας είναι αληθής, η διαδικασία αποτυγχάνει και η ετικέτα αστοχίας του μηχανήματος ορίζεται σε 1. Ο στόχος για το μοντέλο ML είναι να εντοπίσει σωστά τις αστοχίες του μηχανήματος, έτσι ώστε να μπορεί να ξεκινήσει μια μεταγενέστερη ενέργεια πρόβλεψης συντήρησης.

Επισκόπηση λύσεων

Για την περίπτωση χρήσης πρόβλεψης συντήρησης, υποθέτουμε ότι οι αισθητήρες της συσκευής μεταδίδουν διάφορες μετρήσεις και μετρήσεις σχετικά με εξαρτήματα μηχανής. Στη συνέχεια, η λύση μας παίρνει ένα κομμάτι δεδομένων ροής κάθε φορά (μικρο-παρτίδα) και εκτελεί επεξεργασία και μηχανική χαρακτηριστικών για τη δημιουργία λειτουργιών. Τα χαρακτηριστικά που δημιουργούνται χρησιμοποιούνται στη συνέχεια για τη δημιουργία συμπερασμάτων από ένα εκπαιδευμένο και αναπτυγμένο μοντέλο ML σε σχεδόν πραγματικό χρόνο. Τα συμπεράσματα που παράγονται μπορούν να υποστούν περαιτέρω επεξεργασία και να καταναλωθούν από μεταγενέστερες εφαρμογές, για να ληφθούν κατάλληλες ενέργειες και να ξεκινήσει η δραστηριότητα συντήρησης.

Το παρακάτω διάγραμμα δείχνει την αρχιτεκτονική της συνολικής μας λύσης.

Η λύση αποτελείται γενικά από τις ακόλουθες ενότητες, οι οποίες εξηγούνται λεπτομερώς αργότερα σε αυτήν την ανάρτηση:

  • Πηγή και απορρόφηση δεδομένων ροής - Χρησιμοποιούμε Ροές δεδομένων Amazon Kinesis για τη συλλογή δεδομένων ροής από τους αισθητήρες πεδίου σε κλίμακα και τη διάθεση τους για περαιτέρω επεξεργασία.
  • Μηχανική χαρακτηριστικών σχεδόν σε πραγματικό χρόνο – Χρησιμοποιούμε εργασίες ροής AWS Glue για να διαβάσουμε δεδομένα από μια ροή δεδομένων Kinesis και να εκτελέσουμε επεξεργασία δεδομένων και μηχανική λειτουργιών, πριν αποθηκεύσουμε τις προκύπτουσες δυνατότητες στο Απλή υπηρεσία αποθήκευσης Amazon (Amazon S3). Το Amazon S3 παρέχει μια αξιόπιστη και οικονομικά αποδοτική επιλογή αποθήκευσης μεγάλου όγκου δεδομένων.
  • Μοντέλο εκπαίδευσης και ανάπτυξης – Χρησιμοποιούμε το σύνολο δεδομένων προγνωστικής συντήρησης AI4I από το UCI Data Repository για να εκπαιδεύσουμε ένα μοντέλο ML που βασίζεται στον αλγόριθμο XGBoost χρησιμοποιώντας το SageMaker. Στη συνέχεια, αναπτύσσουμε το εκπαιδευμένο μοντέλο σε ένα ασύγχρονο τελικό σημείο συμπερασμάτων SageMaker.
  • Συμπεράσματα ML σχεδόν σε πραγματικό χρόνο – Αφού οι δυνατότητες είναι διαθέσιμες στο Amazon S3, πρέπει να δημιουργήσουμε συμπεράσματα από το αναπτυγμένο μοντέλο σε σχεδόν πραγματικό χρόνο. Τα ασύγχρονα τελικά σημεία συμπερασμάτων SageMaker είναι κατάλληλα για αυτήν την απαίτηση, επειδή υποστηρίζουν μεγαλύτερα μεγέθη ωφέλιμου φορτίου (έως 1 GB) και μπορούν να δημιουργήσουν συμπεράσματα μέσα σε λίγα λεπτά (έως 15 λεπτά το πολύ). Χρησιμοποιούμε ειδοποιήσεις συμβάντων S3 για την εκτέλεση ενός AWS Lambda λειτουργία για την επίκληση ενός ασύγχρονου τελικού σημείου συμπερασμάτων SageMaker. Τα ασύγχρονα τελικά σημεία συμπερασμάτων SageMaker δέχονται θέσεις S3 ως είσοδο, δημιουργούν συμπεράσματα από το αναπτυγμένο μοντέλο και γράφουν αυτά τα συμπεράσματα πίσω στο Amazon S3 σε σχεδόν πραγματικό χρόνο.

Ο πηγαίος κώδικας για αυτήν τη λύση βρίσκεται στο GitHub. Η λύση έχει δοκιμαστεί και θα πρέπει να εκτελεστεί στο us-east-1.

Χρησιμοποιούμε ένα AWS CloudFormation πρότυπο, που αναπτύσσεται με χρήση Μοντέλο εφαρμογής χωρίς διακομιστή AWS (AWS SAM) και φορητούς υπολογιστές SageMaker για την ανάπτυξη της λύσης.

Προϋποθέσεις

Για να ξεκινήσετε, ως προαπαιτούμενο, πρέπει να έχετε το SAM CLI, Python 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

ML-9132 git clone repo

  • Εκτελέστε την ακόλουθη εντολή για να αντιγράψετε το σενάριο εργασίας 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 που δημιουργήσατε νωρίτερα για τον κάδο δέσμης ενεργειών AWS Glue S3 (παράμετρος 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 Notebook Δημιουργήθηκε
  • Στην κονσόλα 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 λειτουργεί ως διοχέτευση για τη συλλογή και την απορρόφηση ροών δεδομένων.

Χρησιμοποιούμε το Γεννήτρια δεδομένων Amazon Kinesis (KDG) αργότερα σε αυτήν την ανάρτηση για τη δημιουργία και αποστολή δεδομένων σε μια ροή δεδομένων Kinesis, προσομοιώνοντας δεδομένα που παράγονται από αισθητήρες. Τα δεδομένα από τη ροή δεδομένων αισθητήρα-ροή δεδομένων απορροφώνται και υποβάλλονται σε επεξεργασία χρησιμοποιώντας μια εργασία ροής AWS Glue, την οποία θα συζητήσουμε στη συνέχεια.

Μηχανική δυνατοτήτων σχεδόν σε πραγματικό χρόνο

Εργασίες ροής AWS Glue παρέχει έναν βολικό τρόπο επεξεργασίας δεδομένων ροής σε κλίμακα, χωρίς την ανάγκη διαχείρισης του υπολογιστικού περιβάλλοντος. Το AWS Glue σάς επιτρέπει να εκτελείτε λειτουργίες εξαγωγής, μετασχηματισμού και φόρτωσης (ETL) σε ροή δεδομένων χρησιμοποιώντας εργασίες που εκτελούνται συνεχώς. Το AWS Glue streaming ETL είναι χτισμένο στη μηχανή δομημένης ροής Apache Spark και μπορεί να απορροφήσει ροές από Kinesis, Apache Kafka και Amazon Managed Streaming για το Apache Kafka (Amazon MSK).

Η εργασία ροής ETL μπορεί να χρησιμοποιεί τόσο ενσωματωμένους μετασχηματισμούς AWS Glue όσο και μετασχηματισμούς που είναι εγγενείς στο Apache Spark Structured Streaming. Μπορείτε επίσης να χρησιμοποιήσετε το Spark ML και MLLib βιβλιοθήκες σε AWS Εργασίες κόλλας για ευκολότερη επεξεργασία χαρακτηριστικών χρησιμοποιώντας άμεσα διαθέσιμες βοηθητικές βιβλιοθήκες.

Εάν το σχήμα της πηγής δεδομένων ροής είναι προκαθορισμένο, μπορείτε να το καθορίσετε σε έναν πίνακα καταλόγου δεδομένων AWS. Εάν ο ορισμός του σχήματος δεν μπορεί να προσδιοριστεί εκ των προτέρων, μπορείτε να ενεργοποιήσετε τον εντοπισμό σχήματος στην εργασία ροής ETL. Στη συνέχεια, η εργασία προσδιορίζει αυτόματα το σχήμα από τα εισερχόμενα δεδομένα. Επιπλέον, μπορείτε να χρησιμοποιήσετε το Μητρώο σχήματος κόλλας AWS για να επιτρέψει την κεντρική ανακάλυψη, τον έλεγχο και την εξέλιξη των σχημάτων ροής δεδομένων. Μπορείτε να ενσωματώσετε περαιτέρω το Μητρώο Σχημάτων με τον Κατάλογο Δεδομένων για να χρησιμοποιήσετε προαιρετικά σχήματα που είναι αποθηκευμένα στο Μητρώο Σχημάτων κατά τη δημιουργία ή την ενημέρωση πινάκων ή διαμερισμάτων AWS Glue στον Κατάλογο Δεδομένων.

Για αυτήν την ανάρτηση, δημιουργούμε έναν πίνακα 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. 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 εκτελεί τους καθορισμένους μετασχηματισμούς και χωρίζει τα δεδομένα στο 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, εισάγουμε πρώτα το σύνολο δεδομένων Predictive Maintenance 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 GB), ενδέχεται να απαιτούν μεγαλύτερους χρόνους επεξεργασίας (έως 15 λεπτά) και έχουν απαιτήσεις καθυστέρησης σχεδόν σε πραγματικό χρόνο. Το ασύγχρονο συμπέρασμα σάς δίνει επίσης τη δυνατότητα να εξοικονομήσετε κόστος με την αυτόματη κλιμάκωση του αριθμού παρουσιών στο μηδέν όταν δεν υπάρχουν αιτήματα για επεξεργασία, επομένως πληρώνετε μόνο όταν το τελικό σημείο επεξεργάζεται αιτήματα.

Μπορείτε να δημιουργήσετε ένα ασύγχρονο τελικό σημείο συμπερασμάτων SageMaker παρόμοιο με το πώς δημιουργείτε ένα τελικό σημείο συμπερασμάτων σε πραγματικό χρόνο και επιπλέον να καθορίσετε το AsyncInferenceConfig αντικείμενο, κατά τη δημιουργία της διαμόρφωσης τελικού σημείου με το πεδίο EndpointConfig στο CreateEndpointConfig API. Το παρακάτω διάγραμμα δείχνει τη ροή εργασίας εξαγωγής συμπερασμάτων και τον τρόπο με τον οποίο ένα ασύγχρονο τελικό σημείο συμπερασμάτων δημιουργεί ένα συμπέρασμα.

ML-9132 SageMaker Asych Arch

Για να καλέσετε το ασύγχρονο τελικό σημείο συμπερασμάτων, το ωφέλιμο φορτίο αιτήματος θα πρέπει να αποθηκευτεί στο Amazon S3 και η αναφορά σε αυτό το ωφέλιμο φορτίο πρέπει να παρέχεται ως μέρος του αιτήματος InvokeEndpointAsync. Μετά την κλήση, το SageMaker θέτει σε ουρά το αίτημα για επεξεργασία και επιστρέφει ένα αναγνωριστικό και μια θέση εξόδου ως απάντηση. Μετά την επεξεργασία, το SageMaker τοποθετεί το αποτέλεσμα στη θέση Amazon S3. Μπορείτε προαιρετικά να επιλέξετε να λαμβάνετε ειδοποιήσεις επιτυχίας ή σφάλματος με Υπηρεσία απλών ειδοποιήσεων Amazon (Amazon 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 ειδοποίηση κάδου συμβάντων config config

  • Στην κονσόλα AWS Glue, ανοίξτε την εργασία GlueStreaming-Kinesis-S3.
  • Επιλέξτε Εκτελέστε δουλειά.

Εργασία ML-9132 Run Glue

Στη συνέχεια χρησιμοποιούμε το 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) ενεργοποιείται, το οποίο καλεί ένα ασύγχρονο τελικό σημείο συμπερασμάτων SageMaker στέλνοντας ένα αίτημα επίκλησης για να ληφθούν συμπεράσματα από το αναπτυσσόμενο μοντέλο ML μας. Το ασύγχρονο τελικό σημείο συμπερασμάτων θέτει στην ουρά το αίτημα για ασύγχρονη επίκληση. Όταν ολοκληρωθεί η επεξεργασία, το SageMaker αποθηκεύει τα αποτελέσματα συμπερασμάτων στη θέση Amazon S3 (S3OutputPath) που καθορίστηκε κατά τη διαμόρφωση τελικού σημείου ασύγχρονης εξαγωγής συμπερασμάτων.

Για την περίπτωση χρήσης μας, τα αποτελέσματα συμπερασμάτων υποδεικνύουν εάν ένα εξάρτημα μηχανής είναι πιθανό να αποτύχει ή όχι, με βάση τις μετρήσεις του αισθητήρα.

ML-9132 Συμπεράσματα μοντέλου

Το SageMaker στέλνει επίσης μια ειδοποίηση επιτυχίας ή σφάλματος με το Amazon SNS. Για παράδειγμα, εάν ρυθμίσετε ένα συνδρομή μέσω email για τα θέματα επιτυχίας και σφάλματος SNS (που καθορίζονται στη διαμόρφωση ασύγχρονου σημείου συμπερασμάτων SageMaker), μπορεί να αποστέλλεται ένα μήνυμα ηλεκτρονικού ταχυδρομείου κάθε φορά που υποβάλλεται σε επεξεργασία ένα αίτημα συμπερασμάτων. Το ακόλουθο στιγμιότυπο οθόνης δείχνει ένα δείγμα email από το θέμα επιτυχίας του SNS.

ML-9132 SNS email συνδρομητής

Για εφαρμογές πραγματικού κόσμου, μπορείτε να ενσωματώσετε ειδοποιήσεις SNS με άλλες υπηρεσίες, όπως π.χ Υπηρεσία απλής ουράς Amazon (Amazon SQS) και Lambda για πρόσθετη μετεπεξεργασία των δημιουργούμενων συμπερασμάτων ή ενσωμάτωση με άλλες μεταγενέστερες εφαρμογές, με βάση τις απαιτήσεις σας. Για παράδειγμα, για την περίπτωση χρήσης πρόβλεψης συντήρησης, μπορείτε να καλέσετε μια συνάρτηση Lambda που βασίζεται σε μια ειδοποίηση SNS για να διαβάσετε το συμπέρασμα που δημιουργήθηκε από το Amazon S3, να το επεξεργαστείτε περαιτέρω (όπως συγκέντρωση ή φιλτράρισμα) και να ξεκινήσετε ροές εργασιών, όπως αποστολή εντολών εργασίας για επισκευή εξοπλισμού σε τεχνικούς.

εκκαθάριση

Όταν ολοκληρώσετε τη δοκιμή της στοίβας, διαγράψτε τους πόρους (ειδικά τη ροή δεδομένων Kinesis, την εργασία ροής Glue και τα θέματα SNS) για να αποφύγετε απροσδόκητες χρεώσεις.

Εκτελέστε τον παρακάτω κώδικα για να διαγράψετε τη στοίβα σας:

sam delete nrt-streaming-inference

Διαγράψτε επίσης τους πόρους, όπως τα τελικά σημεία του SageMaker, ακολουθώντας την ενότητα καθαρισμού στο σημειωματάριο ModelTraining-Evaluation-and-Deployment.

Συμπέρασμα

Σε αυτήν την ανάρτηση, χρησιμοποιήσαμε μια περίπτωση χρήσης πρόβλεψης συντήρησης για να δείξουμε πώς να χρησιμοποιείτε διάφορες υπηρεσίες όπως το Kinesis, το AWS Glue και το SageMaker για την κατασκευή ενός αγωγού συμπερασμάτων σχεδόν σε πραγματικό χρόνο. Σας ενθαρρύνουμε να δοκιμάσετε αυτήν τη λύση και πείτε μας τη γνώμη σας.

Εάν έχετε οποιεσδήποτε ερωτήσεις, μοιραστείτε τις στα σχόλια.


Σχετικά με τους συγγραφείς

Δημιουργήστε μια προγνωστική λύση συντήρησης με το Amazon Kinesis, το AWS Glue και το Amazon SageMaker PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται. Rahul Sharma είναι αρχιτέκτονας λύσεων στο 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