Συσκευάστε και αναπτύξτε εύκολα κλασικά ML και LLM με το Amazon SageMaker, μέρος 1: Βελτιώσεις PySDK | Υπηρεσίες Ιστού της Amazon

Συσκευάστε και αναπτύξτε εύκολα κλασικά ML και LLM με το Amazon SageMaker, μέρος 1: Βελτιώσεις PySDK | Υπηρεσίες Ιστού της Amazon

Amazon Sage Maker είναι μια πλήρως διαχειριζόμενη υπηρεσία που επιτρέπει στους προγραμματιστές και τους επιστήμονες δεδομένων να δημιουργούν, εκπαιδεύουν και αναπτύσσουν γρήγορα και αβίαστα μοντέλα μηχανικής μάθησης (ML) σε οποιαδήποτε κλίμακα. Το SageMaker καθιστά εύκολη την ανάπτυξη μοντέλων στην παραγωγή απευθείας μέσω κλήσεων API στην υπηρεσία. Τα μοντέλα συσκευάζονται σε δοχεία για στιβαρές και επεκτάσιμες αναπτύξεις. Παρόλο που παρέχει διάφορα σημεία εισόδου όπως το SageMaker Python SDK, τα AWS SDK, την κονσόλα SageMaker και Στούντιο Amazon SageMaker φορητοί υπολογιστές για την απλοποίηση της διαδικασίας εκπαίδευσης και ανάπτυξης μοντέλων ML σε κλίμακα, οι πελάτες εξακολουθούν να αναζητούν καλύτερους τρόπους για να αναπτύξουν τα μοντέλα τους για δοκιμές παιδικής χαράς και να βελτιστοποιήσουν την ανάπτυξη της παραγωγής.

Παρουσιάζουμε δύο νέους τρόπους για να απλοποιήσουμε τη διαδικασία συσκευασίας και ανάπτυξης μοντέλων χρησιμοποιώντας το SageMaker.

Σε αυτήν την ανάρτηση, παρουσιάζουμε το νέο SageMaker Python SDK ModelBuilder εμπειρία, η οποία στοχεύει στην ελαχιστοποίηση της καμπύλης μάθησης για νέους χρήστες του SageMaker, όπως οι επιστήμονες δεδομένων, ενώ βοηθά επίσης έμπειρους μηχανικούς MLOps να μεγιστοποιήσουν τη χρήση των υπηρεσιών φιλοξενίας SageMaker. Μειώνει την πολυπλοκότητα της αρχικής εγκατάστασης και ανάπτυξης και παρέχοντας καθοδήγηση σχετικά με τις βέλτιστες πρακτικές για την αξιοποίηση όλων των δυνατοτήτων του SageMaker. Παρέχουμε λεπτομερείς πληροφορίες και παραδείγματα GitHub για αυτήν τη νέα δυνατότητα του SageMaker.

Η άλλη νέα κυκλοφορία είναι η χρήση της νέας διαδραστικής εμπειρίας ανάπτυξης στο SageMaker Studio. Το συζητάμε στο Μέρος 2.

Η ανάπτυξη μοντέλων σε ένα τελικό σημείο SageMaker συνεπάγεται μια σειρά βημάτων για να ετοιμαστεί το μοντέλο για φιλοξενία σε ένα τελικό σημείο SageMaker. Αυτό περιλαμβάνει τη λήψη των τεχνουργημάτων του μοντέλου στη σωστή μορφή και δομή, τη δημιουργία κώδικα συμπερασμάτων και τον καθορισμό βασικών λεπτομερειών όπως η διεύθυνση URL της εικόνας του μοντέλου, Απλή υπηρεσία αποθήκευσης Amazon (Amazon S3) τοποθεσία των τεχνουργημάτων μοντέλων, βήματα σειριοποίησης και αποσειροποίησης και απαραίτητα Διαχείριση ταυτότητας και πρόσβασης AWS (IAM) ρόλους για τη διευκόλυνση των κατάλληλων αδειών πρόσβασης. Μετά από αυτό, μια διαμόρφωση τελικού σημείου απαιτεί τον προσδιορισμό του τύπου συμπερασμάτων και τη διαμόρφωση αντίστοιχων παραμέτρων όπως οι τύποι παρουσιών, οι μετρήσεις και η κατανομή κίνησης μεταξύ των παραλλαγών του μοντέλου.

