Φιλοξενήστε πολλαπλά μοντέλα υπολογιστή TensorFlow με χρήση τελικών σημείων πολλαπλών μοντέλων Amazon SageMaker

Κόμβος πηγής: 1853804

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

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

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

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

Επισκόπηση της λύσης

Τα τελικά σημεία πολλαπλών μοντέλων του SageMaker λειτουργούν με διάφορα πλαίσια, όπως TensorFlow, PyTorch, MXNet και sklearn και μπορείτε δημιουργήστε το δικό σας κοντέινερ με διακομιστή πολλαπλών μοντέλων. Τα τελικά σημεία πολλαπλών μοντέλων υποστηρίζονται επίσης εγγενώς στους ακόλουθους δημοφιλείς ενσωματωμένους αλγόριθμους SageMaker: XGBoost, Γραμμικός μαθητής, Δάσος τυχαίας κοπής (RCF) και K-Κοντινότεροι γείτονες (ΚΝΝ). Μπορείτε να χρησιμοποιήσετε απευθείας τα κοντέινερ που παρέχονται από το SageMaker ενώ χρησιμοποιείτε αυτούς τους αλγόριθμους χωρίς να χρειαστεί να δημιουργήσετε το δικό σας προσαρμοσμένο κοντέινερ.

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

Σε αυτήν την ανάρτηση, δείχνουμε πώς να φιλοξενήσουμε δύο μοντέλα υπολογιστή όρασης που έχουν εκπαιδευτεί χρησιμοποιώντας το πλαίσιο TensorFlow πίσω από ένα μοναδικό τελικό σημείο πολλαπλών μοντέλων SageMaker. Χρησιμοποιούμε το Εξυπηρέτηση TensorFlow κοντέινερ ενεργοποιημένο για πολλά σημεία τερματισμού για να φιλοξενήσει αυτά τα μοντέλα Για το πρώτο μας μοντέλο, εκπαιδεύουμε μια μικρότερη έκδοση του AlexNet CNN για να ταξινομήσετε εικόνες από το CIFAR-10 σύνολο δεδομένων. Για το δεύτερο μοντέλο, χρησιμοποιούμε ένα VGG16 Το μοντέλο CNN προπαρασκευάστηκε στο IMAGEnet σύνολο δεδομένων και προσαρμοσμένο στο Σύνολο δεδομένων ψηφίων νοηματικής γλώσσας για ταξινόμηση εικόνων συμβόλων χεριών. Παρέχουμε επίσης μια πλήρως λειτουργική σημειωματάριο για να δείξουμε όλα τα βήματα.

Μοντέλο 1: Ταξινόμηση εικόνας CIFAR-10

Το CIFAR-10 είναι ένα σύνολο δεδομένων αναφοράς για την ταξινόμηση εικόνας σε όραμα υπολογιστή και ML. Οι εικόνες CIFAR είναι χρωματισμένες (τρία κανάλια) με δραματική παραλλαγή στον τρόπο εμφάνισης των αντικειμένων. Αποτελείται από 32 × 32 έγχρωμες εικόνες σε 10 τάξεις, με 6,000 εικόνες ανά τάξη. Περιέχει 50,000 εικόνες εκπαίδευσης και 10,000 εικόνες δοκιμής. Η παρακάτω εικόνα δείχνει ένα δείγμα των εικόνων που ομαδοποιούνται από τις ετικέτες.

Για να δημιουργήσουμε τον ταξινομητή εικόνας, χρησιμοποιούμε μια απλοποιημένη έκδοση του κλασικού AlexNet CNN. Το δίκτυο αποτελείται από πέντε συνελικτικά και συγκεντρωτικά επίπεδα και τρία πλήρως συνδεδεμένα επίπεδα. Η απλοποιημένη αρχιτεκτονική μας στοιβάζει τρία συνελικτικά στρώματα και δύο πλήρως συνδεδεμένα (πυκνά) στρώματα.

