Μειώστε το κόστος και τον χρόνο ανάπτυξης με το Amazon SageMaker Pipelines τοπική λειτουργία PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Μειώστε το κόστος και τον χρόνο ανάπτυξης με την τοπική λειτουργία Amazon SageMaker Pipelines

Η δημιουργία ισχυρών και επαναχρησιμοποιήσιμων αγωγών μηχανικής μάθησης (ML) μπορεί να είναι μια πολύπλοκη και χρονοβόρα διαδικασία. Οι προγραμματιστές συνήθως δοκιμάζουν τα σενάρια επεξεργασίας και εκπαίδευσης τοπικά, αλλά οι ίδιοι οι αγωγοί δοκιμάζονται συνήθως στο cloud. Η δημιουργία και η λειτουργία ενός πλήρους αγωγού κατά τη διάρκεια του πειραματισμού προσθέτει ανεπιθύμητα γενικά έξοδα και κόστος στον κύκλο ζωής της ανάπτυξης. Σε αυτήν την ανάρτηση, περιγράφουμε λεπτομερώς πώς μπορείτε να χρησιμοποιήσετε Τοπική λειτουργία Amazon SageMaker Pipelines να εκτελούνται οι αγωγοί ML τοπικά για να μειωθεί τόσο η ανάπτυξη αγωγών όσο και ο χρόνος εκτέλεσης με ταυτόχρονη μείωση του κόστους. Αφού ο αγωγός έχει δοκιμαστεί πλήρως τοπικά, μπορείτε εύκολα να τον εκτελέσετε ξανά Amazon Sage Maker διαχειριζόμενους πόρους με λίγες μόνο γραμμές αλλαγών κώδικα.

Επισκόπηση του κύκλου ζωής ML

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

  1. Καθαρισμός και προετοιμασία δεδομένων (μηχανική χαρακτηριστικών)
  2. Εκπαίδευση και συντονισμός μοντέλων
  3. Αξιολόγηση μοντέλου
  4. Ανάπτυξη μοντέλου (ή μετασχηματισμός παρτίδας)

Στο βήμα προετοιμασίας δεδομένων, τα δεδομένα φορτώνονται, υποβάλλονται σε μασάζ και μετασχηματίζονται στον τύπο εισόδων ή χαρακτηριστικών που αναμένει το μοντέλο ML. Η σύνταξη των σεναρίων για τη μετατροπή των δεδομένων είναι συνήθως μια επαναληπτική διαδικασία, όπου οι γρήγοροι βρόχοι ανάδρασης είναι σημαντικοί για την επιτάχυνση της ανάπτυξης. Συνήθως δεν είναι απαραίτητο να χρησιμοποιήσετε το πλήρες σύνολο δεδομένων κατά τη δοκιμή σεναρίων μηχανικής λειτουργιών, γι' αυτό μπορείτε να χρησιμοποιήσετε το λειτουργία τοπικής λειτουργίας του SageMaker Processing. Αυτό σας επιτρέπει να εκτελείτε τοπικά και να ενημερώνετε τον κώδικα επαναληπτικά, χρησιμοποιώντας ένα μικρότερο σύνολο δεδομένων. Όταν ο τελικός κώδικας είναι έτοιμος, υποβάλλεται στην εργασία απομακρυσμένης επεξεργασίας, η οποία χρησιμοποιεί το πλήρες σύνολο δεδομένων και εκτελείται σε διαχειριζόμενες παρουσίες του SageMaker.

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

Καθώς η ωριμότητα ML ενός οργανισμού αυξάνεται, μπορείτε να χρησιμοποιήσετε Αγωγοί Amazon SageMaker για τη δημιουργία αγωγών ML που συνδυάζουν αυτά τα βήματα, δημιουργώντας πιο σύνθετες ροές εργασίας ML που επεξεργάζονται, εκπαιδεύουν και αξιολογούν μοντέλα ML. Το SageMaker Pipelines είναι μια πλήρως διαχειριζόμενη υπηρεσία για την αυτοματοποίηση των διαφορετικών βημάτων της ροής εργασίας ML, συμπεριλαμβανομένης της φόρτωσης δεδομένων, του μετασχηματισμού δεδομένων, της εκπαίδευσης και ρύθμισης μοντέλων και της ανάπτυξης μοντέλου. Μέχρι πρόσφατα, μπορούσατε να αναπτύξετε και να δοκιμάσετε τα σενάρια σας τοπικά, αλλά έπρεπε να δοκιμάσετε τους αγωγούς ML στο cloud. Αυτό έκανε την επανάληψη σχετικά με τη ροή και τη μορφή των αγωγών ML μια αργή και δαπανηρή διαδικασία. Τώρα, με την προστιθέμενη δυνατότητα τοπικής λειτουργίας του SageMaker Pipelines, μπορείτε να επαναλάβετε και να δοκιμάσετε τις διοχετεύσεις ML σας παρόμοια με τον τρόπο που δοκιμάζετε και επαναλαμβάνετε τα σενάρια επεξεργασίας και εκπαίδευσης. Μπορείτε να εκτελέσετε και να δοκιμάσετε τις σωληνώσεις σας στον τοπικό σας υπολογιστή, χρησιμοποιώντας ένα μικρό υποσύνολο δεδομένων για να επικυρώσετε τη σύνταξη και τις λειτουργίες του αγωγού.

