Επίτευξη υψηλών επιδόσεων σε κλίμακα για προβολή μοντέλων χρησιμοποιώντας τερματικά σημεία πολλαπλών μοντέλων Amazon SageMaker με GPU

Επίτευξη υψηλών επιδόσεων σε κλίμακα για προβολή μοντέλων χρησιμοποιώντας τερματικά σημεία πολλαπλών μοντέλων Amazon SageMaker με GPU

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

Τον Νοέμβριο του 2022, Τα MME πρόσθεσαν υποστήριξη για GPUs, το οποίο σας επιτρέπει να εκτελείτε πολλά μοντέλα σε μία συσκευή GPU και να κλιμακώνετε παρουσίες GPU πίσω από ένα μόνο τελικό σημείο. Αυτό ικανοποιεί την ισχυρή ζήτηση MME για μοντέλα βαθιάς νευρωνικών δικτύων (DNN) που επωφελούνται από τον επιταχυνόμενο υπολογισμό με GPU. Αυτά περιλαμβάνουν την όραση υπολογιστή (CV), την επεξεργασία φυσικής γλώσσας (NLP) και τα μοντέλα γενετικής τεχνητής νοημοσύνης. Οι λόγοι της ζήτησης περιλαμβάνουν τα ακόλουθα:

  • Τα μοντέλα DNN είναι συνήθως μεγάλα σε μέγεθος και πολυπλοκότητα και συνεχίζουν να αναπτύσσονται με γρήγορους ρυθμούς. Λαμβάνοντας ως παράδειγμα τα μοντέλα NLP, πολλά από αυτά υπερβαίνουν τα δισεκατομμύρια παραμέτρους, γεγονός που απαιτεί από τις GPU να ικανοποιούν απαιτήσεις χαμηλής καθυστέρησης και υψηλής απόδοσης.
  • Παρατηρήσαμε μια αυξημένη ανάγκη για προσαρμογή αυτών των μοντέλων για την παροχή υπερ-εξατομικευμένων εμπειριών σε μεμονωμένους χρήστες. Καθώς η ποσότητα αυτών των μοντέλων αυξάνεται, υπάρχει ανάγκη για μια ευκολότερη λύση για την ανάπτυξη και τη λειτουργία πολλών μοντέλων σε κλίμακα.
  • Οι παρουσίες GPU είναι ακριβές και θέλετε να επαναχρησιμοποιήσετε αυτές τις παρουσίες όσο το δυνατόν περισσότερο για να μεγιστοποιήσετε τη χρήση της GPU και να μειώσετε το λειτουργικό κόστος.

Παρόλο που όλοι αυτοί οι λόγοι υποδεικνύουν ότι τα MME με GPU ως ιδανική επιλογή για μοντέλα DNN, συνιστάται να πραγματοποιήσετε δοκιμή φόρτωσης για να βρείτε τη σωστή διαμόρφωση τελικού σημείου που ικανοποιεί τις απαιτήσεις σας σε περίπτωση χρήσης. Πολλοί παράγοντες μπορούν να επηρεάσουν τα αποτελέσματα δοκιμών φορτίου, όπως ο τύπος του στιγμιότυπου, ο αριθμός των περιπτώσεων, το μέγεθος του μοντέλου και η αρχιτεκτονική του μοντέλου. Επιπλέον, η δοκιμή φόρτωσης μπορεί να βοηθήσει στην καθοδήγηση των στρατηγικών αυτόματης κλιμάκωσης χρησιμοποιώντας τις σωστές μετρήσεις αντί για επαναληπτικές μεθόδους δοκιμής και σφάλματος.

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

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

