Εκπαίδευση κλίμακας και συμπέρασμα χιλιάδων μοντέλων ML με το Amazon SageMaker | Υπηρεσίες Ιστού της Amazon

Εκπαίδευση κλίμακας και συμπέρασμα χιλιάδων μοντέλων ML με το Amazon SageMaker | Υπηρεσίες Ιστού της Amazon

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

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

Σε αυτήν την ανάρτηση, διερευνούμε πώς μπορείτε να χρησιμοποιήσετε τις λειτουργίες του SageMaker, συμπεριλαμβανομένων Επεξεργασία Amazon SageMaker, εργασίες εκπαίδευσης SageMaker και τερματικά σημεία πολλαπλών μοντέλων SageMaker (MME), για την εκπαίδευση και εξυπηρέτηση χιλιάδων μοντέλων με οικονομικά αποδοτικό τρόπο. Για να ξεκινήσετε με την περιγραφόμενη λύση, μπορείτε να ανατρέξετε στο συνοδευτικό σημειωματάριο στο GitHub.

Περίπτωση χρήσης: Πρόβλεψη ενέργειας

Για αυτήν την ανάρτηση, αναλαμβάνουμε το ρόλο μιας εταιρείας ISV που βοηθά τους πελάτες της να γίνουν πιο βιώσιμοι παρακολουθώντας την κατανάλωση ενέργειας και παρέχοντας προβλέψεις. Η εταιρεία μας έχει 1,000 πελάτες που θέλουν να κατανοήσουν καλύτερα τη χρήση ενέργειας και να λάβουν τεκμηριωμένες αποφάσεις σχετικά με τον τρόπο μείωσης των περιβαλλοντικών τους επιπτώσεων. Για να γίνει αυτό, χρησιμοποιούμε ένα συνθετικό σύνολο δεδομένων και εκπαιδεύουμε ένα μοντέλο ML με βάση Προφήτης για κάθε πελάτη να κάνει προβλέψεις κατανάλωσης ενέργειας. Με το SageMaker, μπορούμε να εκπαιδεύσουμε αποτελεσματικά και να εξυπηρετήσουμε αυτά τα 1,000 μοντέλα, παρέχοντας στους πελάτες μας ακριβείς και πρακτικές πληροφορίες σχετικά με τη χρήση της ενέργειας τους.

Υπάρχουν τρία χαρακτηριστικά στο σύνολο δεδομένων που δημιουργείται:

  • Κωδικός πελάτη – Αυτό είναι ένα ακέραιο αναγνωριστικό για κάθε πελάτη, που κυμαίνεται από 0–999.
  • timestamp – Αυτή είναι μια τιμή ημερομηνίας/ώρας που υποδεικνύει την ώρα κατά την οποία μετρήθηκε η κατανάλωση ενέργειας. Οι χρονικές σημάνσεις δημιουργούνται τυχαία μεταξύ των ημερομηνιών έναρξης και λήξης που καθορίζονται στον κώδικα.
  • κατανάλωση – Αυτή είναι μια κινητή τιμή που υποδεικνύει την κατανάλωση ενέργειας, μετρούμενη σε κάποια αυθαίρετη μονάδα. Οι τιμές κατανάλωσης παράγονται τυχαία μεταξύ 0-1,000 με ημιτονοειδή εποχικότητα.

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