Το πρώτο βήμα είναι να φορτώσετε το σύνολο δεδομένων σε αντικείμενα αμαξοστοιχίας και δοκιμής. Το πλαίσιο TensorFlow παρέχει το σύνολο δεδομένων CIFAR για φόρτωση με τη μέθοδο load_data (). Στη συνέχεια, επαναπροσδιορίζουμε τις εικόνες εισόδου διαιρώντας τις τιμές των pixel με 255: [0,255] ⇒ [0,1]. Πρέπει επίσης να προετοιμάσουμε τις ετικέτες χρησιμοποιώντας κωδικοποίηση one-hot. Μια καυτή κωδικοποίηση είναι μια διαδικασία με την οποία οι κατηγορηματικές μεταβλητές μετατρέπονται σε αριθμητική μορφή. Το παρακάτω απόσπασμα κώδικα εμφανίζει αυτά τα βήματα σε δράση:

from tensorflow.keras.datasets import cifar10 # load dataset
(X_train, y_train), (X_test, y_test) = cifar10.load_data() # rescale input images
X_train = X_train.astype('float32')/255
X_test = X_test.astype('float32')/255 # one hot encode target labels
num_classes = len(np.unique(y_train))
y_train = utils.to_categorical(y_train, num_classes)
y_test = utils.to_categorical(y_test, num_classes)

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

Στο επόμενο βήμα, χρησιμοποιούμε το σενάριο εκπαίδευσης για να δημιουργήσουμε έναν εκτιμητή TensorFlow χρησιμοποιώντας το SageMaker SDK (δείτε τον ακόλουθο κώδικα). Χρησιμοποιούμε τον εκτιμητή για να προσαρμόσουμε το μοντέλο CNN στις εισόδους CIFAR-10. Όταν ολοκληρωθεί η εκπαίδευση, το μοντέλο αποθηκεύεται στο Amazon S3.

from sagemaker.tensorflow import TensorFlow model_name = 'cifar-10' hyperparameters = {'epochs': 50} estimator_parameters = {'entry_point':'cifar_train.py', 'instance_type': 'ml.m5.2xlarge', 'instance_count': 2, 'model_dir': f'/opt/ml/model', 'role': role, 'hyperparameters': hyperparameters, 'output_path': f's3://{BUCKET}/{PREFIX}/cifar_10/out', 'base_job_name': f'mme-cv-{model_name}', 'framework_version': TF_FRAMEWORK_VERSION, 'py_version': 'py37', 'script_mode': True} estimator_1 = TensorFlow(**estimator_parameters) estimator_1.fit(inputs)

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

Μοντέλο 2: Ταξινόμηση ψηφίων νοηματικής γλώσσας

Για το δεύτερο μοντέλο μας, χρησιμοποιούμε το σύνολο δεδομένων ψηφίων νοηματικής γλώσσας. Αυτό το σύνολο δεδομένων διακρίνει τα ψηφία νοηματικής γλώσσας από 0-9. Η παρακάτω εικόνα δείχνει ένα δείγμα του συνόλου δεδομένων.

Το σύνολο δεδομένων περιέχει 100 x 100 εικόνες σε χρώμα RGB και έχει 10 τάξεις (ψηφία 0-9). Το σετ εκπαίδευσης περιέχει 1,712 εικόνες, το σετ επικύρωσης 300 και το σετ δοκιμής 50.

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

Για να εκπαιδεύσουμε αυτό το μοντέλο, χρησιμοποιούμε ένα προκαθορισμένο μοντέλο CNG VGG16 που έχει εκπαιδευτεί στο σύνολο δεδομένων ImageNet και το βελτιώνουμε για να δουλεύουμε στο σύνολο δεδομένων ψηφίων νοηματικής γλώσσας. Ένα προπαρασκευασμένο μοντέλο είναι ένα δίκτυο που έχει προηγουμένως εκπαιδευτεί σε ένα μεγάλο σύνολο δεδομένων, συνήθως σε μια εργασία ταξινόμησης εικόνας μεγάλης κλίμακας. Η αρχιτεκτονική του μοντέλου VGG16 που χρησιμοποιούμε έχει συνολικά 13 συνελικτικά επίπεδα. Για το σύνολο δεδομένων νοηματικής γλώσσας, επειδή ο τομέας του είναι διαφορετικός από τον τομέα προέλευσης του συνόλου δεδομένων ImageNet, ρυθμίζουμε μόνο τα τελευταία επίπεδα. Το Fine-tuning εδώ αναφέρεται στο πάγωμα μερικών από τα επίπεδα δικτύου που χρησιμοποιούνται για την εξαγωγή χαρακτηριστικών και την από κοινού εκπαίδευση τόσο των μη κατεψυγμένων επιπέδων όσο και των πρόσφατα προστιθέμενων επιπέδων ταξινόμησης του προπαρασκευασμένου μοντέλου.

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

