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

Επίτευξη φιλοξενίας χαμηλής καθυστέρησης για μοντέλα ML που βασίζονται σε δέντρα αποφάσεων στον διακομιστή NVIDIA Triton Inference στο Amazon SageMaker

Οι αναπτύξεις μοντέλων μηχανικής εκμάθησης (ML) μπορεί να έχουν πολύ απαιτητικές απαιτήσεις απόδοσης και καθυστέρησης για τις επιχειρήσεις σήμερα. Οι περιπτώσεις χρήσης όπως ο εντοπισμός απάτης και η τοποθέτηση διαφημίσεων είναι παραδείγματα όπου τα χιλιοστά του δευτερολέπτου έχουν σημασία και είναι κρίσιμα για την επιτυχία της επιχείρησης. Πρέπει να πληρούνται αυστηρές συμφωνίες επιπέδου υπηρεσιών (SLAs) και ένα τυπικό αίτημα μπορεί να απαιτεί πολλαπλά βήματα, όπως προεπεξεργασία, μετασχηματισμός δεδομένων, λογική επιλογής μοντέλου, συνάθροιση μοντέλων και μεταεπεξεργασία. Σε κλίμακα, αυτό σημαίνει συχνά διατήρηση ενός τεράστιου όγκου επισκεψιμότητας διατηρώντας παράλληλα χαμηλό λανθάνοντα χρόνο. Τα κοινά μοτίβα σχεδίασης περιλαμβάνουν σειριακές αγωγούς συμπερασμάτων, σύνολα (διασπορά-συγκέντρωση) και ροές εργασιών επιχειρηματικής λογικής, που έχουν ως αποτέλεσμα την υλοποίηση ολόκληρης της ροής εργασίας του αιτήματος ως Κατευθυνόμενο Ακυκλικό Γράφημα (DAG). Ωστόσο, καθώς οι ροές εργασίας γίνονται πιο περίπλοκες, αυτό μπορεί να οδηγήσει σε αύξηση του συνολικού χρόνου απόκρισης, ο οποίος με τη σειρά του μπορεί να επηρεάσει αρνητικά την εμπειρία του τελικού χρήστη και να θέσει σε κίνδυνο τους επιχειρηματικούς στόχους. Το Triton μπορεί να αντιμετωπίσει αυτές τις περιπτώσεις χρήσης όπου πολλά μοντέλα συντίθενται σε μια διοχέτευση με τανυστές εισόδου και εξόδου συνδεδεμένους μεταξύ τους, βοηθώντας σας να αντιμετωπίσετε αυτούς τους φόρτους εργασίας.

Καθώς αξιολογείτε τους στόχους σας σε σχέση με το συμπέρασμα του μοντέλου ML, πολλές επιλογές μπορούν να ληφθούν υπόψη, αλλά λίγες είναι τόσο ικανές και αποδεδειγμένες όσο Amazon Sage Maker με Διακομιστής Triton Inference. Το SageMaker με Triton Inference Server είναι μια δημοφιλής επιλογή για πολλούς πελάτες, επειδή έχει σχεδιαστεί ειδικά για να μεγιστοποιήσει την απόδοση και τη χρήση υλικού με εξαιρετικά χαμηλή (μονοψήφια χιλιοστά του δευτερολέπτου) καθυστέρηση συμπερασμάτων. Διαθέτει μεγάλη γκάμα υποστηριζόμενων πλαισίων ML (συμπεριλαμβανομένων των TensorFlow, PyTorch, ONNX, XGBoost και NVIDIA TensorRT) και υποδομών υποστήριξης, συμπεριλαμβανομένων των NVIDIA GPU, CPU και Αίσθηση AWS. Επιπλέον, ο Triton Inference Server είναι ενσωματωμένος με το SageMaker, μια πλήρως διαχειριζόμενη υπηρεσία ML από άκρο σε άκρο, η οποία παρέχει επιλογές συμπερασμάτων σε πραγματικό χρόνο για τη φιλοξενία μοντέλων.