Για να βοηθήσουμε περαιτέρω τους πελάτες μας όταν χρησιμοποιούν τη φιλοξενία SageMaker, παρουσιάσαμε τη νέα ModelBuilder κλάση στο SageMaker Python SDK, το οποίο φέρνει τα ακόλουθα βασικά οφέλη κατά την ανάπτυξη μοντέλων στα τελικά σημεία του SageMaker:

  • Ενοποιεί την εμπειρία ανάπτυξης σε διάφορα πλαίσια – Η νέα εμπειρία παρέχει μια συνεπή ροή εργασίας για την ανάπτυξη μοντέλων που έχουν κατασκευαστεί με χρήση διαφορετικών πλαισίων όπως τα PyTorch, TensorFlow και XGBoost. Αυτό απλοποιεί τη διαδικασία ανάπτυξης.
  • Αυτοματοποιεί την ανάπτυξη του μοντέλου – Εργασίες όπως η επιλογή των κατάλληλων κοντέινερ, η καταγραφή εξαρτήσεων και ο χειρισμός της σειριοποίησης/αποσειριοποίησης είναι αυτοματοποιημένες, μειώνοντας τη μη αυτόματη προσπάθεια που απαιτείται για την ανάπτυξη.
  • Παρέχει ομαλή μετάβαση από το τοπικό στο φιλοξενούμενο τελικό σημείο του SageMaker – Με ελάχιστες αλλαγές κώδικα, τα μοντέλα μπορούν εύκολα να μεταβούν από την τοπική δοκιμή στην ανάπτυξη σε ένα τελικό σημείο του SageMaker. Τα ζωντανά αρχεία καταγραφής κάνουν τον εντοπισμό σφαλμάτων απρόσκοπτη.

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

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

Γνωριμία με το SageMaker ModelBuilder

Το νέο ModelBuilder είναι μια κλάση Python που επικεντρώνεται στη λήψη μοντέλων ML που έχουν δημιουργηθεί χρησιμοποιώντας πλαίσια, όπως το XGBoost ή το PyTorch, και στη μετατροπή τους σε μοντέλα που είναι έτοιμα για ανάπτυξη στο SageMaker. ModelBuilder παρέχει ένα build() λειτουργία, η οποία δημιουργεί τα τεχνουργήματα σύμφωνα με τον διακομιστή μοντέλου, και α deploy() λειτουργία για ανάπτυξη τοπικά ή σε τελικό σημείο SageMaker. Η εισαγωγή αυτής της δυνατότητας απλοποιεί την ενοποίηση των μοντέλων με το περιβάλλον SageMaker, βελτιστοποιώντας τα για απόδοση και επεκτασιμότητα. Το παρακάτω διάγραμμα δείχνει πώς ModelBuilder λειτουργεί σε υψηλό επίπεδο.

Συσκευάστε και αναπτύξτε κλασικά ML και LLM εύκολα με το Amazon SageMaker, μέρος 1: Βελτιώσεις PySDK | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Κατηγορία ModelBuilder

Η ModelBuilder class παρέχει διαφορετικές επιλογές για προσαρμογή. Ωστόσο, για να αναπτύξει το μοντέλο πλαισίου, ο κατασκευαστής μοντέλων αναμένει απλώς το μοντέλο, την είσοδο, την έξοδο και τον ρόλο:

class ModelBuilder( model, # model id or model object role_arn, # IAM role schema_builder, # defines the input and output mode, # select between local deployment and depoy to SageMaker Endpoints ...
)

SchemaBuilder

Η SchemaBuilder class σάς δίνει τη δυνατότητα να ορίσετε την είσοδο και την έξοδο για το τελικό σημείο σας. Επιτρέπει στο πρόγραμμα δημιουργίας σχημάτων να δημιουργήσει τις αντίστοιχες συναρτήσεις ομαδοποίησης για σειριοποίηση και αποσειροποίηση της εισόδου και της εξόδου. Το ακόλουθο αρχείο κλάσης παρέχει όλες τις επιλογές για προσαρμογή:

class SchemaBuilder( sample_input: Any, sample_output: Any, input_translator: CustomPayloadTranslator = None, output_translator: CustomPayloadTranslator = None
)

Ωστόσο, στις περισσότερες περιπτώσεις, μόνο δείγμα εισόδου και εξόδου θα λειτουργούσε. Για παράδειγμα:

input = "How is the demo going?"
output = "Comment la démo va-t-elle?"
schema = SchemaBuilder(input, output)

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

Εμπειρία τοπικής λειτουργίας

Σε αυτό το παράδειγμα, χρησιμοποιούμε ModelBuilder για την ανάπτυξη του μοντέλου XGBoost τοπικά. Μπορείτε να χρησιμοποιήσετε τη λειτουργία για εναλλαγή μεταξύ τοπικής δοκιμής και ανάπτυξης σε τελικό σημείο του SageMaker. Αρχικά εκπαιδεύουμε το μοντέλο XGBoost (τοπικά ή στο SageMaker) και αποθηκεύουμε τα τεχνουργήματα του μοντέλου στον κατάλογο εργασίας:

# Train the model
model = XGBClassifier()
model.fit(X_train, y_train)
model.save_model(model_dir + "/my_model.xgb")

Στη συνέχεια δημιουργούμε ένα αντικείμενο ModelBuilder περνώντας το πραγματικό αντικείμενο μοντέλου, το SchemaBuilder που χρησιμοποιεί τα δείγματα δοκιμαστικών αντικειμένων εισόδου και εξόδου (την ίδια είσοδο και έξοδο που χρησιμοποιήσαμε κατά την εκπαίδευση και τη δοκιμή του μοντέλου) για να συναγάγει τη σειριοποίηση που απαιτείται. Σημειώστε ότι χρησιμοποιούμε Mode.LOCAL_CONTAINER για να καθορίσετε μια τοπική ανάπτυξη. Μετά από αυτό, καλούμε το χτίζω λειτουργία για αυτόματη αναγνώριση της υποστηριζόμενης εικόνας κοντέινερ πλαισίου καθώς και σάρωση για εξαρτήσεις. Δείτε τον παρακάτω κώδικα:

model_builder_local = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, mode=Mode.LOCAL_CONTAINER
)
xgb_local_builder = model_builder_local.build()

Τέλος, μπορούμε να καλέσουμε το deploy λειτουργία στο αντικείμενο μοντέλου, το οποίο παρέχει επίσης ζωντανή καταγραφή για ευκολότερο εντοπισμό σφαλμάτων. Δεν χρειάζεται να καθορίσετε τον τύπο παρουσίας ή τον αριθμό, επειδή το μοντέλο θα αναπτυχθεί τοπικά. Εάν παρείχατε αυτές τις παραμέτρους, θα αγνοηθούν. Αυτή η συνάρτηση θα επιστρέψει το αντικείμενο πρόβλεψης που μπορούμε να χρησιμοποιήσουμε για να κάνουμε πρόβλεψη με τα δεδομένα δοκιμής:

# note: all the serialization and deserialization is handled by the model builder.
predictor_local = xgb_local_builder.deploy(
# instance_type='ml.c5.xlarge',
# initial_instance_count=1
) # Make prediction for test data. predictor_local.predict(X_test)

Προαιρετικά, μπορείτε επίσης να ελέγξετε τη φόρτωση του μοντέλου και την προεπεξεργασία και τη μετεπεξεργασία χρησιμοποιώντας InferenceSpec. Παρέχουμε περισσότερες λεπτομέρειες αργότερα σε αυτήν την ανάρτηση. Χρησιμοποιώντας LOCAL_CONTAINER είναι ένας πολύ καλός τρόπος για να δοκιμάσετε το σενάριό σας τοπικά πριν από την ανάπτυξη σε ένα τελικό σημείο του SageMaker.

Αναφέρομαι στο model-builder-xgboost.ipynb παράδειγμα για να δοκιμάσετε την ανάπτυξη τόσο τοπικά όσο και σε τελικό σημείο SageMaker χρησιμοποιώντας ModelBuilder.

Αναπτύξτε παραδοσιακά μοντέλα στα τελικά σημεία του SageMaker

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

Μοντέλα XGBoost

Όπως και στην προηγούμενη ενότητα, μπορείτε να αναπτύξετε ένα μοντέλο XGBoost σε ένα τελικό σημείο του SageMaker αλλάζοντας το mode παράμετρος κατά τη δημιουργία του ModelBuilder αντικείμενο:

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, mode=Mode.SAGEMAKER_ENDPOINT
)
xgb_builder = model_builder.build()
predictor = xgb_builder.deploy( instance_type='ml.c5.xlarge', initial_instance_count=1
)

Σημειώστε ότι κατά την ανάπτυξη στα τελικά σημεία του SageMaker, πρέπει να καθορίσετε τον τύπο και τον αριθμό παρουσιών κατά την κλήση του deploy λειτουργία.

Αναφέρομαι στο model-builder-xgboost.ipynb παράδειγμα για την ανάπτυξη ενός μοντέλου XGBoost.

Μοντέλα Triton

Μπορείς να χρησιμοποιήσεις ModelBuilder για την προβολή μοντέλων PyTorch Διακομιστής Triton Inference. Για αυτό, πρέπει να καθορίσετε το model_server παράμετρος ως ModelServer.TRITON, περάστε ένα μοντέλο, και έχετε ένα SchemaBuilder αντικείμενο, το οποίο απαιτεί εισόδους και εξόδους δειγμάτων από το μοντέλο. Το ModelBuilder θα φροντίσει τα υπόλοιπα για εσάς.

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(sample_input=sample_input, sample_output=sample_output), role_arn=execution_role, model_server=ModelServer.TRITON, mode=Mode.SAGEMAKER_ENDPOINT
) triton_builder = model_builder.build() predictor = triton_builder.deploy( instance_type='ml.g4dn.xlarge', initial_instance_count=1
)

Αναφέρομαι σε model-builder-triton.ipynb να αναπτύξει ένα μοντέλο με τον Τρίτωνα.

Μοντέλα Hugging Face

Σε αυτό το παράδειγμα, σας δείχνουμε πώς να αναπτύξετε ένα προεκπαιδευμένο μοντέλο μετασχηματιστή που παρέχεται από το Hugging Face στο SageMaker. Θέλουμε να χρησιμοποιήσουμε το Πρόσωπο αγκαλιάς pipeline για να φορτώσετε το μοντέλο, οπότε δημιουργούμε μια προσαρμοσμένη προδιαγραφή συμπερασμάτων για ModelBuilder:

# custom inference spec with hugging face pipeline
class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return pipeline("translation_en_to_fr", model="t5-small") def invoke(self, input, model): return model(input) inf_spec = MyInferenceSpec()

Ορίζουμε επίσης την είσοδο και την έξοδο του φόρτου εργασίας συμπερασμάτων ορίζοντας το SchemaBuilder αντικείμενο με βάση την είσοδο και την έξοδο του μοντέλου:

schema = SchemaBuilder(value,output)

Στη συνέχεια δημιουργούμε το ModelBuilder αντικείμενο και αναπτύξτε το μοντέλο σε ένα τελικό σημείο του SageMaker ακολουθώντας την ίδια λογική όπως φαίνεται στο άλλο παράδειγμα:

builder = ModelBuilder( inference_spec=inf_spec, mode=Mode.SAGEMAKER_ENDPOINT, # you can change it to Mode.LOCAL_CONTAINER for local testing schema_builder=schema, image_uri=image,
)
model = builder.build( role_arn=execution_role, sagemaker_session=sagemaker_session,
)
predictor = model.deploy( initial_instance_count=1, instance_type='ml.g5.2xlarge'
)

Αναφέρομαι σε model-builder-huggingface.ipynb για την ανάπτυξη ενός μοντέλου αγωγού Hugging Face.

Αναπτύξτε μοντέλα θεμελίωσης στα τελικά σημεία του SageMaker

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

Humbing Face Hub

Εάν θέλετε να αναπτύξετε ένα μοντέλο θεμελίωσης από Humbing Face Hub, το μόνο που χρειάζεται να κάνετε είναι να περάσετε το προεκπαιδευμένο αναγνωριστικό μοντέλου. Για παράδειγμα, το ακόλουθο απόσπασμα κώδικα αναπτύσσει το meta-llama/Llama-2-7b-hf μοντέλο τοπικά. Μπορείτε να αλλάξετε τη λειτουργία σε Mode.SAGEMAKER_ENDPOINT για ανάπτυξη στα τελικά σημεία του SageMaker.

model_builder = ModelBuilder( model="meta-llama/Llama-2-7b-hf", schema_builder=SchemaBuilder(sample_input, sample_output), model_path="/home/ec2-user/SageMaker/LoadTestResources/meta-llama2-7b", #local path where artifacts will be saved mode=Mode.LOCAL_CONTAINER, env_vars={ # Llama 2 is a gated model and requires a Hugging Face Hub token. "HUGGING_FACE_HUB_TOKEN": "<YourHuggingFaceToken>" }
)
model = model_builder.build()
local_predictor = model.deploy()

Για μοντέλα με πύλη στο Hugging Face Hub, πρέπει να ζητήσετε πρόσβαση μέσω Hugging Face Hub και να χρησιμοποιήσετε το σχετικό κλειδί περνώντας το ως μεταβλητή περιβάλλοντος HUGGING_FACE_HUB_TOKEN. Ορισμένα μοντέλα Hugging Face ενδέχεται να απαιτούν απομακρυσμένο κωδικό εμπιστοσύνης. Μπορεί να οριστεί και ως μεταβλητή περιβάλλοντος χρησιμοποιώντας HF_TRUST_REMOTE_CODE. Από προεπιλογή, ModelBuilder θα χρησιμοποιήσει ένα συμπέρασμα δημιουργίας κειμένου Hugging Face (TGI) δοχείο ως το υποκείμενο δοχείο για μοντέλα Hugging Face. Εάν θέλετε να χρησιμοποιήσετε το AWS Large Model Inference (LMI) δοχεία, μπορείτε να ρυθμίσετε το model_server παράμετρος ως ModelServer.DJL_SERVING όταν ρυθμίζετε τις παραμέτρους του ModelBuilder αντικείμενο.

Ένα προσεγμένο χαρακτηριστικό του ModelBuilder είναι η δυνατότητα εκτέλεσης τοπικού συντονισμού των παραμέτρων του κοντέινερ όταν χρησιμοποιείτε LOCAL_CONTAINER τρόπος. Αυτή η δυνατότητα μπορεί να χρησιμοποιηθεί με απλή εκτέλεση tuned_model = model.tune().

Αναφέρομαι σε demo-model-builder-huggingface-llama2.ipynb για την ανάπτυξη ενός μοντέλου Hugging Face Hub.

SageMaker JumpStart

Amazon SageMaker JumpStart προσφέρει επίσης μια σειρά από προεκπαιδευμένα μοντέλα θεμελίωσης. Ακριβώς όπως η διαδικασία ανάπτυξης ενός μοντέλου από το Hugging Face Hub, απαιτείται το αναγνωριστικό μοντέλου. Η ανάπτυξη ενός μοντέλου SageMaker JumpStart σε ένα τελικό σημείο του SageMaker είναι τόσο απλή όσο η εκτέλεση του παρακάτω κώδικα:

model_builder = ModelBuilder( model="huggingface-llm-falcon-7b-bf16", schema_builder=SchemaBuilder(sample_input, sample_output), role_arn=execution_role
) sm_ep_model = model_builder.build() predictor = sm_ep_model.deploy()

Για όλα τα διαθέσιμα αναγνωριστικά μοντέλων SageMaker JumpStart, ανατρέξτε στο Ενσωματωμένοι αλγόριθμοι με προεκπαιδευμένο πίνακα μοντέλων. Αναφέρομαι σε model-builder-jumpstart-falcon.ipynb για να αναπτύξετε ένα μοντέλο SageMaker JumpStart.

Συνιστώσα συμπερασμάτων