Αγωγοί SageMaker

Το SageMaker Pipelines παρέχει έναν πλήρως αυτοματοποιημένο τρόπο εκτέλεσης απλών ή πολύπλοκων ροών εργασίας ML. Με το SageMaker Pipelines, μπορείτε να δημιουργήσετε ροές εργασίας ML με ένα εύχρηστο Python SDK και, στη συνέχεια, να οπτικοποιήσετε και να διαχειριστείτε τη ροή εργασίας σας χρησιμοποιώντας Στούντιο Amazon SageMaker. Οι ομάδες επιστήμης δεδομένων σας μπορούν να είναι πιο αποτελεσματικές και να κλιμακώνονται ταχύτερα, αποθηκεύοντας και επαναχρησιμοποιώντας τα βήματα ροής εργασίας που δημιουργείτε στο SageMaker Pipelines. Μπορείτε επίσης να χρησιμοποιήσετε προκατασκευασμένα πρότυπα που αυτοματοποιούν την υποδομή και τη δημιουργία αποθετηρίου για τη δημιουργία, τη δοκιμή, την εγγραφή και την ανάπτυξη μοντέλων στο περιβάλλον ML σας. Αυτά τα πρότυπα είναι αυτόματα διαθέσιμα στον οργανισμό σας και παρέχονται με χρήση Κατάλογος υπηρεσιών AWS προϊόντα.

Το SageMaker Pipelines φέρνει πρακτικές συνεχούς ενοποίησης και συνεχούς ανάπτυξης (CI/CD) στο ML, όπως η διατήρηση της ισοτιμίας μεταξύ των περιβαλλόντων ανάπτυξης και παραγωγής, ο έλεγχος έκδοσης, οι δοκιμές κατ' απαίτηση και ο αυτοματισμός από άκρο σε άκρο, που σας βοηθά να κλιμακώσετε την ML σε όλη τη διάρκεια οργάνωση. Οι επαγγελματίες του DevOps γνωρίζουν ότι ορισμένα από τα κύρια οφέλη της χρήσης τεχνικών CI/CD περιλαμβάνουν αύξηση της παραγωγικότητας μέσω επαναχρησιμοποιήσιμων στοιχείων και αύξηση της ποιότητας μέσω αυτοματοποιημένων δοκιμών, γεγονός που οδηγεί σε ταχύτερη απόδοση επένδυσης (ROI) για τους επιχειρηματικούς σας στόχους. Αυτά τα πλεονεκτήματα είναι πλέον διαθέσιμα στους επαγγελματίες MLOps χρησιμοποιώντας το SageMaker Pipelines για την αυτοματοποίηση της εκπαίδευσης, της δοκιμής και της ανάπτυξης μοντέλων ML. Με την τοπική λειτουργία, μπορείτε πλέον να επαναλαμβάνετε πολύ πιο γρήγορα κατά την ανάπτυξη σεναρίων για χρήση σε μια διοχέτευση. Λάβετε υπόψη ότι οι τοπικές παρουσίες διοχέτευσης δεν μπορούν να προβληθούν ή να εκτελεστούν εντός του Studio IDE. Ωστόσο, πρόσθετες επιλογές προβολής για τοπικούς αγωγούς θα είναι διαθέσιμες σύντομα.

Το SageMaker SDK παρέχει έναν γενικό σκοπό τοπική ρύθμιση παραμέτρων που επιτρέπει στους προγραμματιστές να εκτελούν και να δοκιμάσουν υποστηριζόμενους επεξεργαστές και εκτιμητές στο τοπικό τους περιβάλλον. Μπορείτε να χρησιμοποιήσετε εκπαίδευση τοπικής λειτουργίας με πολλαπλές εικόνες πλαισίου που υποστηρίζονται από AWS (TensorFlow, MXNet, Chainer, PyTorch και Scikit-Learn), καθώς και εικόνες που παρέχετε μόνοι σας.