Σε αυτήν την ανάρτηση, προχωράμε στην ανάπτυξη ενός φόρτου εργασίας συνόλου ανίχνευσης απάτης στο SageMaker με το Triton Inference Server.

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

Είναι σημαντικό για κάθε έργο να έχει μια λίστα απαιτήσεων και μια εκτίμηση προσπάθειας, προκειμένου να προσεγγιστεί το συνολικό κόστος του έργου. Είναι σημαντικό να εκτιμήσετε την απόδοση επένδυσης (ROI) που υποστηρίζει την απόφαση ενός οργανισμού. Ορισμένα στοιχεία που πρέπει να ληφθούν υπόψη κατά τη μεταφορά ενός φόρτου εργασίας στο Triton περιλαμβάνουν:

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

  • Προϋπολογισμός καθυστέρησης από την πλευρά του πελάτη – Καθορίζει τον μέγιστο αποδεκτό χρόνο αναμονής μετ' επιστροφής από την πλευρά του πελάτη για μια απόκριση συμπερασμάτων, που συνήθως εκφράζεται σε εκατοστημόρια. Για φόρτους εργασίας που απαιτούν προϋπολογισμό καθυστέρησης κοντά σε δεκάδες χιλιοστά του δευτερολέπτου, οι μεταφορές δικτύου θα μπορούσαν να γίνουν δαπανηρές, επομένως η χρήση μοντέλων στην άκρη θα ταίριαζε καλύτερα.
  • Μέγεθος διανομής ωφέλιμου φορτίου δεδομένων – Ωφέλιμο φορτίο, που συχνά αναφέρεται ως σώμα μηνύματος, είναι τα δεδομένα αιτήματος που μεταδίδονται από τον πελάτη στο μοντέλο, καθώς και τα δεδομένα απόκρισης που μεταδίδονται από το μοντέλο στον πελάτη. Το μέγεθος του ωφέλιμου φορτίου έχει συχνά σημαντικό αντίκτυπο στην καθυστέρηση και θα πρέπει να λαμβάνεται υπόψη.
  • Μορφή δεδομένων – Αυτό καθορίζει τον τρόπο αποστολής του ωφέλιμου φορτίου στο μοντέλο ML. Η μορφή μπορεί να είναι αναγνώσιμη από τον άνθρωπο, όπως το JSON και το CSV, ωστόσο υπάρχουν και δυαδικές μορφές, οι οποίες είναι συχνά συμπιεσμένες και μικρότερες σε μέγεθος. Πρόκειται για μια αντιστάθμιση μεταξύ της επιβάρυνσης συμπίεσης και του μεγέθους μεταφοράς, που σημαίνει ότι οι κύκλοι της CPU και η καθυστέρηση προστίθενται για συμπίεση ή αποσυμπίεση, προκειμένου να εξοικονομηθούν byte που μεταφέρονται μέσω του δικτύου. Αυτή η ανάρτηση δείχνει πώς να χρησιμοποιήσετε τόσο JSON όσο και δυαδικές μορφές.
  • Απαιτείται στοίβα λογισμικού και εξαρτήματα – Μια στοίβα είναι μια συλλογή στοιχείων που λειτουργούν μαζί για την υποστήριξη μιας εφαρμογής ML, συμπεριλαμβανομένων του λειτουργικού συστήματος, των χρόνων εκτέλεσης και των επιπέδων λογισμικού. Το Triton έρχεται με ενσωματωμένα δημοφιλή πλαίσια ML, που ονομάζονται πιστωτικά, όπως ONNX, TensorFlow, FIL, OpenVINO, native Python και άλλα. Μπορείτε επίσης να συντάξετε α προσαρμοσμένο backend για τα δικά σας εγχώρια εξαρτήματα. Αυτή η ανάρτηση αφορά ένα μοντέλο XGBoost και την προεπεξεργασία δεδομένων, τα οποία μεταφέρουμε στα backend FIL και Python Triton που παρέχει η NVIDIA, αντίστοιχα.