Για να εκπαιδεύσουμε αποτελεσματικά και να εξυπηρετήσουμε χιλιάδες μοντέλα ML, μπορούμε να χρησιμοποιήσουμε τις ακόλουθες δυνατότητες του SageMaker:

  • Επεξεργασία SageMaker – Το SageMaker Processing είναι μια πλήρως διαχειριζόμενη υπηρεσία προετοιμασίας δεδομένων που σας δίνει τη δυνατότητα να εκτελείτε εργασίες επεξεργασίας δεδομένων και αξιολόγησης μοντέλων στα δεδομένα εισόδου σας. Μπορείτε να χρησιμοποιήσετε το SageMaker Processing για να μετατρέψετε τα ανεπεξέργαστα δεδομένα στη μορφή που απαιτείται για εκπαίδευση και εξαγωγή συμπερασμάτων, καθώς και για να εκτελέσετε ομαδικές και διαδικτυακές αξιολογήσεις των μοντέλων σας.
  • Θέσεις εργασίας εκπαίδευσης SageMaker – Μπορείτε να χρησιμοποιήσετε εργασίες εκπαίδευσης του SageMaker για να εκπαιδεύσετε μοντέλα σε μια ποικιλία αλγορίθμων και τύπων δεδομένων εισόδου και να καθορίσετε τους υπολογιστικούς πόρους που απαιτούνται για την εκπαίδευση.
  • SageMaker MME – Τα τελικά σημεία πολλαπλών μοντέλων σάς επιτρέπουν να φιλοξενείτε πολλά μοντέλα σε ένα μόνο τελικό σημείο, γεγονός που καθιστά εύκολη την προβολή προβλέψεων από πολλά μοντέλα χρησιμοποιώντας ένα μόνο API. Τα MME του SageMaker μπορούν να εξοικονομήσουν χρόνο και πόρους μειώνοντας τον αριθμό των τελικών σημείων που απαιτούνται για την προβολή προβλέψεων από πολλά μοντέλα. Τα MME υποστηρίζουν τη φιλοξενία μοντέλων που υποστηρίζονται από CPU και GPU. Σημειώστε ότι στο σενάριο μας, χρησιμοποιούμε 1,000 μοντέλα, αλλά αυτό δεν αποτελεί περιορισμό της ίδιας της υπηρεσίας.

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

αρχιτεκτονική που εμφανίζει την περιγραφόμενη διαδικασία

Η ροή εργασίας περιλαμβάνει τα ακόλουθα βήματα:

  1. Χρησιμοποιούμε το SageMaker Processing για την προεπεξεργασία δεδομένων και τη δημιουργία ενός μόνο αρχείου CSV ανά πελάτη και την αποθήκευση του σε Απλή υπηρεσία αποθήκευσης Amazon (Amazon S3).
  2. Η εργασία εκπαίδευσης του SageMaker έχει ρυθμιστεί ώστε να διαβάζει την έξοδο της εργασίας Επεξεργασίας SageMaker και να τη διανέμει με κυκλικό τρόπο στις παρουσίες εκπαίδευσης. Σημειώστε ότι αυτό μπορεί να επιτευχθεί και με Αγωγοί Amazon SageMaker.
  3. Τα τεχνουργήματα μοντέλων αποθηκεύονται στο Amazon S3 από την εργασία εκπαίδευσης και εξυπηρετούνται απευθείας από το SageMaker MME.

Κλιμακώστε την εκπαίδευση σε χιλιάδες μοντέλα

Η κλιμάκωση της εκπαίδευσης χιλιάδων μοντέλων είναι δυνατή μέσω του distribution παράμετρος του TrainingInput κλάση στο SageMaker Python SDK, το οποίο σας επιτρέπει να καθορίσετε πώς τα δεδομένα διανέμονται σε πολλαπλές παρουσίες εκπαίδευσης για μια εργασία εκπαίδευσης. Υπάρχουν τρεις επιλογές για το distribution παραμέτρου: FullyReplicated, ShardedByS3Key, να ShardedByRecord. ο ShardedByS3Key Η επιλογή σημαίνει ότι τα δεδομένα εκπαίδευσης μοιράζονται από το κλειδί αντικειμένου S3, με κάθε παράδειγμα εκπαίδευσης να λαμβάνει ένα μοναδικό υποσύνολο δεδομένων, αποφεύγοντας την αντιγραφή. Αφού αντιγραφούν τα δεδομένα από το SageMaker στα δοχεία εκπαίδευσης, μπορούμε να διαβάσουμε τη δομή του φακέλου και των αρχείων για να εκπαιδεύσουμε ένα μοναδικό μοντέλο ανά αρχείο πελάτη. Το παρακάτω είναι ένα παράδειγμα αποσπάσματος κώδικα:

# Assume that the training data is in an S3 bucket already, pass the parent folder
s3_input_train = sagemaker.inputs.TrainingInput( s3_data='s3://my-bucket/customer_data', distribution='ShardedByS3Key'
) # Create a SageMaker estimator and set the training input
estimator = sagemaker.estimator.Estimator(...)
estimator.fit(inputs=s3_input_train)