Το SageMaker Pipelines, το οποίο δημιουργεί ένα Directed Acyclic Graph (DAG) ενορχηστρωμένων βημάτων ροής εργασίας, υποστηρίζει πολλές δραστηριότητες που αποτελούν μέρος του κύκλου ζωής του ML. Στην τοπική λειτουργία, υποστηρίζονται τα ακόλουθα βήματα:

  • Επεξεργασία βημάτων εργασίας – Μια απλοποιημένη, διαχειριζόμενη εμπειρία στο SageMaker για την εκτέλεση φόρτου εργασίας επεξεργασίας δεδομένων, όπως μηχανική χαρακτηριστικών, επικύρωση δεδομένων, αξιολόγηση μοντέλου και ερμηνεία μοντέλου
  • Βήματα εργασίας εκπαίδευσης – Μια επαναληπτική διαδικασία που διδάσκει σε ένα μοντέλο να κάνει προβλέψεις παρουσιάζοντας παραδείγματα από ένα σύνολο δεδομένων εκπαίδευσης
  • Εργασίες συντονισμού υπερπαραμέτρων – Ένας αυτοματοποιημένος τρόπος αξιολόγησης και επιλογής των υπερπαραμέτρων που παράγουν το πιο ακριβές μοντέλο
  • Βήματα τρεξίματος υπό όρους – Ένα βήμα που παρέχει μια υπό όρους εκτέλεση διακλαδώσεων σε έναν αγωγό
  • Μοντέλο βήμα – Χρησιμοποιώντας ορίσματα CreateModel, αυτό το βήμα μπορεί να δημιουργήσει ένα μοντέλο για χρήση σε βήματα μετασχηματισμού ή μεταγενέστερη ανάπτυξη ως τελικό σημείο
  • Μεταμορφώστε τα βήματα της εργασίας – Μια εργασία μετασχηματισμού παρτίδας που δημιουργεί προβλέψεις από μεγάλα σύνολα δεδομένων και εκτελεί συμπεράσματα όταν δεν απαιτείται μόνιμο τελικό σημείο
  • Βήματα αποτυχίας – Ένα βήμα που σταματά μια εκτέλεση αγωγού και επισημαίνει την εκτέλεση ως αποτυχημένη

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

Η λύση μας δείχνει τα βασικά βήματα για τη δημιουργία και την εκτέλεση των αγωγών SageMaker σε τοπική λειτουργία, που σημαίνει τη χρήση τοπικών πόρων CPU, RAM και δίσκου για τη φόρτωση και εκτέλεση των βημάτων ροής εργασίας. Το τοπικό σας περιβάλλον θα μπορούσε να εκτελείται σε φορητό υπολογιστή, χρησιμοποιώντας δημοφιλή IDE όπως το VSCode ή το PyCharm ή θα μπορούσε να φιλοξενηθεί από το SageMaker χρησιμοποιώντας κλασικές παρουσίες φορητών υπολογιστών.

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

Για αυτό το δείγμα σημειωματάριου, χρησιμοποιούμε ένα τυπικό διαθέσιμο σύνολο δεδομένων, το Σύνολο δεδομένων UCI Machine Learning Abalone. Ο στόχος είναι να εκπαιδεύσουμε ένα μοντέλο ML ώστε να προσδιορίζει την ηλικία ενός σαλιγκαριού από φυσικές μετρήσεις. Στην ουσία, αυτό είναι ένα πρόβλημα παλινδρόμησης.

Όλος ο κώδικας που απαιτείται για την εκτέλεση αυτού του δείγματος notebook είναι διαθέσιμος στο GitHub στο amazon-sagemaker-παραδείγματα αποθήκη. Σε αυτό το δείγμα σημειωματάριου, κάθε βήμα ροής εργασίας σωλήνωσης δημιουργείται ανεξάρτητα και στη συνέχεια συνδέεται μεταξύ τους για τη δημιουργία του αγωγού. Δημιουργούμε τα παρακάτω βήματα:

  • Βήμα επεξεργασίας (μηχανική χαρακτηριστικών)
  • Βήμα εκπαίδευσης (μοντέλο εκπαίδευσης)
  • Βήμα επεξεργασίας (αξιολόγηση μοντέλου)
  • Βήμα συνθήκης (ακρίβεια μοντέλου)
  • Δημιουργία βήματος μοντέλου (μοντέλο)
  • Βήμα μετασχηματισμού (μετασχηματισμός παρτίδας)
  • Εγγραφή βήματος μοντέλου (πακέτο μοντέλου)
  • Βήμα αποτυχίας (η εκτέλεση απέτυχε)