Όλοι αυτοί οι παράγοντες θα πρέπει να διαδραματίζουν ζωτικό ρόλο στην αξιολόγηση της απόδοσης του φόρτου εργασίας σας, αλλά σε αυτήν την περίπτωση χρήσης εστιάζουμε στην εργασία που απαιτείται για τη μετακίνηση των μοντέλων σας ML για φιλοξενία στο SageMaker με τον Triton Inference Server. Συγκεκριμένα, χρησιμοποιούμε ένα παράδειγμα ενός συνόλου ανίχνευσης απάτης που αποτελείται από ένα μοντέλο XGBoost με λογική προεπεξεργασίας γραμμένη σε Python.

NVIDIA Triton Inference Server

Ο Triton Inference Server έχει σχεδιαστεί από την αρχή για να επιτρέπει στις ομάδες να αναπτύσσουν, να εκτελούν και να κλιμακώνουν εκπαιδευμένα μοντέλα AI από οποιοδήποτε πλαίσιο σε υποδομή βασισμένη σε GPU ή CPU. Επιπλέον, έχει βελτιστοποιηθεί για να προσφέρει συμπεράσματα υψηλής απόδοσης σε κλίμακα με χαρακτηριστικά όπως δυναμική παρτίδα, ταυτόχρονες εκτελέσεις, βέλτιστη διαμόρφωση μοντέλου, σύνολο μοντέλων και υποστήριξη για εισόδους ροής.

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

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

Οι φόρτοι εργασίας θα πρέπει να λαμβάνουν υπόψη τις δυνατότητες που παρέχει το Triton μαζί με τη φιλοξενία του SageMaker για να μεγιστοποιήσουν τα προσφερόμενα οφέλη. Για παράδειγμα, το Triton υποστηρίζει HTTP καθώς και α C API, που επιτρέπουν ευελιξία καθώς και βελτιστοποίηση ωφέλιμου φορτίου όταν χρειάζεται. Όπως αναφέρθηκε προηγουμένως, το Triton υποστηρίζει πολλά δημοφιλή πλαίσια εκτός συσκευασίας, συμπεριλαμβανομένων των TensorFlow, PyTorch, ONNX, XGBoost και NVIDIA TensorRT. Αυτά τα πλαίσια υποστηρίζονται από τα backend του Triton και στη σπάνια περίπτωση που ένα backend δεν υποστηρίζει την περίπτωση χρήσης σας, Το Triton σάς επιτρέπει να εφαρμόσετε το δικό σας και να το ενσωματώσετε εύκολα.

Το παρακάτω διάγραμμα δείχνει ένα παράδειγμα της αρχιτεκτονικής NVIDIA Triton.

NVIDIA Triton στο SageMaker

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

Κάτω από την ομπρέλα φιλοξενίας του SageMaker βρίσκεται επίσης το σύνολο των SageMaker Inference Deep Learning Containers (DLC), τα οποία είναι προσυσκευασμένα με το κατάλληλο λογισμικό διακομιστή μοντέλου για το αντίστοιχο υποστηριζόμενο πλαίσιο ML. Αυτό σας δίνει τη δυνατότητα να επιτύχετε υψηλή απόδοση συμπερασμάτων χωρίς ρύθμιση διακομιστή μοντέλου, η οποία είναι συχνά η πιο περίπλοκη τεχνική πτυχή της ανάπτυξης του μοντέλου και γενικά δεν αποτελεί μέρος του συνόλου δεξιοτήτων ενός επιστήμονα δεδομένων. Ο διακομιστής συμπερασμάτων Triton είναι τώρα διαθέσιμος σε DLC του SageMaker.

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

Υποστήριξη υποστήριξης NVIDIA FIL