ModelBulder σας επιτρέπει να χρησιμοποιήσετε τη νέα δυνατότητα συνιστώσας συμπερασμάτων στο SageMaker για την ανάπτυξη μοντέλων. Για περισσότερες πληροφορίες σχετικά με τα στοιχεία συμπερασμάτων, βλ Μειώστε το κόστος ανάπτυξης μοντέλου κατά 50% κατά μέσο όρο, χρησιμοποιώντας τις πιο πρόσφατες δυνατότητες του SageMaker. Μπορείτε να χρησιμοποιήσετε στοιχεία συμπερασμάτων για ανάπτυξη με ModelBuilder διευκρινίζοντας endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED στο deploy() μέθοδος. Μπορείτε επίσης να χρησιμοποιήσετε το tune() μέθοδος, η οποία φέρνει τον βέλτιστο αριθμό επιταχυντών και τροποποιήστε τον εάν απαιτείται.

resource_requirements = ResourceRequirements( requests={ "num_accelerators": 4, "memory": 1024, "copies": 1, }, limits={},
) goldfinch_predictor_2 = model_2.deploy( mode=Mode.SAGEMAKER_ENDPOINT, endpoint_type=EndpointType.INFERENCE_COMPONENT_BASED, ... )

Αναφέρομαι σε model-builder-inference-component.ipynb για την ανάπτυξη ενός μοντέλου ως συνιστώσα συμπερασμάτων.

Προσαρμόστε την κλάση ModelBuilder

Η ModelBuilder class σάς επιτρέπει να προσαρμόσετε τη φόρτωση του μοντέλου χρησιμοποιώντας InferenceSpec.

Επιπλέον, μπορείτε να ελέγξετε τη σειριοποίηση και την αποσειριοποίηση ωφέλιμου φορτίου και απόκρισης και να προσαρμόσετε την προεπεξεργασία και τη μεταεπεξεργασία χρησιμοποιώντας CustomPayloadTranslator. Επιπλέον, όταν πρέπει να επεκτείνετε τα προκατασκευασμένα κοντέινερ μας για ανάπτυξη μοντέλων στο SageMaker, μπορείτε να χρησιμοποιήσετε ModelBuilder να χειριστεί τη διαδικασία συσκευασίας του μοντέλου. Σε αυτήν την ενότητα που ακολουθεί, παρέχουμε περισσότερες λεπτομέρειες σχετικά με αυτές τις δυνατότητες.

InferenceSpec

InferenceSpec προσφέρει ένα επιπλέον επίπεδο προσαρμογής. Σας επιτρέπει να ορίσετε πώς φορτώνεται το μοντέλο και πώς θα χειρίζεται τα εισερχόμενα αιτήματα συμπερασμάτων. Διά μέσου InferenceSpec, μπορείτε να ορίσετε προσαρμοσμένες διαδικασίες φόρτωσης για τα μοντέλα σας, παρακάμπτοντας τους προεπιλεγμένους μηχανισμούς φόρτωσης. Αυτή η ευελιξία είναι ιδιαίτερα ωφέλιμη όταν εργάζεστε με μη τυποποιημένα μοντέλα ή προσαρμοσμένους αγωγούς συμπερασμάτων. Η μέθοδος επίκλησης μπορεί να προσαρμοστεί, παρέχοντάς σας τη δυνατότητα να προσαρμόσετε τον τρόπο με τον οποίο το μοντέλο επεξεργάζεται τα εισερχόμενα αιτήματα (προεπεξεργασία και μεταεπεξεργασία). Αυτή η προσαρμογή μπορεί να είναι απαραίτητη για να διασφαλιστεί ότι η διαδικασία εξαγωγής συμπερασμάτων ευθυγραμμίζεται με τις συγκεκριμένες ανάγκες του μοντέλου. Δείτε τον παρακάτω κώδικα:

class InferenceSpec(abc.ABC): @abc.abstractmethod def load(self, model_dir: str): pass @abc.abstractmethod def invoke(self, input_object: object, model: object): pass

Ο παρακάτω κώδικας δείχνει ένα παράδειγμα χρήσης αυτής της κλάσης:

class MyInferenceSpec(InferenceSpec): def load(self, model_dir: str): return // model object def invoke(self, input, model): return model(input)

CustomPayloadTranslator

Κατά την επίκληση τελικών σημείων SageMaker, τα δεδομένα αποστέλλονται μέσω ωφέλιμων φορτίων HTTP με διαφορετικούς τύπους MIME. Για παράδειγμα, μια εικόνα που αποστέλλεται στο τελικό σημείο για συμπέρασμα πρέπει να μετατραπεί σε byte στην πλευρά του πελάτη και να σταλεί μέσω του ωφέλιμου φορτίου HTTP στο τελικό σημείο. Όταν το τελικό σημείο λαμβάνει το ωφέλιμο φορτίο, πρέπει να αποσειριοποιήσει τη συμβολοσειρά byte πίσω στον τύπο δεδομένων που αναμένεται από το μοντέλο (επίσης γνωστός ως deserialization από την πλευρά του διακομιστή). Αφού το μοντέλο ολοκληρώσει την πρόβλεψη, τα αποτελέσματα πρέπει να σειριοποιηθούν σε byte που μπορούν να σταλούν πίσω μέσω του ωφέλιμου φορτίου HTTP στον χρήστη ή τον πελάτη. Όταν ο υπολογιστής-πελάτης λαμβάνει τα δεδομένα byte απόκρισης, πρέπει να εκτελέσει αποσειριοποίηση από την πλευρά του πελάτη για να μετατρέψει τα δεδομένα byte στην αναμενόμενη μορφή δεδομένων, όπως το JSON. Στο ελάχιστο, πρέπει να μετατρέψετε τα δεδομένα για τα ακόλουθα (όπως αριθμούνται στο παρακάτω διάγραμμα):

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

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