Το παρακάτω διάγραμμα απεικονίζει τον αγωγό μας.

Μειώστε το κόστος και τον χρόνο ανάπτυξης με το Amazon SageMaker Pipelines τοπική λειτουργία PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

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

Για να ακολουθήσετε αυτήν την ανάρτηση, χρειάζεστε τα εξής:

Αφού δημιουργηθούν αυτές οι προϋποθέσεις, μπορείτε να εκτελέσετε το δείγμα σημειωματάριου όπως περιγράφεται στις ακόλουθες ενότητες.

Φτιάξτε τον αγωγό σας

Σε αυτό το δείγμα σημειωματάριου, χρησιμοποιούμε Λειτουργία σεναρίου SageMaker για τις περισσότερες από τις διεργασίες ML, πράγμα που σημαίνει ότι παρέχουμε τον πραγματικό κώδικα Python (σενάρια) για να εκτελέσουμε τη δραστηριότητα και να περάσουμε μια αναφορά σε αυτόν τον κώδικα. Η λειτουργία δέσμης ενεργειών παρέχει μεγάλη ευελιξία στον έλεγχο της συμπεριφοράς εντός της επεξεργασίας του SageMaker, επιτρέποντάς σας να προσαρμόσετε τον κώδικά σας, ενώ εξακολουθείτε να εκμεταλλεύεστε τα προκατασκευασμένα κοντέινερ του SageMaker, όπως το XGBoost ή το Scikit-Learn. Ο προσαρμοσμένος κώδικας γράφεται σε ένα αρχείο σεναρίου Python χρησιμοποιώντας κελιά που ξεκινούν με τη μαγική εντολή %%writefile, όπως τα ακόλουθα:

%%writefile code/evaluation.py

Ο κύριος ενεργοποιητής της τοπικής λειτουργίας είναι το LocalPipelineSession αντικείμενο, το οποίο δημιουργείται από το Python SDK. Τα ακόλουθα τμήματα κώδικα δείχνουν πώς να δημιουργήσετε μια διοχέτευση SageMaker σε τοπική λειτουργία. Αν και μπορείτε να διαμορφώσετε μια τοπική διαδρομή δεδομένων για πολλά από τα βήματα της τοπικής διοχέτευσης, το Amazon S3 είναι η προεπιλεγμένη τοποθεσία για την αποθήκευση της εξόδου δεδομένων από τον μετασχηματισμό. Το νέο LocalPipelineSession Το αντικείμενο μεταβιβάζεται στο Python SDK σε πολλές από τις κλήσεις API ροής εργασίας του SageMaker που περιγράφονται σε αυτήν την ανάρτηση. Σημειώστε ότι μπορείτε να χρησιμοποιήσετε το local_pipeline_session μεταβλητή για να ανακτήσετε αναφορές στον προεπιλεγμένο κάδο S3 και στο τρέχον όνομα περιοχής.

from sagemaker.workflow.pipeline_context import LocalPipelineSession

# Create a `LocalPipelineSession` object so that each 
# pipeline step will run locally
# To run this pipeline in the cloud, you must change 
# the `LocalPipelineSession()` to `PipelineSession()`
local_pipeline_session = LocalPipelineSession()
region = local_pipeline_session.boto_region_name

default_bucket = local_pipeline_session.default_bucket()
prefix = "sagemaker-pipelines-local-mode-example"

Πριν δημιουργήσουμε τα επιμέρους βήματα του αγωγού, ορίζουμε ορισμένες παραμέτρους που χρησιμοποιούνται από τον αγωγό. Ορισμένες από αυτές τις παραμέτρους είναι κυριολεκτικά συμβολοσειρών, ενώ άλλες δημιουργούνται ως ειδικοί απαριθμημένοι τύποι που παρέχονται από το SDK. Η απαριθμημένη πληκτρολόγηση διασφαλίζει ότι παρέχονται έγκυρες ρυθμίσεις στον αγωγό, όπως αυτή, η οποία μεταβιβάζεται στο ConditionLessThanOrEqualTo βήμα πιο κάτω:

mse_threshold = ParameterFloat(name="MseThreshold", default_value=7.0)