Για μια εισαγωγή στα MME και MME με GPU, ανατρέξτε στο Δημιουργήστε ένα τελικό σημείο πολλαπλών μοντέλων και Εκτελέστε πολλά μοντέλα βαθιάς εκμάθησης σε GPU με τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker. Για το πλαίσιο της δοκιμής φόρτωσης σε αυτήν την ανάρτηση, μπορείτε να κάνετε λήψη του δείγματος του κώδικα μας από το GitHub repo για να αναπαράγετε τα αποτελέσματα ή να το χρησιμοποιήσετε ως πρότυπο για να αξιολογήσετε τα δικά σας μοντέλα. Υπάρχουν δύο σημειωματάρια που παρέχονται στο repo: ένα για μοντέλα βιογραφικών δοκιμών φορτίου και ένα για NLP. Αρκετά μοντέλα διαφορετικών μεγεθών και αρχιτεκτονικών συγκρίθηκαν σε διαφορετικούς τύπους παρουσιών GPU: ml.g4dn.2xlarge, ml.g5.2xlarge και ml.p3.2xlarge. Αυτό θα πρέπει να παρέχει μια λογική διατομή απόδοσης στις ακόλουθες μετρήσεις για κάθε παρουσία και τύπο μοντέλου:

  • Μέγιστος αριθμός μοντέλων που μπορούν να φορτωθούν στη μνήμη GPU
  • Ο λανθάνοντας χρόνος απόκρισης από άκρο σε άκρο παρατηρείται στην πλευρά του πελάτη για κάθε ερώτημα συμπερασμάτων
  • Μέγιστη απόδοση ερωτημάτων ανά δευτερόλεπτο που μπορεί να επεξεργαστεί το τελικό σημείο χωρίς σφάλμα
  • Μέγιστος τρέχων χρηστών ανά παρουσία πριν παρατηρηθεί αποτυχημένο αίτημα

Ο παρακάτω πίνακας παραθέτει τα μοντέλα που δοκιμάστηκαν.

Χρήση θήκης Όνομα μοντέλου Μέγεθος στο δίσκο Αριθμός παραμέτρων
CV resnet50 100Mb 25M
CV convnext_base 352Mb 88M
CV vit_large_patch16_224 1.2Gb 304M
NLP bert-base-uncased 436Mb 109M
NLP roberta-large 1.3Gb 335M

Ο παρακάτω πίνακας παραθέτει τις παρουσίες GPU που δοκιμάστηκαν.

Τύπος συμβολής Τύπος GPU Αριθμός GPU Μνήμη GPU (GiB)
ml.g4dn.2xlarge GPU NVIDIA T4 1 16
ml.g5.2xμεγάλο GPU NVIDIA A10G Tensor Core 1 24
ml.p3.2xlarge GPU NVIDIA® V100 Tensor Core 1 16

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

Λάβετε υπόψη ότι τα MME προς το παρόν υποστηρίζουν μόνο μεμονωμένες περιπτώσεις GPU. Για τη λίστα των υποστηριζόμενων τύπων παρουσιών, ανατρέξτε στο Υποστηριζόμενοι αλγόριθμοι, πλαίσια και παρουσίες.

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

  1. Ανακτήστε ένα προεκπαιδευμένο μοντέλο από ένα κέντρο μοντέλων.
  2. Προετοιμάστε το τεχνούργημα μοντέλου για προβολή σε SageMaker MME (βλ Εκτελέστε πολλά μοντέλα βαθιάς εκμάθησης σε GPU με τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker Για περισσότερες πληροφορίες).
  3. Αναπτύξτε ένα SageMaker MME σε μια παρουσία GPU.
  4. Προσδιορίστε τον μέγιστο αριθμό μοντέλων που μπορούν να φορτωθούν στη μνήμη GPU εντός ενός καθορισμένου ορίου.
  5. Χρησιμοποιήστε το Locust Load Testing Framework για να προσομοιώσετε επισκεψιμότητα που τυχαία καλεί μοντέλα που έχουν φορτωθεί στο στιγμιότυπο.
  6. Συλλέξτε δεδομένα και αναλύστε τα αποτελέσματα.
  7. Προαιρετικά, επαναλάβετε τα βήματα 2–6 μετά τη μεταγλώττιση του μοντέλου στο TensorRT.

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

Προσομοίωση κίνησης χρηστών

Αφού προσδιορίσουμε τον αριθμό των μοντέλων, μπορούμε να εκτελέσουμε μια δοκιμή φόρτωσης χρησιμοποιώντας το Locust Load Testing Framework. Η δοκιμή φόρτωσης προσομοιώνει αιτήματα χρηστών σε τυχαία μοντέλα και μετρά αυτόματα μετρήσεις όπως ο λανθάνοντας χρόνος απόκρισης και η απόδοση.