Με την Έκδοση έκδοσης 22.05 του Triton, η NVIDIA υποστηρίζει πλέον μοντέλα δασών που εκπαιδεύονται από πολλά δημοφιλή πλαίσια ML, συμπεριλαμβανομένων των XGBoost, LightGBM, Scikit-learn και cuML. Όταν χρησιμοποιείτε το backend FIL για το Triton, θα πρέπει να βεβαιωθείτε ότι υποστηρίζονται τα τεχνουργήματα μοντέλων που παρέχετε. Για παράδειγμα, το FIL υποστηρίζει model_type xgboost, xgboost_json, lightgbm, ή treelite_checkpoint, υποδεικνύοντας εάν το παρεχόμενο μοντέλο είναι σε δυαδική μορφή XGBoost, μορφή XGBoost JSON, μορφή κειμένου LightGBM ή δυαδική μορφή Treelite, αντίστοιχα.

Αυτή η υποστήριξη υποστήριξης είναι απαραίτητη για να τη χρησιμοποιήσουμε στο παράδειγμά μας, επειδή το FIL υποστηρίζει μοντέλα XGBoost. Το μόνο στοιχείο που πρέπει να ελέγξουμε είναι να διασφαλίσουμε ότι το μοντέλο που αναπτύσσουμε υποστηρίζει δυαδικές μορφές ή μορφές JSON.

Εκτός από τη διασφάλιση ότι διαθέτετε τη σωστή μορφή μοντέλου, θα πρέπει να ληφθούν και άλλες σκέψεις. Το backend FIL για το Triton παρέχει διαμορφώσιμες επιλογές στους προγραμματιστές για να συντονίσουν τον φόρτο εργασίας τους και να βελτιστοποιήσουν την απόδοση εκτέλεσης μοντέλου. Η διαμόρφωση dynamic_batching επιτρέπει στον Triton να κρατά αιτήματα από την πλευρά του πελάτη και να τα ομαδοποιεί στην πλευρά του διακομιστή, προκειμένου να χρησιμοποιεί αποτελεσματικά τον παράλληλο υπολογισμό του FIL για να συμπεράνει ολόκληρη την παρτίδα μαζί. Η επιλογή max_queue_delay_microseconds προσφέρει έναν ασφαλή έλεγχο του χρόνου που περιμένει ο Triton για να σχηματίσει μια παρτίδα. Το FIL συνοδεύεται από επεξήγηση Shapley, η οποία μπορεί να ενεργοποιηθεί από τη διαμόρφωση treeshap_output; Ωστόσο, θα πρέπει να έχετε κατά νου ότι οι έξοδοι Shapley βλάπτουν την απόδοση λόγω του μεγέθους τους. Μια άλλη σημαντική πτυχή είναι storage_type προκειμένου να γίνει αντιστάθμιση μεταξύ του αποτυπώματος μνήμης και του χρόνου εκτέλεσης. Για παράδειγμα, η χρήση του χώρου αποθήκευσης ως SPARSE μπορεί να μειώσει την κατανάλωση μνήμης, ενώ το DENSE μπορεί να μειώσει την απόδοση του μοντέλου σας σε βάρος της υψηλότερης χρήσης μνήμης. Η απόφαση της καλύτερης επιλογής για καθένα από αυτά εξαρτάται από τον φόρτο εργασίας και τον προϋπολογισμό λανθάνοντος χρόνου σας, επομένως συνιστούμε μια βαθύτερη ματιά σε όλες τις επιλογές στο FIL backend FAQ και την λίστα με τις διαμορφώσεις που είναι διαθέσιμες στο FIL.

Βήματα για να φιλοξενήσετε ένα μοντέλο σε triton

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

Προσδιορίστε τον φόρτο εργασίας σας

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

Προσδιορίστε τρέχουσες και στοχευμένες μετρήσεις απόδοσης και άλλους στόχους που ενδέχεται να ισχύουν

Μπορεί να διαπιστώσετε ότι ο χρόνος συμπερασμάτων από άκρο σε άκρο διαρκεί πολύ για να είναι αποδεκτός. Ο στόχος σας θα μπορούσε να είναι να μεταβείτε από δεκάδες χιλιοστά του δευτερολέπτου καθυστέρησης σε μονοψήφιο λανθάνοντα χρόνο για τον ίδιο όγκο αιτημάτων και την αντίστοιχη απόδοση. Καθορίζετε ότι το μεγαλύτερο μέρος του χρόνου καταναλώνεται από την προεπεξεργασία δεδομένων και το μοντέλο XGBoost. Άλλοι παράγοντες όπως το μέγεθος του δικτύου και του ωφέλιμου φορτίου παίζουν ελάχιστο ρόλο στα γενικά έξοδα που σχετίζονται με τον χρόνο συμπερασμάτων από άκρο σε άκρο.