Συσκευάστε και αναπτύξτε κλασικά ML και LLM εύκολα με το Amazon SageMaker, μέρος 1: Βελτιώσεις PySDK | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Στο παρακάτω απόσπασμα κώδικα, δείχνουμε ένα παράδειγμα CustomPayloadTranslator όταν απαιτείται πρόσθετη προσαρμογή για τον χειρισμό τόσο της σειριοποίησης όσο και της αποσειριοποίησης στην πλευρά του πελάτη και του διακομιστή, αντίστοιχα:

from sagemaker.serve import CustomPayloadTranslator # request translator
class MyRequestTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on client side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the input payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on server side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object # response translator class MyResponseTranslator(CustomPayloadTranslator): # This function converts the payload to bytes - happens on server side def serialize_payload_to_bytes(self, payload: object) -> bytes: # converts the response payload to bytes ... ... return //return object as bytes # This function converts the bytes to payload - happens on client side def deserialize_payload_from_stream(self, stream) -> object: # convert bytes to in-memory object ... ... return //return in-memory object

Στο demo-model-builder-pytorch.ipynb σημειωματάριο, δείχνουμε πώς να αναπτύξετε εύκολα ένα μοντέλο PyTorch σε ένα τελικό σημείο SageMaker χρησιμοποιώντας ModelBuilder με CustomPayloadTranslator και την InferenceSpec τάξη.

Μοντέλο σκηνής για ανάπτυξη

Εάν θέλετε να τοποθετήσετε το μοντέλο για συμπέρασμα ή στο μητρώο μοντέλου, μπορείτε να το χρησιμοποιήσετε model.create() or model.register(). Το ενεργοποιημένο μοντέλο δημιουργείται στην υπηρεσία και, στη συνέχεια, μπορείτε να το αναπτύξετε αργότερα. Δείτε τον παρακάτω κώδικα:

model_builder = ModelBuilder( model=model, schema_builder=SchemaBuilder(X_test, y_pred), role_arn=execution_role, )
deployable_model = model_builder.build() deployable_model.create() # deployable_model.register() for model registry

Χρησιμοποιήστε προσαρμοσμένα δοχεία

Το SageMaker παρέχει προκατασκευασμένες εικόνες Docker για τους ενσωματωμένους αλγορίθμους και τα υποστηριζόμενα πλαίσια βαθιάς μάθησης που χρησιμοποιούνται για εκπαίδευση και εξαγωγή συμπερασμάτων. Εάν ένα προκατασκευασμένο κοντέινερ SageMaker δεν πληροί όλες τις απαιτήσεις σας, μπορείτε να επεκτείνετε την υπάρχουσα εικόνα για να ικανοποιήσει τις ανάγκες σας. Επεκτείνοντας μια προκατασκευασμένη εικόνα, μπορείτε να χρησιμοποιήσετε τις συμπεριλαμβανόμενες βιβλιοθήκες και ρυθμίσεις βαθιάς εκμάθησης χωρίς να χρειάζεται να δημιουργήσετε μια εικόνα από την αρχή. Για περισσότερες λεπτομέρειες σχετικά με τον τρόπο επέκτασης των προκατασκευασμένων κοντέινερ, ανατρέξτε στο έγγραφο SageMaker. ModelBuilder υποστηρίζει περιπτώσεις χρήσης όταν φέρνετε τα δικά σας κοντέινερ που επεκτείνονται από τα προκατασκευασμένα δοχεία Docker μας.

Για να χρησιμοποιήσετε τη δική σας εικόνα κοντέινερ σε αυτήν την περίπτωση, πρέπει να ορίσετε τα πεδία image_uri και model_server κατά τον καθορισμό ModelBuilder:

model_builder = ModelBuilder( model=model, # Pass in the actual model object. its "predict" method will be invoked in the endpoint. schema_builder=SchemaBuilder(X_test, y_pred), # Pass in a "SchemaBuilder" which will use the sample test input and output objects to infer the serialization needed. role_arn=execution_role, image_uri=image_uri, # REQUIRED FOR BYOC: Passing in image hosted in personal ECR Repo model_server=ModelServer.TORCHSERVE, # REQUIRED FOR BYOC: Passing in model server of choice mode=Mode.SAGEMAKER_ENDPOINT, dependencies={"auto": True, "custom": ["protobuf==3.20.2"]}
)