Το Locust υποστηρίζει προσαρμοσμένα σχήματα δοκιμής φόρτωσης που σας επιτρέπουν να ορίσετε προσαρμοσμένα μοτίβα κυκλοφορίας. Το σχήμα που χρησιμοποιήθηκε σε αυτό το σημείο αναφοράς φαίνεται στο παρακάτω διάγραμμα. Στα πρώτα 30 δευτερόλεπτα, το τελικό σημείο θερμαίνεται με 10 ταυτόχρονους χρήστες. Μετά από 30 δευτερόλεπτα, δημιουργούνται νέοι χρήστες με ρυθμό δύο ανά δευτερόλεπτο, φτάνοντας τους 20 ταυτόχρονους χρήστες στο σημείο των 40 δευτερολέπτων. Στη συνέχεια, το τελικό σημείο συγκρίνεται σταθερά με 20 ταυτόχρονους χρήστες μέχρι το σημείο των 60 δευτερολέπτων, οπότε το Locust αρχίζει και πάλι να αυξάνει τους χρήστες με δύο ανά δευτερόλεπτο μέχρι τους 40 ταυτόχρονους χρήστες. Αυτό το μοτίβο αύξησης και σταθερής δοκιμής επαναλαμβάνεται έως ότου το τελικό σημείο αυξηθεί σε 200 ταυτόχρονους χρήστες. Ανάλογα με την περίπτωση χρήσης σας, μπορεί να θέλετε να προσαρμόσετε το σχήμα δοκιμής φόρτωσης στο locust_benchmark_sm.py για να αντικατοπτρίζει με μεγαλύτερη ακρίβεια τα αναμενόμενα μοτίβα επισκεψιμότητας. Για παράδειγμα, εάν σκοπεύετε να φιλοξενήσετε μοντέλα μεγαλύτερων γλωσσών, μια δοκιμή φόρτωσης με 200 ταυτόχρονους χρήστες ενδέχεται να μην είναι εφικτή για ένα μοντέλο που φιλοξενείται σε μία μόνο παρουσία και, επομένως, μπορεί να θέλετε να μειώσετε τον αριθμό χρηστών ή να αυξήσετε τον αριθμό των παρουσιών. Μπορεί επίσης να θέλετε να παρατείνετε τη διάρκεια της δοκιμής φορτίου για να μετρήσετε με μεγαλύτερη ακρίβεια τη σταθερότητα του τελικού σημείου για μεγαλύτερο χρονικό διάστημα.

stages = [
{"duration": 30, "users": 10, "spawn_rate": 5},
{"duration": 60, "users": 20, "spawn_rate": 1},
{"duration": 90, "users": 40, "spawn_rate": 2},
…
]

Επιτύχετε υψηλή απόδοση σε κλίμακα για την εξυπηρέτηση μοντέλων χρησιμοποιώντας τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker με το GPU PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

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

Συγκριτικά αποτελέσματα για μοντέλα βιογραφικών

Χρησιμοποιήστε το σημειωματάριο cv-benchmark.ipynb για να εκτελέσετε δοκιμές φόρτωσης για μοντέλα υπολογιστικής όρασης. Μπορείτε να προσαρμόσετε τις παραμέτρους του προεκπαιδευμένου ονόματος μοντέλου και του τύπου στιγμιότυπου για τη δοκιμή φόρτου απόδοσης σε διαφορετικούς συνδυασμούς μοντέλων και τύπων παρουσίας. Δοκιμάσαμε σκόπιμα τρία μοντέλα βιογραφικών σε διαφορετικές σειρές μεγεθών από το μικρότερο έως το μεγαλύτερο: resnet50 (25 εκατ.), convnext_base (88M), και vit_large_patch16_224 (304Μ). Ίσως χρειαστεί να προσαρμοστείτε στον κώδικα, εάν επιλέξετε ένα μοντέλο εκτός αυτής της λίστας. Επιπλέον, ο φορητός υπολογιστής ορίζει προεπιλογή το σχήμα εικόνας εισόδου σε τανυστήρα εικόνας 224x224x3. Θυμηθείτε να προσαρμόσετε ανάλογα το σχήμα εισόδου, εάν χρειάζεται να κάνετε συγκριτική αξιολόγηση μοντέλων που λαμβάνουν εικόνα διαφορετικού μεγέθους.