Κάθε εργασία εκπαίδευσης του SageMaker αποθηκεύει το μοντέλο που είναι αποθηκευμένο στο /opt/ml/model φάκελο του κοντέινερ εκπαίδευσης πριν το αρχειοθετήσετε σε α model.tar.gz αρχείο και, στη συνέχεια, το ανεβάζει στο Amazon S3 μετά την ολοκλήρωση της εργασίας εκπαίδευσης. Οι ισχυροί χρήστες μπορούν επίσης να αυτοματοποιήσουν αυτή τη διαδικασία με το SageMaker Pipelines. Όταν αποθηκεύετε πολλά μοντέλα μέσω της ίδιας εργασίας εκπαίδευσης, το SageMaker δημιουργεί ένα ενιαίο model.tar.gz αρχείο που περιέχει όλα τα εκπαιδευμένα μοντέλα. Αυτό θα σήμαινε ότι, για να εξυπηρετήσουμε το μοντέλο, θα πρέπει πρώτα να αποσυσκευάσουμε το αρχείο. Για να το αποφύγουμε αυτό, χρησιμοποιούμε σημεία ελέγχου για να σώσει την κατάσταση μεμονωμένων μοντέλων. Το SageMaker παρέχει τη λειτουργία αντιγραφής σημείων ελέγχου που δημιουργήθηκαν κατά τη διάρκεια της εργασίας εκπαίδευσης στο Amazon S3. Εδώ, τα σημεία ελέγχου πρέπει να αποθηκευτούν σε μια προκαθορισμένη τοποθεσία, με την προεπιλογή /opt/ml/checkpoints. Αυτά τα σημεία ελέγχου μπορούν να χρησιμοποιηθούν για την επανέναρξη της εκπαίδευσης αργότερα ή ως μοντέλο για ανάπτυξη σε ένα τελικό σημείο. Για μια σύνοψη υψηλού επιπέδου του τρόπου με τον οποίο η πλατφόρμα εκπαίδευσης SageMaker διαχειρίζεται διαδρομές αποθήκευσης για σύνολα δεδομένων εκπαίδευσης, τεχνουργήματα μοντέλων, σημεία ελέγχου και εξόδους μεταξύ αποθήκευσης AWS Cloud και εργασιών εκπαίδευσης στο SageMaker, ανατρέξτε στο Amazon SageMaker Training Storage Folders for Training Datasets, Checkpoints, Model Artifacts και Outputs.

Ο παρακάτω κώδικας χρησιμοποιεί ένα εικονικό model.save() λειτουργία μέσα στο train.py σενάριο που περιέχει τη λογική εκπαίδευσης:

import tarfile
import boto3
import os [ ... argument parsing ... ] for customer in os.list_dir(args.input_path): # Read data locally within the Training job df = pd.read_csv(os.path.join(args.input_path, customer, 'data.csv')) # Define and train the model model = MyModel() model.fit(df) # Save model to output directory with open(os.path.join(output_dir, 'model.json'), 'w') as fout: fout.write(model_to_json(model)) # Create the model.tar.gz archive containing the model and the training script with tarfile.open(os.path.join(output_dir, '{customer}.tar.gz'), "w:gz") as tar: tar.add(os.path.join(output_dir, 'model.json'), "model.json") tar.add(os.path.join(args.code_dir, "training.py"), "training.py")

Κλιμακώστε τα συμπεράσματα σε χιλιάδες μοντέλα με SageMaker MME

Τα MME του SageMaker σάς επιτρέπουν να προβάλλετε πολλά μοντέλα ταυτόχρονα δημιουργώντας μια διαμόρφωση παραμέτρων τελικού σημείου που περιλαμβάνει μια λίστα με όλα τα μοντέλα προς προβολή και, στη συνέχεια, δημιουργώντας ένα τελικό σημείο χρησιμοποιώντας αυτήν τη διαμόρφωση τερματικού σημείου. Δεν χρειάζεται να αναπτύσσετε ξανά το τελικό σημείο κάθε φορά που προσθέτετε ένα νέο μοντέλο, επειδή το τελικό σημείο θα εξυπηρετεί αυτόματα όλα τα μοντέλα που είναι αποθηκευμένα στις καθορισμένες διαδρομές S3. Αυτό επιτυγχάνεται με Διακομιστής πολλαπλών μοντέλων (MMS), ένα πλαίσιο ανοιχτού κώδικα για την εξυπηρέτηση μοντέλων ML που μπορεί να εγκατασταθεί σε κοντέινερ για να παρέχει τη διεπαφή που πληροί τις απαιτήσεις για τα νέα API κοντέινερ MME. Επιπλέον, μπορείτε να χρησιμοποιήσετε άλλους διακομιστές μοντέλων συμπεριλαμβανομένων TorchServe και Τρίτωνος. MMS μπορεί να εγκατασταθεί στο προσαρμοσμένο κοντέινερ μέσω του SageMaker Inference Toolkit. Για να μάθετε περισσότερα σχετικά με τον τρόπο διαμόρφωσης του αρχείου Docker ώστε να περιλαμβάνει MMS και να το χρησιμοποιείτε για την εξυπηρέτηση των μοντέλων σας, ανατρέξτε στο Δημιουργήστε το δικό σας κοντέινερ για τα τελικά σημεία πολλαπλών μοντέλων του SageMaker.