Για να δημιουργήσουμε ένα βήμα επεξεργασίας δεδομένων, το οποίο χρησιμοποιείται εδώ για την εκτέλεση μηχανικής λειτουργιών, χρησιμοποιούμε το SKLearnProcessor να φορτώσει και να μετασχηματίσει το σύνολο δεδομένων. Περνάμε το local_pipeline_session μεταβλητή στον κατασκευαστή κλάσης, η οποία δίνει εντολή στο βήμα ροής εργασίας να εκτελεστεί σε τοπική λειτουργία:

from sagemaker.sklearn.processing import SKLearnProcessor

framework_version = "1.0-1"

sklearn_processor = SKLearnProcessor(
    framework_version=framework_version,
    instance_type=instance_type,
    instance_count=processing_instance_count,
    base_job_name="sklearn-abalone-process",
    role=role,
    sagemaker_session=local_pipeline_session,
)

Στη συνέχεια, δημιουργούμε το πρώτο μας πραγματικό βήμα αγωγού, α ProcessingStep αντικείμενο, όπως εισάγεται από το SageMaker SDK. Τα ορίσματα του επεξεργαστή επιστρέφονται από μια κλήση στο SKLearnProcessor μέθοδο run(). Αυτό το βήμα ροής εργασίας συνδυάζεται με άλλα βήματα προς το τέλος του σημειωματάριου για να υποδείξει τη σειρά λειτουργίας εντός του αγωγού.

from sagemaker.processing import ProcessingInput, ProcessingOutput
from sagemaker.workflow.steps import ProcessingStep

processor_args = sklearn_processor.run(
    inputs=[
        ProcessingInput(source=input_data, destination="/opt/ml/processing/input"),
    ],
    outputs=[
        ProcessingOutput(output_name="train", source="/opt/ml/processing/train"),
        ProcessingOutput(output_name="validation", source="/opt/ml/processing/validation"),
        ProcessingOutput(output_name="test", source="/opt/ml/processing/test"),
    ],
    code="code/preprocessing.py",
)

step_process = ProcessingStep(name="AbaloneProcess", step_args=processor_args)

Στη συνέχεια, παρέχουμε κώδικα για τη δημιουργία ενός βήματος εκπαίδευσης, εγκαινιάζοντας πρώτα έναν τυπικό εκτιμητή χρησιμοποιώντας το SageMaker SDK. Περνάμε το ίδιο local_pipeline_session μεταβλητή στον εκτιμητή, που ονομάζεται xgb_train, ως το sagemaker_session διαφωνία. Επειδή θέλουμε να εκπαιδεύσουμε ένα μοντέλο XGBoost, πρέπει να δημιουργήσουμε ένα έγκυρο URI εικόνας καθορίζοντας τις ακόλουθες παραμέτρους, συμπεριλαμβανομένου του πλαισίου και πολλών παραμέτρων έκδοσης:

from sagemaker.estimator import Estimator
from sagemaker.inputs import TrainingInput

model_path = f"s3://{default_bucket}/{prefix}/model"
image_uri = sagemaker.image_uris.retrieve(
    framework="xgboost",
    region=region,
    version="1.5-1",
    py_version="py3",
    instance_type=instance_type,
)

xgb_train = Estimator(
    image_uri=image_uri,
    entry_point="code/abalone.py",
    instance_type=instance_type,
    instance_count=training_instance_count,
    output_path=model_path,
    role=role,
    sagemaker_session=local_pipeline_session,
)

Μπορούμε προαιρετικά να καλέσουμε πρόσθετες μεθόδους εκτιμητή, για παράδειγμα set_hyperparameters(), για να παρέχει ρυθμίσεις υπερπαραμέτρων για την εργασία εκπαίδευσης. Τώρα που έχουμε διαμορφώσει έναν εκτιμητή, είμαστε έτοιμοι να δημιουργήσουμε το πραγματικό βήμα εκπαίδευσης. Για άλλη μια φορά, εισάγουμε το TrainingStep τάξη από τη βιβλιοθήκη SageMaker SDK:

from sagemaker.workflow.steps import TrainingStep

step_train = TrainingStep(name="AbaloneTrain", step_args=train_args)

Στη συνέχεια, χτίζουμε ένα άλλο βήμα επεξεργασίας για την αξιολόγηση του μοντέλου. Αυτό γίνεται με τη δημιουργία ενός ScriptProcessor παράδειγμα και περνώντας το local_pipeline_session αντικείμενο ως παράμετρος:

from sagemaker.processing import ScriptProcessor

script_eval = ScriptProcessor(
    image_uri=image_uri,
    command=["python3"],
    instance_type=instance_type,
    instance_count=processing_instance_count,
    base_job_name="script-abalone-eval",
    role=role,
    sagemaker_session=local_pipeline_session,
)

Για να καταστεί δυνατή η ανάπτυξη του εκπαιδευμένου μοντέλου, είτε σε α τελικό σημείο SageMaker σε πραγματικό χρόνο ή σε έναν μετασχηματισμό παρτίδας, πρέπει να δημιουργήσουμε ένα Model αντιταχθείτε περνώντας τα τεχνουργήματα του μοντέλου, το κατάλληλο URI εικόνας και προαιρετικά τον προσαρμοσμένο κώδικα συμπερασμάτων μας. Μετά το περνάμε αυτό Model αντίρρηση σε α ModelStep, το οποίο προστίθεται στον τοπικό αγωγό. Δείτε τον παρακάτω κώδικα:

from sagemaker.model import Model

model = Model(
    image_uri=image_uri,
    model_data=step_train.properties.ModelArtifacts.S3ModelArtifacts,
    source_dir="code",
    entry_point="inference.py",
    role=role,
    sagemaker_session=local_pipeline_session,
)

from sagemaker.workflow.model_step import ModelStep

step_create_model = ModelStep(name="AbaloneCreateModel", 
    step_args=model.create(instance_type=instance_type)
)

Στη συνέχεια, δημιουργούμε ένα βήμα μετασχηματισμού παρτίδας όπου υποβάλλουμε ένα σύνολο διανυσμάτων χαρακτηριστικών και εκτελούμε συμπέρασμα. Πρώτα πρέπει να δημιουργήσουμε ένα Transformer αντικείμενο και περάστε το local_pipeline_session παράμετρο σε αυτό. Στη συνέχεια δημιουργούμε ένα TransformStep, περνώντας τα απαιτούμενα ορίσματα και προσθέστε αυτό στον ορισμό του αγωγού:

from sagemaker.transformer import Transformer

transformer = Transformer(
    model_name=step_create_model.properties.ModelName,
    instance_type=instance_type,
    instance_count=transform_instance_count,
    output_path=f"s3://{default_bucket}/{prefix}/transform",
    sagemaker_session=local_pipeline_session,
)

from sagemaker.workflow.steps import TransformStep

transform_args = transformer.transform(transform_data, content_type="text/csv")

step_transform = TransformStep(name="AbaloneTransform", step_args=transform_args)

Τέλος, θέλουμε να προσθέσουμε μια συνθήκη διακλάδωσης στη ροή εργασίας, έτσι ώστε να εκτελούμε μετασχηματισμό παρτίδας μόνο εάν τα αποτελέσματα της αξιολόγησης του μοντέλου πληρούν τα κριτήριά μας. Μπορούμε να το υποδείξουμε αυτό υπό όρους προσθέτοντας a ConditionStep με συγκεκριμένο τύπο κατάστασης, όπως ConditionLessThanOrEqualTo. Στη συνέχεια απαριθμούμε τα βήματα για τους δύο κλάδους, ορίζοντας ουσιαστικά τους κλάδους if/else ή true/false του αγωγού. Τα if_steps που παρέχονται στο ConditionStep (step_create_model, step_transform) εκτελούνται κάθε φορά που η συνθήκη αξιολογείται σε True.

from sagemaker.workflow.conditions import ConditionLessThanOrEqualTo
from sagemaker.workflow.condition_step import ConditionStep
from sagemaker.workflow.functions import JsonGet

cond_lte = ConditionLessThanOrEqualTo(
    left=JsonGet(
        step_name=step_eval.name,
        property_file=evaluation_report,
        json_path="regression_metrics.mse.value",),
    right=mse_threshold,
)

step_cond = ConditionStep(
    name="AbaloneMSECond",
    conditions=[cond_lte],
    if_steps=[step_create_model, step_transform],
    else_steps=[step_fail],
)

Το παρακάτω διάγραμμα απεικονίζει αυτόν τον κλάδο υπό όρους και τα σχετικά βήματα if/else. Εκτελείται μόνο ένας κλάδος, με βάση το αποτέλεσμα του βήματος αξιολόγησης του μοντέλου σε σύγκριση με το βήμα συνθήκης.

Μειώστε το κόστος και τον χρόνο ανάπτυξης με το Amazon SageMaker Pipelines τοπική λειτουργία PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

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