Αφού εκτελέσετε ολόκληρο το σημειωματάριο, θα λάβετε πολλές απεικονίσεις ανάλυσης απόδοσης. Οι δύο πρώτες περιγράφουν λεπτομερώς την απόδοση του μοντέλου σε σχέση με την αύξηση των ταυτόχρονων χρηστών. Τα παρακάτω σχήματα είναι τα παραδείγματα οπτικοποιήσεων που δημιουργήθηκαν για το ResNet50 μοντέλο που εκτελείται σε ml.g4dn.2xlarge, συγκρίνοντας το PyTorch (αριστερά) με το TensorRT (δεξιά). Τα γραφήματα της επάνω γραμμής δείχνουν την καθυστέρηση και την απόδοση του μοντέλου στον άξονα y με αυξανόμενους αριθμούς ταυτόχρονων εργαζομένων πελατών που αντανακλώνται στον άξονα x. Τα γραφήματα κάτω ράβδων δείχνουν τον αριθμό των επιτυχημένων και αποτυχημένων αιτημάτων.

Επιτύχετε υψηλή απόδοση σε κλίμακα για την εξυπηρέτηση μοντέλων χρησιμοποιώντας τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker με το GPU PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Εξετάζοντας όλα τα μοντέλα υπολογιστικής όρασης που δοκιμάσαμε, παρατηρήσαμε τα εξής:

  • Η καθυστέρηση (σε χιλιοστά του δευτερολέπτου) είναι υψηλότερη και η απόδοση (αιτήματα ανά δευτερόλεπτο) είναι χαμηλότερη για μεγαλύτερα μοντέλα (resnet50 > convnext_base > vit_large_patch16_224).
  • Η αύξηση της καθυστέρησης είναι ανάλογη με τον αριθμό των χρηστών, καθώς περισσότερα αιτήματα βρίσκονται στην ουρά στον διακομιστή συμπερασμάτων.
  • Τα μεγάλα μοντέλα καταναλώνουν περισσότερους υπολογιστικούς πόρους και μπορούν να φτάσουν τα μέγιστα όρια απόδοσης με λιγότερους χρήστες από ένα μικρότερο μοντέλο. Αυτό παρατηρείται με το vit_large_patch16_224 μοντέλο, το οποίο κατέγραψε το πρώτο αποτυχημένο αίτημα σε 140 ταυτόχρονους χρήστες. Όντας σημαντικά μεγαλύτερο από τα άλλα δύο μοντέλα που δοκιμάστηκαν, είχε και τα περισσότερα συνολικά αποτυχημένα αιτήματα σε υψηλότερο ταυτόχρονο. Αυτό είναι ένα σαφές μήνυμα ότι το τελικό σημείο θα πρέπει να κλιμακωθεί πέρα ​​από μια μεμονωμένη παρουσία, εάν η πρόθεση είναι να υποστηρίξει περισσότερους από 140 ταυτόχρονους χρήστες.