Εδώ, το image_uri θα είναι η εικόνα κοντέινερ ARN που είναι αποθηκευμένη στον λογαριασμό σας Μητρώο εμπορευματοκιβωτίων Amazon Elastic (Amazon ECR) αποθετήριο. Ένα παράδειγμα παρουσιάζεται ως εξής:

# Pulled the xgboost:1.7-1 DLC and pushed to personal ECR repo
image_uri = "<your_account_id>.dkr.ecr.us-west-2.amazonaws.com/my-byoc:xgb"

Όταν ο image_uri ορίζεται, κατά τη διάρκεια της ModelBuilder διαδικασία κατασκευής, θα παραλείψει την αυτόματη ανίχνευση της εικόνας καθώς παρέχεται το URI εικόνας. Αν model_server δεν έχει οριστεί στο ModelBuilder, θα λάβετε ένα μήνυμα σφάλματος επικύρωσης, για παράδειγμα:

ValueError: Model_server must be set when image_uri is set. Supported model servers: {<ModelServer.TRITON: 5>, <ModelServer.DJL_SERVING: 4>, <ModelServer.TORCHSERVE: 1>}

Από τη δημοσίευση αυτής της ανάρτησης, ModelBuilder υποστηρίζει να φέρετε τα δικά σας δοχεία που επεκτείνονται από το δικό μας προκατασκευασμένες εικόνες κοντέινερ DLC ή κοντέινερ που έχουν κατασκευαστεί με τους διακομιστές μοντέλων όπως Βιβλιοθήκη Deep Java (DJL), Συμπεράσματα δημιουργίας κειμένου (TGI), TorchServe, να Διακομιστής συμπερασμάτων Triton.

Προσαρμοσμένες εξαρτήσεις

Κατά τη λειτουργία ModelBuilder.build(), από προεπιλογή καταγράφει αυτόματα το περιβάλλον Python σας σε α requirements.txt αρχείο και εγκαθιστά την ίδια εξάρτηση στο κοντέινερ. Ωστόσο, μερικές φορές το τοπικό σας περιβάλλον Python θα έρχεται σε διένεξη με το περιβάλλον στο κοντέινερ. ModelBuilder παρέχει έναν απλό τρόπο για να τροποποιήσετε τις καταγεγραμμένες εξαρτήσεις για να διορθώσετε τέτοιες διενέξεις εξαρτήσεων, επιτρέποντάς σας να παρέχετε τις προσαρμοσμένες διαμορφώσεις σας σε ModelBuilder. Σημειώστε ότι αυτό είναι μόνο για TorchServe και Triton with InferenceSpec. Για παράδειγμα, μπορείτε να καθορίσετε τις εξαρτήσεις των παραμέτρων εισόδου, που είναι ένα λεξικό Python, στο ModelBuilder ως εξής:

dependency_config = { "auto" = True, "requirements" = "/path/to/your/requirements.txt" "custom" = ["module>=1.2.3,<1.5", "boto3==1.16.*", "some_module@http://some/url"]
} ModelBuilder( # Other params dependencies=dependency_config,
).build()

Ορίζουμε τα ακόλουθα πεδία:

  • αυτόματη – Εάν θα προσπαθήσετε να καταγράψετε αυτόματα τις εξαρτήσεις στο περιβάλλον σας.
  • απαιτήσεις – Μια σειρά από το μονοπάτι προς το δικό σας requirements.txt αρχείο. (Αυτό είναι προαιρετικό.)
  • έθιμο – Μια λίστα με τυχόν άλλες προσαρμοσμένες εξαρτήσεις που θέλετε να προσθέσετε ή να τροποποιήσετε. (Αυτό είναι προαιρετικό.)

Εάν η ίδια ενότητα έχει καθοριστεί σε πολλά σημεία, custom θα έχει ύψιστη προτεραιότητα requirements, να auto θα έχει τη χαμηλότερη προτεραιότητα. Για παράδειγμα, ας πούμε ότι κατά την αυτόματη ανίχνευση, ModelBuilder ανιχνεύει numpy==1.25, και ένα requirements.txt παρέχεται αρχείο που καθορίζει numpy>=1.24,<1.26. Επιπλέον, υπάρχει μια προσαρμοσμένη εξάρτηση: custom = ["numpy==1.26.1"]. Σε αυτήν την περίπτωση, numpy==1.26.1 θα επιλεγεί όταν εγκαταστήσουμε εξαρτήσεις στο κοντέινερ.

εκκαθάριση

Όταν ολοκληρώσετε τη δοκιμή των μοντέλων, ως βέλτιστη πρακτική, διαγράψτε το τελικό σημείο για να εξοικονομήσετε κόστος εάν το τελικό σημείο δεν απαιτείται πλέον. Μπορείτε να ακολουθήσετε το εκκαθάριση ενότητα σε κάθε ένα από τα δοκιμαστικά σημειωματάρια ή χρησιμοποιήστε τον ακόλουθο κώδικα για να διαγράψετε το μοντέλο και το τελικό σημείο που δημιουργήθηκε από την επίδειξη:

predictor.delete_model()
predictor.delete_endpoint()

Συμπέρασμα