Το ακόλουθο απόσπασμα κώδικα δείχνει πώς να δημιουργήσετε ένα MME χρησιμοποιώντας το SageMaker Python SDK:

from sagemaker.multidatamodel import MultiDataModel # Create the MultiDataModel definition
multimodel = MultiDataModel( name='customer-models', model_data_prefix=f's3://{bucket}/scaling-thousand-models/models', model=your_model,
) # Deploy on a real-time endpoint
predictor = multimodel.deploy( initial_instance_count=1, instance_type='ml.c5.xlarge',
)

Όταν το MME είναι ζωντανό, μπορούμε να το επικαλεστούμε για να δημιουργήσουμε προβλέψεις. Οι κλήσεις μπορούν να γίνουν σε οποιοδήποτε AWS SDK καθώς και με το SageMaker Python SDK, όπως φαίνεται στο παρακάτω απόσπασμα κώδικα:

predictor.predict( data='{"period": 7}', # the payload, in this case JSON target_model='{customer}.tar.gz' # the name of the target model
)

Κατά την κλήση ενός μοντέλου, το μοντέλο φορτώνεται αρχικά από το Amazon S3 στην περίπτωση, κάτι που μπορεί να οδηγήσει σε ψυχρή εκκίνηση κατά την κλήση ενός νέου μοντέλου. Τα μοντέλα που χρησιμοποιούνται συχνά αποθηκεύονται προσωρινά στη μνήμη και στο δίσκο για να παρέχουν συμπεράσματα χαμηλής καθυστέρησης.

Συμπέρασμα

Το SageMaker είναι μια ισχυρή και οικονομικά αποδοτική πλατφόρμα για εκπαίδευση και εξυπηρέτηση χιλιάδων μοντέλων ML. Τα χαρακτηριστικά του, συμπεριλαμβανομένου του SageMaker Processing, των εργασιών εκπαίδευσης και των MME, επιτρέπουν στους οργανισμούς να εκπαιδεύουν αποτελεσματικά και να εξυπηρετούν χιλιάδες μοντέλα σε κλίμακα, ενώ επωφελούνται επίσης από τα πλεονεκτήματα εξοικονόμησης κόστους της χρήσης της υποδομής AWS Cloud. Για να μάθετε περισσότερα σχετικά με τον τρόπο χρήσης του SageMaker για εκπαίδευση και εξυπηρέτηση χιλιάδων μοντέλων, ανατρέξτε στο Δεδομένα διεργασίας, Εκπαιδεύστε ένα μοντέλο με το Amazon SageMaker και Φιλοξενήστε πολλά μοντέλα σε ένα κοντέινερ πίσω από ένα τελικό σημείο.


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

Φωτογραφία του DavideDavide Gallitelli είναι Ειδικός Αρχιτέκτονας Λύσεων για AI/ML στην περιοχή EMEA. Εδρεύει στις Βρυξέλλες και συνεργάζεται στενά με πελάτες σε όλη τη Μπενελούξ. Είναι προγραμματιστής από πολύ μικρός, ξεκινώντας να κωδικοποιεί σε ηλικία 7 ετών. Άρχισε να μαθαίνει AI/ML στο πανεπιστήμιο και από τότε το ερωτεύτηκε.

Φωτογραφία του MauritsMaurits de Groot είναι αρχιτέκτονας λύσεων στην Amazon Web Services, με έδρα το Άμστερνταμ. Του αρέσει να εργάζεται σε θέματα που σχετίζονται με τη μηχανική μάθηση και έχει προτίμηση στις νεοφυείς επιχειρήσεις. Στον ελεύθερο χρόνο του, του αρέσει να κάνει σκι και να παίζει σκουός.

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

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