Επιτύχετε υψηλή απόδοση σε κλίμακα για την εξυπηρέτηση μοντέλων χρησιμοποιώντας τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker με το GPU PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Στο τέλος της εκτέλεσης του σημειωματάριου, λαμβάνετε επίσης μια συνοπτική σύγκριση των μοντέλων PyTorch έναντι TensorRT για καθεμία από τις τέσσερις βασικές μετρήσεις. Από τις δοκιμές αναφοράς μας, όλα τα μοντέλα βιογραφικών είδαν μια ώθηση στην απόδοση των μοντέλων μετά τη συλλογή του TensorRT. Παίρνοντας το δικό μας ResNet50 και πάλι ως παράδειγμα, η καθυστέρηση μειώθηκε κατά 32%, ενώ η απόδοση αυξήθηκε κατά 18%. Αν και ο μέγιστος αριθμός ταυτόχρονων χρηστών παρέμεινε ο ίδιος για ResNet50, και τα δύο άλλα μοντέλα παρουσίασαν βελτίωση κατά 14% στον αριθμό των ταυτόχρονων χρηστών που μπορούν να υποστηρίξουν. Η βελτίωση της απόδοσης του TensorRT, ωστόσο, έγινε εις βάρος της υψηλότερης χρήσης μνήμης, με αποτέλεσμα λιγότερα μοντέλα να φορτώνονται από MME. Ο αντίκτυπος είναι περισσότερο για μοντέλα που χρησιμοποιούν ένα συνελικτικό νευρωνικό δίκτυο (CNN). Στην πραγματικότητα, το μοντέλο ResNet50 κατανάλωνε περίπου διπλάσια μνήμη GPU από το PyTorch στο TensorRT, με αποτέλεσμα να φορτωθούν 50% λιγότερα μοντέλα (46 έναντι 23). Διαγνώσουμε περαιτέρω αυτή τη συμπεριφορά στην επόμενη ενότητα.

Συγκριτικά αποτελέσματα για μοντέλα NLP

Για τα μοντέλα NLP, χρησιμοποιήστε το σημειωματάριο nlp-benchmark.ipynb για να εκτελέσετε τη δοκιμή φόρτωσης. Η ρύθμιση του φορητού υπολογιστή θα πρέπει να μοιάζει πολύ. Δοκιμάσαμε δύο μοντέλα NLP: bert-base-uncased (109M) και roberta-large (335M). Το προεκπαιδευμένο μοντέλο και το tokenizer λαμβάνονται και τα δύο από το Hugging Face και το δοκιμαστικό ωφέλιμο φορτίο δημιουργείται από το tokenizer χρησιμοποιώντας μια συμβολοσειρά δείγματος. Το μέγιστο μήκος ακολουθίας είναι προεπιλεγμένο στα 128. Εάν χρειάζεται να δοκιμάσετε μεγαλύτερες συμβολοσειρές, θυμηθείτε να προσαρμόσετε αυτήν την παράμετρο. Διατρέχοντας το σημειωματάριο NLP δημιουργείται το ίδιο σύνολο οπτικοποιήσεων: Pytorch (αριστερά) vs TensorRT (δεξιά).

Επιτύχετε υψηλή απόδοση σε κλίμακα για την εξυπηρέτηση μοντέλων χρησιμοποιώντας τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker με το GPU PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.
Επιτύχετε υψηλή απόδοση σε κλίμακα για την εξυπηρέτηση μοντέλων χρησιμοποιώντας τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker με το GPU PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

Από αυτά, παρατηρήσαμε ακόμη περισσότερα οφέλη απόδοσης του TensorRT για μοντέλα NLP. Λαμβάνοντας το roberta-large μοντέλο σε μια περίπτωση ml.g4dn.2xlarge, για παράδειγμα, η καθυστέρηση συμπερασμάτων μειώθηκε δραματικά από 180 χιλιοστά του δευτερολέπτου σε 56 χιλιοστά του δευτερολέπτου (70% βελτίωση), ενώ η απόδοση βελτιώθηκε κατά 406% από 33 αιτήματα ανά δευτερόλεπτο σε 167. Επιπλέον, ο μέγιστος αριθμός ταυτόχρονων Οι χρήστες αυξήθηκαν κατά 50%· Τα αποτυχημένα αιτήματα δεν παρατηρήθηκαν έως ότου φτάσαμε τους 180 ταυτόχρονους χρήστες, σε σύγκριση με 120 για το αρχικό μοντέλο PyTorch. Όσον αφορά τη χρήση της μνήμης, είδαμε ένα λιγότερο μοντέλο να φορτώνεται για το TensorRT (από εννέα μοντέλα σε οκτώ). Ωστόσο, ο αρνητικός αντίκτυπος είναι πολύ μικρότερος σε σύγκριση με αυτό που παρατηρήσαμε με τα μοντέλα που βασίζονται στο CNN.

Ανάλυση αξιοποίησης μνήμης