Εργαστείτε προς τα πίσω για να προσδιορίσετε εάν το Triton μπορεί να φιλοξενήσει τον φόρτο εργασίας σας με βάση τις απαιτήσεις σας

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

Όπως αναφέρθηκε προηγουμένως, είναι επίσης σημαντικό να προσδιορίσετε εάν το Triton υποστηρίζει ένα backend που μπορεί να εξυπηρετήσει τα τεχνουργήματά σας. Ο Triton υποστηρίζει έναν αριθμό από πιστωτικά που είναι προσαρμοσμένα για να υποστηρίζουν διάφορα πλαίσια όπως το PyTorch και το TensorFlow. Ελέγξτε για να βεβαιωθείτε ότι τα μοντέλα σας υποστηρίζονται και ότι έχετε τη σωστή μορφή μοντέλου που περιμένει η Triton. Για να το κάνετε αυτό, ελέγξτε πρώτα για να δείτε ποιες μορφές μοντέλων υποστηρίζει το σύστημα υποστήριξης Triton. Σε πολλές περιπτώσεις, αυτό δεν απαιτεί αλλαγές για το μοντέλο. Σε άλλες περιπτώσεις, το μοντέλο σας μπορεί να απαιτεί μετατροπή σε διαφορετική μορφή. Ανάλογα με τη μορφή πηγής και στόχου, υπάρχουν διάφορες επιλογές, όπως η μετατροπή α Αρχείο Python pickle για χρήση της μορφής δυαδικού σημείου ελέγχου του Treelite.

Για αυτήν την περίπτωση χρήσης, προσδιορίζουμε το FIL backend μπορούμε να υποστηρίξουμε το μοντέλο XGBoost χωρίς να χρειάζονται αλλαγές και ότι μπορούμε να το χρησιμοποιήσουμε Python backend για την προεπεξεργασία. Με τη λειτουργία συνόλου του Triton, μπορείτε να βελτιστοποιήσετε περαιτέρω τον φόρτο εργασίας σας αποφεύγοντας δαπανηρές κλήσεις δικτύου μεταξύ παρουσιών φιλοξενίας.

Δημιουργήστε ένα σχέδιο και υπολογίστε την προσπάθεια που απαιτείται για τη χρήση του Triton για φιλοξενία

Ας μιλήσουμε για το σχέδιο να μεταφέρετε τα μοντέλα σας στο Triton. Κάθε ανάπτυξη Triton απαιτεί τα ακόλουθα:

  • Μοντέλα τεχνουργήματα που απαιτούνται από τα backends του Triton
  • Αρχεία διαμόρφωσης Triton
  • Ένας φάκελος αποθετηρίου μοντέλου με τη σωστή δομή

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

Εκτελέστε το σχέδιο και επικυρώστε τα αποτελέσματα

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

Σε αυτό το σημείο, μπορείτε να χρησιμοποιήσετε SageMaker Inference Recommender για να προσδιορίσετε ποιος τύπος παρουσίας τελικού σημείου είναι καλύτερος για εσάς με βάση τις απαιτήσεις σας. Επιπλέον, το Triton παρέχει εργαλεία για τη δημιουργία βελτιστοποιήσεων για καλύτερη απόδοση.

Εκτέλεση

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

Το πρώτο σημειωματάριο εμφανίζει ένα υπάρχον σημειωματάριο που διαθέτει ο οργανισμός σας που χρησιμοποιεί το ΚΑΤΑΡΡΑΚΤΗΣ σουίτα βιβλιοθηκών και τον πυρήνα RAPIDS Conda. Αυτή η παρουσία εκτελείται σε έναν τύπο παρουσίας G4DN που παρέχεται από το AWS, ο οποίος επιταχύνεται με GPU χρησιμοποιώντας επεξεργαστές NVIDIA T4.

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