Στη συνέχεια, χρησιμοποιούμε αυτό το σενάριο εκπαίδευσης για να δημιουργήσουμε έναν εκτιμητή TensorFlow χρησιμοποιώντας το SageMaker SDK. Αυτός ο εκτιμητής χρησιμοποιείται για να ταιριάζει με τον ταξινομητή ψηφίων νοηματικής γλώσσας στις παρεχόμενες εισόδους. Όταν ολοκληρωθεί η εκπαίδευση, το μοντέλο αποθηκεύεται στο Amazon S3 για να φιλοξενείται από τα τελικά σημεία πολλαπλών μοντέλων του SageMaker. Δείτε τον ακόλουθο κωδικό:

model_name = 'sign-language' hyperparameters = {'epochs': 50} estimator_parameters = {'entry_point':'sign_language_train.py', 'instance_type': 'ml.m5.2xlarge', 'instance_count': 2, 'hyperparameters': hyperparameters, 'model_dir': f'/opt/ml/model', 'role': role, 'output_path': f's3://{BUCKET}/{PREFIX}/sign_language/out', 'base_job_name': f'cv-{model_name}', 'framework_version': TF_FRAMEWORK_VERSION, 'py_version': 'py37', 'script_mode': True} estimator_2 = TensorFlow(**estimator_parameters) estimator_2.fit({'train': train_input, 'val': val_input})

Αναπτύξτε ένα τελικό σημείο πολλαπλών μοντέλων

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

Για να δημιουργήσουμε το τελικό σημείο πολλαπλών μοντέλων, πρώτα πρέπει να αντιγράψουμε τα εκπαιδευμένα μοντέλα για τους μεμονωμένους εκτιμητές (1 και 2) από τις αποθηκευμένες θέσεις S3 σε ένα κοινό πρόθεμα S3 που μπορεί να χρησιμοποιηθεί από το τελικό σημείο πολλαπλών μοντέλων:

tf_model_1 = estimator_1.model_data
output_1 = f's3://{BUCKET}/{PREFIX}/mme/cifar.tar.gz' tf_model_2 = estimator_2.model_data
output_2 = f's3://{BUCKET}/{PREFIX}/mme/sign-language.tar.gz' !aws s3 cp {tf_model_1} {output_1}
!aws s3 cp {tf_model_2} {output_2}

Αφού τα μοντέλα αντιγραφούν στην κοινή θέση που ορίζεται από το πρόθεμα S3, δημιουργούμε ένα μοντέλο εξυπηρέτησης χρησιμοποιώντας την τάξη TensorFlowModel από το SageMaker SDK. Το μοντέλο προβολής έχει δημιουργηθεί για ένα από τα μοντέλα που θα φιλοξενηθούν στο τελικό σημείο πολλαπλών μοντέλων. Σε αυτήν την περίπτωση, χρησιμοποιούμε το πρώτο μοντέλο (τον ταξινομητή εικόνας CIFAR-10). Στη συνέχεια, χρησιμοποιούμε την κλάση MultiDataModel από το SageMaker SDK για να δημιουργήσουμε ένα μοντέλο δεδομένων πολλαπλών μοντέλων χρησιμοποιώντας το μοντέλο εξυπηρέτησης για το μοντέλο-1, το οποίο δημιουργήσαμε στο προηγούμενο βήμα:

from sagemaker.tensorflow.serving import TensorFlowModel
from sagemaker.multidatamodel import MultiDataModel model_1 = TensorFlowModel(model_data=output_1, role=role, image_uri=IMAGE_URI) mme = MultiDataModel(name=f'mme-tensorflow-{current_time}', model_data_prefix=model_data_prefix, model=model_1, sagemaker_session=sagemaker_session)

Τέλος, αναπτύσσουμε το MultiDataModel καλώντας τη μέθοδο ανάπτυξης (), παρέχοντας τα χαρακτηριστικά που απαιτούνται για τη δημιουργία της υποδομής φιλοξενίας που απαιτείται για την υποστήριξη του τελικού σημείου πολλαπλών μοντέλων:

predictor = mme.deploy(initial_instance_count=2, instance_type='ml.m5.2xlarge', endpoint_name=f'mme-tensorflow-{current_time}')

Η κλήση ανάπτυξης επιστρέφει μια παρουσία πρόβλεψης, την οποία μπορούμε να χρησιμοποιήσουμε για την πραγματοποίηση κλήσεων συμπερασμάτων. Το βλέπουμε στην επόμενη ενότητα.

Δοκιμάστε το τελικό σημείο πολλαπλών μοντέλων για συμπεράσματα σε πραγματικό χρόνο

Τα τελικά σημεία πολλαπλών μοντέλων επιτρέπουν την κοινή χρήση πόρων μνήμης στα μοντέλα σας. Εάν το μοντέλο προς αναφορά έχει ήδη αποθηκευτεί στην κρυφή μνήμη, τα τελικά σημεία πολλαπλών μοντέλων εκτελούν αμέσως συμπεράσματα. Από την άλλη πλευρά, εάν το συγκεκριμένο μοντέλο που ζητήθηκε δεν είναι προσωρινά αποθηκευμένο, το SageMaker πρέπει να κατεβάσει το μοντέλο, γεγονός που αυξάνει την καθυστέρηση για αυτό το αρχικό αίτημα. Ωστόσο, αυτό διαρκεί μόνο ένα μικρό μέρος του χρόνου που θα χρειαζόταν για να ξεκινήσει μια εντελώς νέα υποδομή (παρουσίες) για να φιλοξενήσει το μοντέλο ξεχωριστά στο SageMaker. Μετά την προσωρινή αποθήκευση ενός μοντέλου στο τελικό σημείο πολλαπλών μοντέλων, τα επόμενα αιτήματα ξεκινούν σε πραγματικό χρόνο (εκτός εάν καταργηθεί το μοντέλο). Ως αποτέλεσμα, μπορείτε να εκτελέσετε πολλά μοντέλα από μία μόνο παρουσία, αποσυνδέοντας αποτελεσματικά την ποσότητα των μοντέλων μας από το κόστος ανάπτυξης. Αυτό διευκολύνει τη διαχείριση των αναπτύξεων ML σε κλίμακα και μειώνει το κόστος ανάπτυξης του μοντέλου σας μέσω της αυξημένης χρήσης του τελικού σημείου και των υποκείμενων παρουσιών υπολογισμού. Για περισσότερες πληροφορίες και μια επίδειξη εξοικονόμησης κόστους άνω του 90% για παράδειγμα 1,000 μοντέλων, δείτε Εξοικονομήστε κόστος συμπερασμάτων χρησιμοποιώντας τα τελικά σημεία πολλαπλών μοντέλων του Amazon SageMaker.

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

Ας δούμε πώς να κάνουμε ένα συμπέρασμα από τον ταξινομητή εικόνας CIFAR-10 (μοντέλο-1) που φιλοξενείται κάτω από το τελικό σημείο πολλαπλών μοντέλων. Κατ 'αρχάς, φορτώνουμε ένα δείγμα εικόνας από μία από τις κλάσεις - αεροπλάνο - και προετοιμάζουμε να σταλεί στο τελικό σημείο πολλαπλών μοντέλων χρησιμοποιώντας την πρόβλεψη που δημιουργήσαμε στο προηγούμενο βήμα.

Με αυτήν την πρόβλεψη, μπορούμε να καλέσουμε τη μέθοδο πρόβλεψης () μαζί με την παράμετρο initial_args, η οποία καθορίζει το όνομα του μοντέλου στόχου που θα επικαλεσθεί. Σε αυτήν την περίπτωση, το μοντέλο-στόχος είναι το cifar.tar.gz. Το παρακάτω απόσπασμα δείχνει λεπτομερώς αυτήν τη διαδικασία:

img = load_img('./data/cifar_10/raw_images/airplane.png', target_size=(32, 32))
data = img_to_array(img)
data = data.astype('float32')
data = data / 255.0
data = data.reshape(1, 32, 32, 3)
payload = {'instances': data}
y_pred = predictor.predict(data=payload, initial_args={'TargetModel': 'cifar.tar.gz'})
predicted_label = CIFAR10_LABELS[np.argmax(y_pred)]
print(f'Predicted Label: [{predicted_label}]')