Η νέα δυνατότητα SageMaker ModelBuilder απλοποιεί τη διαδικασία ανάπτυξης μοντέλων ML στην παραγωγή στο SageMaker. Χειριζόμενος πολλές από τις περίπλοκες λεπτομέρειες στα παρασκήνια, το ModelBuilder μειώνει την καμπύλη εκμάθησης για νέους χρήστες και μεγιστοποιεί τη χρήση για έμπειρους χρήστες. Με λίγες μόνο γραμμές κώδικα, μπορείτε να αναπτύξετε μοντέλα με ενσωματωμένα πλαίσια όπως τα XGBoost, PyTorch, Triton και Hugging Face, καθώς και μοντέλα που παρέχονται από το SageMaker JumpStart σε ισχυρά, κλιμακούμενα τελικά σημεία στο SageMaker.

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

Ιδιαίτερες ευχαριστίες στους Sirisha Upadhyayala, Raymond Liu, Gary Wang, Dhawal Patel, Deepak Garg και Ram Vegiraju.


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

Συσκευάστε και αναπτύξτε κλασικά ML και LLM εύκολα με το Amazon SageMaker, μέρος 1: Βελτιώσεις PySDK | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Μέλανι Λι, PhD, είναι Senior AI/ML Specialist TAM στο AWS με έδρα το Σίδνεϊ της Αυστραλίας. Βοηθά τους εταιρικούς πελάτες να δημιουργήσουν λύσεις χρησιμοποιώντας υπερσύγχρονα εργαλεία AI/ML στο AWS και παρέχει καθοδήγηση σχετικά με την αρχιτεκτονική και την εφαρμογή λύσεων ML με βέλτιστες πρακτικές. Στον ελεύθερο χρόνο της, της αρέσει να εξερευνά τη φύση και να περνά χρόνο με την οικογένεια και τους φίλους της.

Συσκευάστε και αναπτύξτε κλασικά ML και LLM εύκολα με το Amazon SageMaker, μέρος 1: Βελτιώσεις PySDK | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Μαρκ Καρπ είναι αρχιτέκτονας ML με την ομάδα του Amazon SageMaker Service. Επικεντρώνεται στο να βοηθά τους πελάτες να σχεδιάζουν, να αναπτύσσουν και να διαχειρίζονται φόρτους εργασίας ML σε κλίμακα. Στον ελεύθερο χρόνο του, του αρέσει να ταξιδεύει και να εξερευνά νέα μέρη.

Συσκευάστε και αναπτύξτε κλασικά ML και LLM εύκολα με το Amazon SageMaker, μέρος 1: Βελτιώσεις PySDK | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Σαμ Έντουαρντς, είναι Μηχανικός Cloud (AI/ML) στην AWS Sydney που ειδικεύεται στη μηχανική μάθηση και στο Amazon SageMaker. Είναι παθιασμένος με το να βοηθά τους πελάτες να επιλύουν ζητήματα που σχετίζονται με τις ροές εργασιών μηχανικής εκμάθησης και να δημιουργεί νέες λύσεις για αυτούς. Εκτός δουλειάς, του αρέσει να παίζει ρακέτες και να ταξιδεύει.

Συσκευάστε και αναπτύξτε κλασικά ML και LLM εύκολα με το Amazon SageMaker, μέρος 1: Βελτιώσεις PySDK | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Raghu Ramesha είναι Senior ML Solutions Architect με την ομάδα του Amazon SageMaker Service. Επικεντρώνεται στο να βοηθά τους πελάτες να δημιουργήσουν, να αναπτύξουν και να μεταφέρουν φόρτους εργασίας παραγωγής ML στο SageMaker σε κλίμακα. Ειδικεύεται σε τομείς μηχανικής μάθησης, τεχνητής νοημοσύνης και όρασης υπολογιστών και είναι κάτοχος μεταπτυχιακού τίτλου στην Επιστήμη Υπολογιστών από το UT Dallas. Στον ελεύθερο χρόνο του, του αρέσουν τα ταξίδια και η φωτογραφία.

Συσκευάστε και αναπτύξτε κλασικά ML και LLM εύκολα με το Amazon SageMaker, μέρος 1: Βελτιώσεις PySDK | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Shiva Raaj Kotini εργάζεται ως κύριος διευθυντής προϊόντων στο χαρτοφυλάκιο προϊόντων συμπερασμάτων Amazon SageMaker. Εστιάζει στην ανάπτυξη μοντέλων, τη ρύθμιση απόδοσης και τη βελτιστοποίηση στο SageMaker για συμπεράσματα.

Συσκευάστε και αναπτύξτε κλασικά ML και LLM εύκολα με το Amazon SageMaker, μέρος 1: Βελτιώσεις PySDK | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Μοχάν Γκάντι είναι Ανώτερος Μηχανικός Λογισμικού στην AWS. Είναι με την AWS τα τελευταία 10 χρόνια και έχει εργαστεί σε διάφορες υπηρεσίες AWS όπως EMR, EFA και RDS. Επί του παρόντος, επικεντρώνεται στη βελτίωση της εμπειρίας συμπερασμάτων SageMaker. Στον ελεύθερο χρόνο του, του αρέσει η πεζοπορία και οι μαραθώνιοι.

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

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