Οι εργασίες προεπεξεργασίας σε αυτό το παράδειγμα επωφελούνται από την επιτάχυνση της GPU και χρησιμοποιούν σε μεγάλο βαθμό τις βιβλιοθήκες cuML και cuDF. Ένα παράδειγμα αυτού είναι στον παρακάτω κώδικα, όπου δείχνουμε την κωδικοποίηση κατηγοριών ετικετών χρησιμοποιώντας cuML. Δημιουργούμε επίσης α label_encoders.pkl αρχείο που μπορούμε να χρησιμοποιήσουμε για να σειριοποιήσουμε τους κωδικοποιητές και να τους χρησιμοποιήσουμε για προεπεξεργασία κατά τη διάρκεια του χρόνου συμπερασμάτων.

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

Το πρώτο σημειωματάριο ολοκληρώνεται με την εκπαίδευση του μοντέλου XGBoost και την αποθήκευση των αντικειμένων ανάλογα.

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

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

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

Ας προχωρήσουμε τώρα στο δεύτερο σημειωματάριο και ας θυμηθούμε τι χρειαζόμαστε για μια επιτυχημένη ανάπτυξη του Triton.

Πρώτον, χρειαζόμαστε τα μοντέλα τεχνουργημάτων που απαιτούνται από τα backend. Τα αρχεία που πρέπει να δημιουργήσουμε για αυτό το σύνολο περιλαμβάνουν:

  • Προεπεξεργασία τεχνουργημάτων (model.py, label_encoders.pkl)
  • Αντικείμενα μοντέλων XGBoost (xgboost.json)

Το backend Python στο Triton απαιτεί από εμάς να χρησιμοποιήσουμε ένα περιβάλλον Conda ως εξάρτηση. Σε αυτήν την περίπτωση, χρησιμοποιούμε το backend της Python για την προεπεξεργασία των ακατέργαστων δεδομένων πριν τα τροφοδοτήσουμε στο μοντέλο XGBoost που εκτελείται στο σύστημα υποστήριξης FIL. Παρόλο που αρχικά χρησιμοποιούσαμε βιβλιοθήκες RAPIDS cuDF και cuML για να κάνουμε την προεπεξεργασία δεδομένων (όπως αναφέρθηκε προηγουμένως χρησιμοποιώντας τη GPU μας), εδώ χρησιμοποιούμε τα Pandas και Scikit-learn ως εξαρτήσεις προεπεξεργασίας για τον χρόνο συμπερασμάτων (με χρήση της CPU μας). Αυτό το κάνουμε για τρεις λόγους:

  • Για να δείξετε πώς μπορείτε να δημιουργήσετε ένα περιβάλλον Conda για τις εξαρτήσεις σας και πώς να το συσκευάσετε στο αναμένεται μορφή από το backend του Triton's Python.
  • Παρουσιάζοντας το μοντέλο προεπεξεργασίας που εκτελείται στο σύστημα υποστήριξης Python στη CPU ενώ το μοντέλο XGBoost εκτελείται στη GPU στο σύστημα υποστήριξης FIL, επεξηγούμε πώς κάθε μοντέλο στη διοχέτευση συνόλου του Triton μπορεί να εκτελείται σε διαφορετικό πλαίσιο υποστήριξης πλαισίου και να εκτελείται σε διαφορετικό υλικό με διαφορετικό διαμορφώσεις.
  • Υπογραμμίζει πώς οι βιβλιοθήκες RAPIDS (cuDF, cuML) είναι συμβατές με τις αντίστοιχες CPU (Pandas, Scikit-learn). Με αυτόν τον τρόπο, μπορούμε να δείξουμε πώς LabelEncoders που δημιουργήθηκε στο cuML μπορεί να χρησιμοποιηθεί στο Scikit-learn και αντίστροφα. Λάβετε υπόψη ότι εάν περιμένετε να προεπεξεργαστείτε μεγάλες ποσότητες δεδομένων σε πίνακα κατά τη διάρκεια του χρόνου εξαγωγής συμπερασμάτων, μπορείτε να χρησιμοποιήσετε το RAPIDS για να το επιταχύνετε με GPU.