Η εκτέλεση του προηγούμενου κώδικα επιστρέφει την έξοδο πρόβλεψης ως το αεροπλάνο της ετικέτας, το οποίο ερμηνεύεται σωστά από το μοντέλο που προβάλλεται:

Predicted Label: [airplane]

Στη συνέχεια, ας δούμε πώς να φορτώσουμε δυναμικά τον ταξινομητή ψηφίων νοηματικής γλώσσας (μοντέλο-2) σε ένα τελικό σημείο πολλών μοντέλων, επικαλούμενος το τελικό σημείο με το sign-language.tar.gz ως μοντέλο-στόχο.

Χρησιμοποιούμε το ακόλουθο δείγμα εικόνας του ψηφίου χειρογράφου 0.

Το παρακάτω απόσπασμα δείχνει πώς να καλέσετε το τελικό σημείο πολλαπλών μοντέλων με το δείγμα εικόνας για να λάβετε τη σωστή απόκριση:

test_path = './data/sign_language/test'
img = mpimg.imread(f'{test_path}/0/IMG_4159.JPG') def path_to_tensor(img_path): # loads RGB image as PIL.Image.Image type img = image.load_img(img_path, target_size=(224, 224)) # convert PIL.Image.Image type to 3D tensor with shape (224, 224, 3) x = image.img_to_array(img) # convert 3D tensor to 4D tensor with shape (1, 224, 224, 3) and return 4D tensor return np.expand_dims(x, axis=0) data = path_to_tensor(f'{test_path}/0/IMG_4159.JPG')
payload = {'instances': data}
y_pred = predictor.predict(data=payload, initial_args={'TargetModel': 'sign-language.tar.gz'})predicted_label = np.argmax(y_pred)
print(f'Predicted Label: [{predicted_label}]')

Ο παρακάτω κώδικας είναι η απάντησή μας, με την ετικέτα 0:

Predicted Label: [0]

Συμπέρασμα

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

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

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


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

Arunprasath Shankar είναι ένας αρχιτέκτονας ειδικών λύσεων τεχνητής νοημοσύνης και μηχανικής μάθησης (AI / ML) με το AWS, βοηθώντας τους παγκόσμιους πελάτες να κλιμακώσουν τις λύσεις AI αποτελεσματικά και αποδοτικά στο cloud. Στον ελεύθερο χρόνο του, ο Arun απολαμβάνει να παρακολουθεί ταινίες sci-fi και να ακούει κλασική μουσική.

Μαρκ Ρόι είναι ένας κύριος αρχιτέκτονας μηχανικής μάθησης για AWS, βοηθώντας τους πελάτες AWS να σχεδιάσουν και να δημιουργήσουν λύσεις AI / ML. Το έργο του Mark καλύπτει ένα ευρύ φάσμα περιπτώσεων χρήσης ML, με πρωταρχικό ενδιαφέρον για την όραση του υπολογιστή, τη βαθιά μάθηση και την κλιμάκωση του ML σε ολόκληρη την επιχείρηση. Έχει βοηθήσει εταιρείες σε πολλούς κλάδους, συμπεριλαμβανομένων των ασφαλίσεων, των χρηματοοικονομικών υπηρεσιών, των μέσων ενημέρωσης και της ψυχαγωγίας, της υγειονομικής περίθαλψης, των βοηθητικών υπηρεσιών και της μεταποίησης. Ο Mark κατέχει έξι πιστοποιήσεις AWS, συμπεριλαμβανομένης της πιστοποίησης ML Speciality. Πριν από την ένταξή του στο AWS, ο Mark ήταν αρχιτέκτονας, προγραμματιστής και ηγέτης της τεχνολογίας για 25+ χρόνια, συμπεριλαμβανομένων 19 ετών σε χρηματοοικονομικές υπηρεσίες.

Πηγή: https://aws.amazon.com/blogs/machine-learning/host-multiple-tensorflow-computer-vision-models-using-amazon-sagemaker-multi-model-endpoints/

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

Περισσότερα από Ιστολόγιο μηχανικής εκμάθησης AWS