Ο παρακάτω πίνακας δείχνει την πλήρη ανάλυση σχετικά με τον αντίκτυπο της χρήσης μνήμης από το PyTorch στο TensorRT. Αναφέραμε νωρίτερα ότι τα μοντέλα που βασίζονται στο CNN επηρεάζονται πιο αρνητικά. ο ResNet50 μοντέλο είχε πάνω από 50% μείωση στον αριθμό των μοντέλων που φορτώθηκαν και στους τρεις τύπους παρουσιών GPU. Convnext_base είχε ακόμη μεγαλύτερη μείωση κατά 70% περίπου. Από την άλλη πλευρά, η πρόσκρουση στα μοντέλα μετασχηματιστών είναι μικρή ή μικτή. vit_large_patch16_224 και roberta-large είχε μέση μείωση περίπου 20% και 3%, αντίστοιχα, ενώ bert-base-uncased είχε βελτίωση περίπου 40%.

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

Περίπτωση χρήσης ML Αρχιτεκτονική Όνομα μοντέλου Τύπος συμβολής Πλαίσιο Max Models Loaded Διαφορά (%) Μέσος όρος Διαφορά (%)
CV CNN Resnet50 ml.g4dn.2xlarge PyTorch 46 -50% -50%
TensorRT 23
ml.g5.2xμεγάλο PyTorch 70 -51%
TensorRT 34
ml.p3.2xlarge PyTorch 49 -51%
TensorRT 24
Convnext_base ml.g4dn.2xlarge PyTorch 33 -50% -70%
TensorRT 10
ml.g5.2xμεγάλο PyTorch 50 -70%
TensorRT 16
ml.p3.2xlarge PyTorch 35 -69%
TensorRT 11
Μετασχηματιστής vit_large_patch16_224 ml.g4dn.2xlarge PyTorch 10 -30% -20%
TensorRT 7
ml.g5.2xμεγάλο PyTorch 15 -13%
TensorRT 13
ml.p3.2xlarge PyTorch 11 -18%
TensorRT 9
NLP Roberta-large ml.g4dn.2xlarge PyTorch 9 -11% -3%
TensorRT 8
ml.g5.2xμεγάλο PyTorch 13 0%
TensorRT 13
ml.p3.2xlarge PyTorch 9 0%
TensorRT 9
Bert-base-uncased ml.g4dn.2xlarge PyTorch 26 62% 40%
TensorRT 42
ml.g5.2xμεγάλο PyTorch 39 28%
TensorRT 50
ml.p3.2xlarge PyTorch 28 29%
TensorRT 36

Οι παρακάτω πίνακες παραθέτουν τα πλήρη αποτελέσματα συγκριτικής αξιολόγησης για όλες τις μετρήσεις και στους τρεις τύπους παρουσιών GPU.

ml.g4dn.2xlarge

Χρήση θήκης Αρχιτεκτονική Όνομα μοντέλου Αριθμός παραμέτρων Πλαίσιο Max Models Loaded Διαφορά (%) Καθυστέρηση (ms) Διαφορά (%) Διανομή (qps) Διαφορά (%) Μέγιστος ταυτόχρονος χρήστης Διαφορά (%)
CV CNN resnet50 25M PyTorch 46 -50% 164 -32% 120 18% 180 NA
TensorRT 23 . 111 . 142 . 180 .
convnext_base 88M PyTorch 33 -70% 154 -22% 64 102% 140 14%
TensorRT 10 . 120 . 129 . 160 .
Μετασχηματιστής vit_large_patch16_224 304M PyTorch 10 -30% 425 -69% 26 304% 140 14%
TensorRT 7 . 131 . 105 . 160 .
NLP bert-base-uncased 109M PyTorch 26 62% 70 -39% 105 142% 140 29%
TensorRT 42 . 43 . 254 . 180 .
roberta-large 335M PyTorch 9 -11% 187 -70% 33 406% 120 50%
TensorRT 8 . 56 . 167 . 180 .

ml.g5.2xμεγάλο