Θυμηθείτε ότι δημιουργήσαμε το label_encoders.pkl αρχείο στο πρώτο τετράδιο. Δεν υπάρχει τίποτα άλλο να κάνουμε για την κωδικοποίηση κατηγορίας από το να το συμπεριλάβουμε στο δικό μας model.py αρχείο για προεπεξεργασία.

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

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

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

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

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

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

Αφού έχουμε αυτές τις τρεις προϋποθέσεις, δημιουργούμε ένα συμπιεσμένο αρχείο ως συσκευασία για ανάπτυξη και το ανεβάζουμε στο Απλή υπηρεσία αποθήκευσης Amazon (Amazon S3).

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

Μπορούμε τώρα να δημιουργήσουμε ένα μοντέλο SageMaker από το αποθετήριο μοντέλων που ανεβάσαμε στο Amazon S3 στο προηγούμενο βήμα.

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

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

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

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

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

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

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

Αυτό είναι! Το τελικό σημείο σας είναι πλέον έτοιμο για δοκιμή και επικύρωση. Σε αυτό το σημείο, μπορεί να θέλετε να χρησιμοποιήσετε διάφορα εργαλεία που θα σας βοηθήσουν να βελτιστοποιήσετε τους τύπους και τη διαμόρφωση των παρουσιών σας για να έχετε την καλύτερη δυνατή απόδοση. Το παρακάτω σχήμα παρέχει ένα παράδειγμα των κερδών που μπορούν να επιτευχθούν χρησιμοποιώντας το backend FIL για ένα μοντέλο XGBoost στο Triton.

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

Χαρακτηριστικά

Σε αυτήν την ανάρτηση, σας καθοδηγήσαμε στην ανάπτυξη ενός φόρτου εργασίας συνόλου XGBoost στο SageMaker με το Triton Inference Server. Η μεταφορά φόρτου εργασίας στο Triton στο SageMaker μπορεί να είναι μια ευεργετική απόδοση επένδυσης. Όπως συμβαίνει με κάθε υιοθέτηση τεχνολογίας, η διαδικασία και το σχέδιο ελέγχου είναι το κλειδί, και αναφέραμε λεπτομερώς μια διαδικασία πέντε βημάτων για να σας καθοδηγήσουμε στο τι πρέπει να λάβετε υπόψη κατά τη μετακίνηση του φόρτου εργασίας σας. Επιπλέον, εμβαθύνουμε βαθιά στα βήματα που απαιτούνται για την ανάπτυξη ενός συνόλου που χρησιμοποιεί τη χρήση προεπεξεργασίας Python και ενός μοντέλου XGBoost στο Triton στο SageMaker.

Το SageMaker παρέχει τα εργαλεία για την αφαίρεση της αδιαφοροποίητης ανύψωσης βαρέων βαρών από κάθε στάδιο του κύκλου ζωής ML, διευκολύνοντας έτσι τον γρήγορο πειραματισμό και την εξερεύνηση που απαιτούνται για την πλήρη βελτιστοποίηση των αναπτύξεων του μοντέλου σας. Η υποστήριξη φιλοξενίας SageMaker για τον Triton Inference Server επιτρέπει φόρτους εργασίας χαμηλής καθυστέρησης και υψηλών συναλλαγών ανά δευτερόλεπτο (TPS).

Μπορείτε να βρείτε τα σημειωματάρια που χρησιμοποιούνται για αυτό το παράδειγμα GitHub.


Σχετικά με τον Συγγραφέα