from sagemaker.workflow.pipeline import Pipeline

pipeline_name = f"LocalModelPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[
        input_data,
        mse_threshold,
    ],
    steps=[step_process, step_train, step_eval, step_cond],
    sagemaker_session=local_pipeline_session,
)

Για να εκτελέσετε τη διοχέτευση, πρέπει να καλέσετε δύο μεθόδους: pipeline.upsert(), το οποίο ανεβάζει τον αγωγό στην υποκείμενη υπηρεσία και pipeline.start(), το οποίο ξεκινά τη λειτουργία του αγωγού. Μπορείτε να χρησιμοποιήσετε διάφορες άλλες μεθόδους για να διερευνήσετε την κατάσταση εκτέλεσης, να απαριθμήσετε τα βήματα της διοχέτευσης και πολλά άλλα. Επειδή χρησιμοποιήσαμε την τοπική περίοδο λειτουργίας διοχέτευσης, όλα αυτά τα βήματα εκτελούνται τοπικά στον επεξεργαστή σας. Η έξοδος κυψέλης κάτω από τη μέθοδο έναρξης δείχνει την έξοδο από τη διοχέτευση:

pipeline.upsert(role_arn=role)
execution = pipeline.start()

Θα πρέπει να δείτε ένα μήνυμα στο κάτω μέρος της εξόδου κελιού παρόμοιο με το ακόλουθο:

Pipeline execution d8c3e172-089e-4e7a-ad6d-6d76caf987b7 SUCCEEDED

Επιστροφή στους διαχειριζόμενους πόρους

Αφού επιβεβαιώσουμε ότι ο αγωγός λειτουργεί χωρίς σφάλματα και είμαστε ικανοποιημένοι με τη ροή και τη μορφή του αγωγού, μπορούμε να δημιουργήσουμε ξανά τον αγωγό αλλά με διαχειριζόμενους πόρους του SageMaker και να τον εκτελέσουμε ξανά. Η μόνη αλλαγή που απαιτείται είναι να χρησιμοποιήσετε το PipelineSession αντικείμενο αντί για LocalPipelineSession:

από Sagemaker.workflow.pipeline_context εισαγωγή LocalPipelineSession
from sagemaker.workflow.pipeline_context import PipelineSession

local_pipeline_session = LocalPipelineSession()
pipeline_session = PipelineSession()

Αυτό ενημερώνει την υπηρεσία να εκτελεί κάθε βήμα που αναφέρεται σε αυτό το αντικείμενο περιόδου λειτουργίας σε διαχειριζόμενους πόρους του SageMaker. Δεδομένης της μικρής αλλαγής, παρουσιάζουμε μόνο τις απαιτούμενες αλλαγές κώδικα στο ακόλουθο κελί κώδικα, αλλά η ίδια αλλαγή θα πρέπει να εφαρμοστεί σε κάθε κελί χρησιμοποιώντας το local_pipeline_session αντικείμενο. Οι αλλαγές είναι, ωστόσο, πανομοιότυπες σε όλα τα κελιά επειδή αντικαθιστούμε μόνο το local_pipeline_session αντικείμενο με το pipeline_session αντικείμενο.

from sagemaker.sklearn.processing import SKLearnProcessor

framework_version = "1.0-1"

sklearn_processor = SKLearnProcessor(
    framework_version=framework_version,
    instance_type=instance_type,
    instance_count=processing_instance_count,
    base_job_name="sklearn-abalone-process",
    role=role,
    sagemaker_session=pipeline_session,  # non-local session
)

Αφού αντικατασταθεί παντού το αντικείμενο τοπικής περιόδου λειτουργίας, αναδημιουργούμε τη διοχέτευση και την εκτελούμε με διαχειριζόμενους πόρους του SageMaker:

from sagemaker.workflow.pipeline import Pipeline

pipeline_name = f"LocalModelPipeline"
pipeline = Pipeline(
    name=pipeline_name,
    parameters=[
        input_data,
        mse_threshold,
    ],
    steps=[step_process, step_train, step_eval, step_cond],
    sagemaker_session=pipeline_session, # non-local session
)

pipeline.upsert(role_arn=role)
execution = pipeline.start()

εκκαθάριση

Εάν θέλετε να διατηρήσετε τακτοποιημένο το περιβάλλον του Studio, μπορείτε να χρησιμοποιήσετε τις ακόλουθες μεθόδους για να διαγράψετε τη διοχέτευση του SageMaker και το μοντέλο. Ο πλήρης κωδικός βρίσκεται στο δείγμα σημειωματάριο.