Χρήση θήκης Αρχιτεκτονική Όνομα μοντέλου Αριθμός παραμέτρων Πλαίσιο Max Models Loaded Διαφορά (%) Καθυστέρηση (ms) Διαφορά (%) Διανομή (qps) Διαφορά (%) Μέγιστος ταυτόχρονος χρήστης Διαφορά (%)
CV CNN resnet50 25M PyTorch 70 -51% 159 -31% 146 14% 180 11%
TensorRT 34 . 110 . 166 . 200 .
convnext_base 88M PyTorch 50 -68% 149 -23% 134 13% 180 0%
TensorRT 16 . 115 . 152 . 180 .
Μετασχηματιστής vit_large_patch16_224 304M PyTorch 15 -13% 149 -22% 105 35% 160 25%
TensorRT 13 . 116 . 142 . 200 .
NLP bert-base-uncased 109M PyTorch 39 28% 65 -29% 183 38% 180 11%
TensorRT 50 . 46 . 253 . 200 .
roberta-large 335M PyTorch 13 0% 97 -38% 121 46% 140 14%
TensorRT 13 . 60 . 177 . 160 .

ml.p3.2xlarge

Χρήση θήκης Αρχιτεκτονική Όνομα μοντέλου Αριθμός παραμέτρων Πλαίσιο Max Models Loaded Διαφορά (%) Καθυστέρηση (ms) Διαφορά (%) Διανομή (qps) Διαφορά (%) Μέγιστος ταυτόχρονος χρήστης Διαφορά (%)
CV CNN resnet50 25M PyTorch 49 -51% 197 -41% 94 18% 160 -12%
TensorRT 24 . 117 . 111 . 140 .
convnext_base 88M PyTorch 35 -69% 178 -23% 89 11% 140 14%
TensorRT 11 . 137 137 . 99 . 160 .
Μετασχηματιστής vit_large_patch16_224 304M PyTorch 11 -18% 186 -28% 83 23% 140 29%
TensorRT 9 . 134 . 102 . 180 .
NLP bert-base-uncased 109M PyTorch 28 29% 77 -40% 133 59% 140 43%
TensorRT 36 . 46 . 212 . 200 .
roberta-large 335M PyTorch 9 0% 108 -44% 88 60% 160 0%
TensorRT 9 . 61 . 141 . 160 .

Ο παρακάτω πίνακας συνοψίζει τα αποτελέσματα σε όλους τους τύπους παρουσιών. Το παράδειγμα ml.g5.2xlarge παρέχει την καλύτερη απόδοση, ενώ το παράδειγμα ml.p3.2xlarge έχει γενικά χαμηλότερες επιδόσεις παρόλο που είναι το πιο ακριβό από τα τρία. Οι περιπτώσεις g5 και g4dn δείχνουν την καλύτερη τιμή για φόρτους εργασίας εξαγωγής συμπερασμάτων.

Χρήση θήκης Αρχιτεκτονική Όνομα μοντέλου Αριθμός παραμέτρων Πλαίσιο Τύπος συμβολής Max Models Loaded Διαφορά (%) Καθυστέρηση (ms) Διαφορά (%) Διανομή (qps) Διαφορά (%) Μέγιστος ταυτόχρονος χρήστης
CV CNN resnet50 25M PyTorch ml.g5.2xμεγάλο 70 . 159 . 146 . 180
. . . . . ml.p3.2xlarge 49 . 197 . 94 . 160
. . . . . ml.g4dn.2xlarge 46 . 164 . 120 . 180
CV CN resnet50 25M TensorRT ml.g5.2xμεγάλο 34 -51% 110 -31% 166 14% 200
. . . . . ml.p3.2xlarge 24 -51% 117 -41% 111 18% 200
. . . . . ml.g4dn.2xlarge 23 -50% 111 -32% 142 18% 180
NLP Μετασχηματιστής bert-base-uncased 109M pytorch ml.g5.2xμεγάλο 39 . 65 . 183 . 180
. . . . . ml.p3.2xlarge 28 . 77 . 133 . 140
. . . . . ml.g4dn.2xlarge 26 . 70 . 105 . 140
NLP Μετασχηματιστής bert-base-uncased 109M TensorRT ml.g5.2xμεγάλο 50 28% 46 -29% 253 38% 200
. . . . . ml.p3.2xlarge 36 29% 46 -40% 212 59% 200
. . . . . ml.g4dn.2xlarge 42 62% 43 -39% 254 142% 180