Επιτύχετε φιλοξενία χαμηλής καθυστέρησης για μοντέλα ML που βασίζονται σε δέντρα αποφάσεων στον διακομιστή NVIDIA Triton Inference στο Amazon SageMaker PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Τζέιμς Παρκ είναι αρχιτέκτονας λύσεων στο Amazon Web Services. Συνεργάζεται με την Amazon.com για το σχεδιασμό, την κατασκευή και την ανάπτυξη τεχνολογικών λύσεων στο AWS και έχει ιδιαίτερο ενδιαφέρον για την τεχνητή νοημοσύνη και τη μηχανική μάθηση. Στον ελεύθερο χρόνο του απολαμβάνει να αναζητά νέους πολιτισμούς, νέες εμπειρίες και να ενημερώνεται για τις τελευταίες τάσεις της τεχνολογίας.

Επιτύχετε φιλοξενία χαμηλής καθυστέρησης για μοντέλα ML που βασίζονται σε δέντρα αποφάσεων στον διακομιστή NVIDIA Triton Inference στο Amazon SageMaker PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται. Τζιαόνγκ Λιου είναι αρχιτέκτονας λύσεων στην ομάδα του Cloud Service Provider της NVIDIA. Βοηθά τους πελάτες στην υιοθέτηση λύσεων μηχανικής μάθησης και τεχνητής νοημοσύνης που αξιοποιούν την επιτάχυνση της NVIDIA για την αντιμετώπιση των προκλήσεων εκπαίδευσης και συμπερασμάτων τους. Στον ελεύθερο χρόνο του, του αρέσει το origami, τα DIY projects και το μπάσκετ.

Επιτύχετε φιλοξενία χαμηλής καθυστέρησης για μοντέλα ML που βασίζονται σε δέντρα αποφάσεων στον διακομιστή NVIDIA Triton Inference στο Amazon SageMaker PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Kshitiz Gupta είναι αρχιτέκτονας λύσεων στην NVIDIA. Του αρέσει να εκπαιδεύει τους πελάτες cloud σχετικά με τις τεχνολογίες GPU AI που έχει να προσφέρει η NVIDIA και να τους βοηθά να επιταχύνουν τις εφαρμογές μηχανικής εκμάθησης και βαθιάς εκμάθησης. Εκτός δουλειάς, του αρέσει το τρέξιμο, η πεζοπορία και η παρακολούθηση της άγριας ζωής.

Επιτύχετε φιλοξενία χαμηλής καθυστέρησης για μοντέλα ML που βασίζονται σε δέντρα αποφάσεων στον διακομιστή NVIDIA Triton Inference στο Amazon SageMaker PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Bruno Aguiar de Melo είναι Μηχανικός Ανάπτυξης Λογισμικού στο Amazon.com, όπου βοηθά επιστημονικές ομάδες να δημιουργήσουν, να αναπτύξουν και να απελευθερώσουν φόρτους εργασίας ML. Ενδιαφέρεται για τα όργανα και τις ελεγχόμενες πτυχές στη φάση μοντελοποίησης/σχεδίασης ML που πρέπει να ληφθούν υπόψη και να μετρηθούν με τη γνώση ότι η απόδοση εκτέλεσης του μοντέλου είναι εξίσου σημαντική με την απόδοση ποιότητας μοντέλου, ιδιαίτερα σε περιπτώσεις χρήσης περιορισμένης καθυστέρησης. Στον ελεύθερο χρόνο του, του αρέσει το κρασί, τα επιτραπέζια παιχνίδια και η μαγειρική.

Επιτύχετε φιλοξενία χαμηλής καθυστέρησης για μοντέλα ML που βασίζονται σε δέντρα αποφάσεων στον διακομιστή NVIDIA Triton Inference στο Amazon SageMaker PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Ελιούθ Τριάνα είναι Υπεύθυνος Σχέσεων Προγραμματιστή στην NVIDIA. Συνδέει ηγέτες προϊόντων Amazon και AWS, προγραμματιστές και επιστήμονες με τεχνολόγους και ηγέτες προϊόντων της NVIDIA για να επιταχύνει τον φόρτο εργασίας του Amazon ML/DL, τα προϊόντα EC2 και τις υπηρεσίες AWS AI. Επιπλέον, ο Eliuth είναι παθιασμένος ποδηλάτης βουνού, σκιέρ και παίκτης πόκερ.

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

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