# delete models 
sm_client = boto3.client("sagemaker")
model_prefix="AbaloneCreateModel"
delete_models(sm_client, model_prefix)

# delete managed pipeline
pipeline_to_delete = 'SM-Managed-Pipeline'
delete_sagemaker_pipeline(sm_client, pipeline_to_delete)

Συμπέρασμα

Μέχρι πρόσφατα, μπορούσατε να χρησιμοποιήσετε τη δυνατότητα τοπικής λειτουργίας του SageMaker Processing και του SageMaker Training για να επαναλάβετε τα σενάρια επεξεργασίας και εκπαίδευσης τοπικά, προτού τα εκτελέσετε σε όλα τα δεδομένα με διαχειριζόμενους πόρους του SageMaker. Με τη νέα δυνατότητα τοπικής λειτουργίας του SageMaker Pipelines, οι επαγγελματίες ML μπορούν πλέον να εφαρμόζουν την ίδια μέθοδο κατά την επανάληψη στις αγωγές ML τους, συνδυάζοντας τις διαφορετικές ροές εργασίας ML μεταξύ τους. Όταν ο αγωγός είναι έτοιμος για παραγωγή, η εκτέλεση του με διαχειριζόμενους πόρους του SageMaker απαιτεί λίγες μόνο γραμμές αλλαγών κώδικα. Αυτό μειώνει τον χρόνο λειτουργίας του αγωγού κατά την ανάπτυξη, οδηγώντας σε ταχύτερη ανάπτυξη αγωγών με ταχύτερους κύκλους ανάπτυξης, ενώ μειώνεται το κόστος των διαχειριζόμενων πόρων του SageMaker.

Για να μάθετε περισσότερα, επισκεφθείτε τη διεύθυνση Αγωγοί Amazon SageMaker or Χρησιμοποιήστε το SageMaker Pipelines για να εκτελέσετε τις εργασίες σας τοπικά.


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

Μειώστε το κόστος και τον χρόνο ανάπτυξης με το Amazon SageMaker Pipelines τοπική λειτουργία PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Παύλος Χάργκης έχει επικεντρώσει τις προσπάθειές του στη μηχανική μάθηση σε πολλές εταιρείες, συμπεριλαμβανομένων των AWS, Amazon και Hortonworks. Του αρέσει να δημιουργεί τεχνολογικές λύσεις και να διδάσκει στους ανθρώπους πώς να τις αξιοποιούν στο έπακρο. Πριν από τον ρόλο του στην AWS, ήταν επικεφαλής αρχιτέκτονας για τις Εξαγωγές και τις Επεκτάσεις της Amazon, βοηθώντας το amazon.com να βελτιώσει την εμπειρία για τους διεθνείς αγοραστές. Στον Paul αρέσει να βοηθά τους πελάτες να επεκτείνουν τις πρωτοβουλίες μηχανικής εκμάθησης για την επίλυση προβλημάτων του πραγματικού κόσμου.

Μειώστε το κόστος και τον χρόνο ανάπτυξης με το Amazon SageMaker Pipelines τοπική λειτουργία PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Νικλάς Παλμ είναι ένας αρχιτέκτονας λύσεων στο AWS στη Στοκχόλμη της Σουηδίας, όπου βοηθά τους πελάτες σε όλες τις σκανδιναβικές χώρες να πετύχουν στο cloud. Είναι ιδιαίτερα παθιασμένος με τις τεχνολογίες χωρίς διακομιστές, μαζί με το IoT και τη μηχανική μάθηση. Εκτός της εργασίας, ο Niklas είναι ένας άπληστος σκιέρ cross-country και snowboarder, καθώς και ένας κύριος λέβητας αυγών.

Μειώστε το κόστος και τον χρόνο ανάπτυξης με το Amazon SageMaker Pipelines τοπική λειτουργία PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Kirit Thadaka είναι αρχιτέκτονας ML Solutions που εργάζεται στην ομάδα της SageMaker Service SA. Πριν από την ένταξή του στην AWS, ο Kirit εργάστηκε σε νεοσύστατες επιχειρήσεις τεχνητής νοημοσύνης σε πρώιμο στάδιο και ακολούθησε κάποιο διάστημα συμβουλευτικής σε διάφορους ρόλους στην έρευνα τεχνητής νοημοσύνης, τα MLOps και την τεχνική ηγεσία.

Σφραγίδα ώρας:

Περισσότερα από Μηχανική εκμάθηση AWS