εκκαθάριση

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

delete_endpoint(sm_client, sm_model_name, endpoint_config_name, endpoint_name) ! aws s3 rm --recursive {trt_mme_path}

Συμπέρασμα

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


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

Επιτύχετε υψηλή απόδοση σε κλίμακα για την εξυπηρέτηση μοντέλων χρησιμοποιώντας τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker με το GPU PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Τζέιμς Γου είναι Senior AI/ML Specialist Solution Architect στο AWS. βοηθώντας τους πελάτες να σχεδιάσουν και να δημιουργήσουν λύσεις AI/ML. Το έργο του James καλύπτει ένα ευρύ φάσμα περιπτώσεων χρήσης ML, με πρωταρχικό ενδιαφέρον για την όραση υπολογιστών, τη βαθιά μάθηση και την κλιμάκωση της ML σε όλη την επιχείρηση. Πριν από την ένταξή του στην AWS, ο James ήταν αρχιτέκτονας, προγραμματιστής και ηγέτης τεχνολογίας για περισσότερα από 10 χρόνια, συμπεριλαμβανομένων 6 ετών στη μηχανική και 4 ετών σε βιομηχανίες μάρκετινγκ και διαφήμισης.

Επιτύχετε υψηλή απόδοση σε κλίμακα για την εξυπηρέτηση μοντέλων χρησιμοποιώντας τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker με το GPU PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Vikram Elango είναι Αρχιτέκτονας Specialist Solutions AI/ML στην Amazon Web Services, με έδρα τη Βιρτζίνια των ΗΠΑ. Η Vikram βοηθά τους πελάτες του χρηματοοικονομικού και ασφαλιστικού κλάδου με σχεδιασμό, ηγετική σκέψη να δημιουργήσουν και να αναπτύξουν εφαρμογές μηχανικής εκμάθησης σε κλίμακα. Επί του παρόντος επικεντρώνεται στην επεξεργασία φυσικής γλώσσας, στην υπεύθυνη τεχνητή νοημοσύνη, στη βελτιστοποίηση συμπερασμάτων και στην κλιμάκωση της ML σε όλη την επιχείρηση. Στον ελεύθερο χρόνο του, του αρέσει να ταξιδεύει, να κάνει πεζοπορία, να μαγειρεύει και να κατασκηνώνει με την οικογένειά του.

Επιτύχετε υψηλή απόδοση σε κλίμακα για την εξυπηρέτηση μοντέλων χρησιμοποιώντας τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker με το GPU PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Σάιμον Ζαμαρίν είναι ένας αρχιτέκτονας λύσεων AI / ML του οποίου η κύρια εστίαση είναι να βοηθά τους πελάτες να εξάγουν αξία από τα στοιχεία τους. Στον ελεύθερο χρόνο του, ο Simon απολαμβάνει να ξοδεύει χρόνο με την οικογένεια, να διαβάζει επιστημονικά και να εργάζεται σε διάφορα έργα σπιτιού DIY.

Επιτύχετε υψηλή απόδοση σε κλίμακα για την εξυπηρέτηση μοντέλων χρησιμοποιώντας τερματικά σημεία πολλαπλών μοντέλων του Amazon SageMaker με το GPU PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται. Saurabh Trikande είναι Ανώτερος Διευθυντής Προϊόντων για το Amazon SageMaker Inference. Είναι παθιασμένος με τη συνεργασία με πελάτες και παρακινείται από τον στόχο του εκδημοκρατισμού της μηχανικής μάθησης. Εστιάζει στις βασικές προκλήσεις που σχετίζονται με την ανάπτυξη πολύπλοκων εφαρμογών ML, μοντέλων ML πολλαπλών μισθωτών, βελτιστοποιήσεις κόστους και καθιστώντας την ανάπτυξη μοντέλων βαθιάς μάθησης πιο προσιτή. Στον ελεύθερο χρόνο του, ο Saurabh απολαμβάνει την πεζοπορία, μαθαίνει για καινοτόμες τεχνολογίες, ακολουθεί το TechCrunch και περνά χρόνο με την οικογένειά του.

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

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