Μεγιστοποιήστε την απόδοση και μειώστε το κόστος εκπαίδευσης βαθιάς μάθησης με το AWS Trainium και το Amazon SageMaker

Μεγιστοποιήστε την απόδοση και μειώστε το κόστος εκπαίδευσης βαθιάς μάθησης με το AWS Trainium και το Amazon SageMaker

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

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

Το SageMaker είναι μια πλήρως διαχειριζόμενη υπηρεσία ML που βοηθά τους προγραμματιστές και τους επιστήμονες δεδομένων να δημιουργήσουν, να εκπαιδεύσουν και να αναπτύξουν εύκολα μοντέλα ML. Το SageMaker παρέχει ήδη την ευρύτερη και βαθύτερη επιλογή υπολογιστικών προσφορών που διαθέτουν επιταχυντές υλικού για εκπαίδευση ML, συμπεριλαμβανομένων G5 (Nvidia A10G) περιπτώσεις και P4d (Nvidia A100) περιπτώσεις.

Οι αυξανόμενες υπολογιστικές απαιτήσεις απαιτούν ταχύτερη και πιο οικονομική ισχύ επεξεργασίας. Για να μειωθούν περαιτέρω οι χρόνοι εκπαίδευσης μοντέλων και να επιτραπεί στους επαγγελματίες ML να επαναλαμβάνονται γρηγορότερα, το AWS καινοτομεί σε τσιπ, διακομιστές και συνδεσιμότητα κέντρων δεδομένων. Οι νέες περιπτώσεις Trn1 που τροφοδοτούνται από Aws trainium Τα τσιπ προσφέρουν την καλύτερη απόδοση τιμής και την ταχύτερη εκπαίδευση μοντέλου ML στο AWS, παρέχοντας έως και 50% χαμηλότερο κόστος για την εκπαίδευση μοντέλων βαθιάς εκμάθησης σε συγκρίσιμες παρουσίες που βασίζονται σε GPU χωρίς καμία πτώση στην ακρίβεια.

Σε αυτήν την ανάρτηση, δείχνουμε πώς μπορείτε να μεγιστοποιήσετε την απόδοσή σας και να μειώσετε το κόστος χρησιμοποιώντας παρουσίες Trn1 με το SageMaker.

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

Οι εργασίες εκπαίδευσης του SageMaker υποστηρίζουν περιπτώσεις ml.trn1, που υποστηρίζονται από τσιπ Trainium, τα οποία έχουν κατασκευαστεί για εφαρμογές εκπαίδευσης ML υψηλής απόδοσης στο cloud. Μπορείτε να χρησιμοποιήσετε παρουσίες ml.trn1 στο SageMaker για να εκπαιδεύσετε την επεξεργασία φυσικής γλώσσας (NLP), την όραση υπολογιστή και τα μοντέλα συστάσεων σε ένα ευρύ σύνολο εφαρμογών, όπως η αναγνώριση ομιλίας, η σύσταση, ο εντοπισμός απάτης, η ταξινόμηση εικόνων και βίντεο και η πρόβλεψη. Οι περιπτώσεις ml.trn1 διαθέτουν έως και 16 τσιπ Trainium, το οποίο είναι ένα τσιπ ML δεύτερης γενιάς που κατασκευάστηκε από την AWS μετά από Αίσθηση AWS. Οι περιπτώσεις ml.trn1 είναι οι πρώτες Amazon Elastic Compute Cloud Στιγμιότυπα (Amazon EC2) με έως και 800 Gbps εύρους ζώνης δικτύου Elastic Fabric Adapter (EFA). Για αποτελεσματικά δεδομένα και παραλληλισμό μοντέλων, κάθε στιγμιότυπο ml.trn1.32xl διαθέτει 512 GB μνήμης υψηλού εύρους ζώνης, παρέχει έως και 3.4 petaflops υπολογιστικής ισχύος FP16/BF16 και διαθέτει NeuronLink, μια ενδοπαραγωγική, υψηλού εύρους ζώνης, διασύνδεση χωρίς αποκλεισμό. .

Το Trainium είναι διαθέσιμο σε δύο διαμορφώσεις και μπορεί να χρησιμοποιηθεί στις ανατολικές (Βιρτζίνια) και στις δυτικές περιοχές των ΗΠΑ (Όρεγκον).

Ο παρακάτω πίνακας συνοψίζει τα χαρακτηριστικά των περιπτώσεων Trn1.

Μέγεθος Στιγμιότυπου Τρένιο
Επιταχυντές
Επιταχυντής
Μνήμη
(ΓΙΓΑΜΠΑΪΤ)
vCPU Παράδειγμα
Μνήμη
(GiB)
Δίκτυο
εύρος ζώνης
(Gbps)
EFA και
RDMA
Υποστήριξη
trn1.2xlarge 1 32 8 32 Μέχρι 12.5 Οχι
trn1.32xlarge 16 512 128 512 800 Ναι
trn1n.32xlarge (προσεχώς) 16 512 128 512 1600 Ναι

Ας καταλάβουμε πώς να χρησιμοποιήσετε το Trainium με το SageMaker με ένα απλό παράδειγμα. Θα εκπαιδεύσουμε ένα μοντέλο ταξινόμησης κειμένου με εκπαίδευση SageMaker και PyTorch χρησιμοποιώντας τη Βιβλιοθήκη Hugging Face Transformers.

Χρησιμοποιούμε το σύνολο δεδομένων Amazon Reviews, το οποίο αποτελείται από κριτικές από το amazon.com. Τα δεδομένα καλύπτουν μια περίοδο 18 ετών, που περιλαμβάνει περίπου 35 εκατομμύρια κριτικές έως τον Μάρτιο του 2013. Οι κριτικές περιλαμβάνουν πληροφορίες προϊόντων και χρηστών, αξιολογήσεις και ανασκόπηση απλού κειμένου. Ο παρακάτω κώδικας είναι ένα παράδειγμα από το AmazonPolarity σετ δοκιμής:

{
title':'Great CD', 'content':"My lovely Pat has one of the GREAT voices of her generation. I have listened to this CD for YEARS and I still LOVE IT. When I'm in a good mood it makes me feel better. A bad mood just evaporates like sugar in the rain. This CD just oozes LIFE. Vocals are jusat STUUNNING and lyrics just kill. One of life's hidden gems. This is a desert isle CD in my book. Why she never made it big is just beyond me. Everytime I play this, no matter black, white, young, old, male, female EVERYBODY says one thing ""Who was that singing ?""", 'label':1
}

Για αυτήν την ανάρτηση, χρησιμοποιούμε μόνο τα πεδία περιεχομένου και ετικέτας. Το πεδίο περιεχομένου είναι μια κριτική δωρεάν κειμένου και το πεδίο ετικέτας είναι μια δυαδική τιμή που περιέχει 1 ή 0 για θετικές ή αρνητικές κριτικές, αντίστοιχα.

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

Λεπτομέρειες υλοποίησης

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

  • Aws trainium – Στον πυρήνα του, το καθένα Παράδειγμα Trainium έχει ενσωματωμένες συσκευές Trainium. Το Trn1.2xlarge έχει 1 συσκευή Trainium και το Trn1.32xlarge έχει 16 συσκευές Trainium. Κάθε συσκευή Trainium αποτελείται από υπολογιστές (2 NeuronCore-v2), 32 GB μνήμης συσκευής HBM και NeuronLink για γρήγορη επικοινωνία μεταξύ συσκευών. Καθε NeuronCore-v2 αποτελείται από μια πλήρως ανεξάρτητη ετερογενή υπολογιστική μονάδα με ξεχωριστούς κινητήρες (Tensor/Vector/Scalar/GPSIMD). Το GPSIMD είναι πλήρως προγραμματιζόμενοι επεξεργαστές γενικής χρήσης που μπορείτε να χρησιμοποιήσετε για να εφαρμόσετε προσαρμοσμένους χειριστές και να τους εκτελέσετε απευθείας στους κινητήρες NeuronCore.
  • Εκπαίδευση Amazon SageMaker – Το SageMaker παρέχει μια πλήρως διαχειριζόμενη εμπειρία εκπαίδευσης για την εύκολη εκπαίδευση μοντέλων χωρίς να χρειάζεται να ανησυχείτε για την υποδομή. Όταν χρησιμοποιείτε το SageMaker Training, εκτελεί όλα όσα χρειάζονται για μια εργασία εκπαίδευσης, όπως κώδικα, κοντέινερ και δεδομένα, σε μια υπολογιστική υποδομή ξεχωριστή από το περιβάλλον επίκλησης. Αυτό μας επιτρέπει να εκτελούμε πειράματα παράλληλα και να επαναλαμβάνουμε γρήγορα. Το SageMaker παρέχει ένα Python SDK για την έναρξη εργασιών κατάρτισης. Το παράδειγμα σε αυτήν την ανάρτηση χρησιμοποιεί το SageMaker Python SDK για να ενεργοποιήσει την εργασία εκπαίδευσης χρησιμοποιώντας το Trainium.
  • AWS Neuron – Επειδή το Trainium NeuronCore έχει τη δική του μηχανή υπολογιστών, χρειαζόμαστε έναν μηχανισμό για να συντάξουμε τον εκπαιδευτικό μας κώδικα. ο AWS Neuron Ο μεταγλωττιστής παίρνει τον κώδικα που είναι γραμμένος σε Pytorch/XLA και τον βελτιστοποιεί ώστε να τρέχει σε συσκευές Neuron. Ο μεταγλωττιστής Neuron είναι ενσωματωμένος ως μέρος του Deep Learning Container που θα χρησιμοποιήσουμε για την εκπαίδευση του μοντέλου μας.
  • PyTorch/XLA - Αυτό Πακέτο Python χρησιμοποιεί τον μεταγλωττιστή βαθιάς εκμάθησης XLA για να συνδέσει το πλαίσιο βαθιάς εκμάθησης PyTorch και επιταχυντές cloud όπως το Trainium. Η δημιουργία ενός νέου δικτύου PyTorch ή η μετατροπή ενός υπάρχοντος για να εκτελείται σε συσκευές XLA απαιτεί μόνο μερικές γραμμές κώδικα ειδικά για το XLA. Θα δούμε για την περίπτωση χρήσης μας τι αλλαγές πρέπει να κάνουμε.
  • Κατανεμημένη εκπαίδευση – Για την αποτελεσματική εκτέλεση της εκπαίδευσης σε πολλαπλούς NeuronCores, χρειαζόμαστε έναν μηχανισμό για τη διανομή της εκπαίδευσης σε διαθέσιμους NeuronCores. Το SageMaker υποστηρίζει torchrun με παρουσίες Trainium, οι οποίες μπορούν να χρησιμοποιηθούν για την εκτέλεση πολλαπλών διεργασιών που ισοδυναμούν με τον αριθμό των NeuronCores στο σύμπλεγμα. Αυτό γίνεται μεταβιβάζοντας την παράμετρο διανομής στον εκτιμητή SageMaker ως εξής, ο οποίος ξεκινά μια παράλληλη κατανεμημένη εκπαίδευση δεδομένων όπου το ίδιο μοντέλο φορτώνεται σε διαφορετικούς NeuronCores που επεξεργάζονται ξεχωριστές παρτίδες δεδομένων:
distribution={"torch_distributed": {"enabled": True}}

Απαιτούνται αλλαγές σεναρίου για εκτέλεση στο Trainium

Ας δούμε τις αλλαγές κώδικα που απαιτούνται για την υιοθέτηση ενός κανονικού σεναρίου PyTorch που βασίζεται σε GPU για εκτέλεση στο Trainium. Σε υψηλό επίπεδο, πρέπει να κάνουμε τις ακόλουθες αλλαγές:

  1. Αντικαταστήστε τις συσκευές GPU με συσκευές Pytorch/XLA. Επειδή χρησιμοποιούμε διανομή φακού, πρέπει να αρχικοποιήσουμε την εκπαίδευση με το XLA ως συσκευή ως εξής:
    device = "xla"
    torch.distributed.init_process_group(device)

  2. Χρησιμοποιούμε το κατανεμημένο backend PyTorch/XLA για να γεφυρώσουμε τα κατανεμημένα PyTorch API με τη σημασιολογία επικοινωνίας XLA.
  3. Χρησιμοποιούμε PyTorch/XLA MpDeviceLoader για τους αγωγούς απορρόφησης δεδομένων. Το MpDeviceLoader συμβάλλει στη βελτίωση της απόδοσης επικαλύπτοντας τρία βήματα: ανίχνευση, μεταγλώττιση και μαζική φόρτωση δεδομένων στη συσκευή. Πρέπει να τυλίξουμε το πρόγραμμα φόρτωσης δεδομένων PyTorch με το MpDeviceDataLoader ως εξής:
    train_device_loader = pl.MpDeviceLoader(train_loader, "xla")

  4. Εκτελέστε το βήμα βελτιστοποίησης χρησιμοποιώντας το API που παρέχεται από το XLA, όπως φαίνεται στον παρακάτω κώδικα. Αυτό ενοποιεί τις κλίσεις μεταξύ των πυρήνων και εκδίδει τον υπολογισμό βημάτων της συσκευής XLA.
    torch_xla.core.xla_model.optimizer_step(optimizer)

  5. Αντιστοιχίστε τα API CUDA (αν υπάρχουν) σε γενικά PyTorch API.
  6. Αντικαταστήστε τους συγχωνευμένους βελτιστοποιητές CUDA (αν υπάρχουν) με γενικές εναλλακτικές λύσεις PyTorch.

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

Δοκιμές αναφοράς

Στη δοκιμή, εκτελέσαμε δύο εργασίες εκπαίδευσης: μία στο ml.trn1.32xlarge και μία στο ml.p4d.24xlarge με το ίδιο μέγεθος παρτίδας, δεδομένα εκπαίδευσης και άλλες υπερπαραμέτρους. Κατά τη διάρκεια των εργασιών εκπαίδευσης, μετρήσαμε τον χρεώσιμο χρόνο των εργασιών εκπαίδευσης του SageMaker και υπολογίσαμε την τιμή-απόδοση πολλαπλασιάζοντας τον χρόνο που απαιτείται για την εκτέλεση εργασιών εκπαίδευσης σε ώρες με την τιμή ανά ώρα για τον τύπο παρουσίας. Επιλέξαμε το καλύτερο αποτέλεσμα για κάθε τύπο παρουσίας από πολλές εκτελέσεις εργασιών.

Ο παρακάτω πίνακας συνοψίζει τα ευρήματα αναφοράς μας.

Μοντέλο Τύπος συμβολής Τιμή (ανά κόμβο * ώρα) Διακίνηση (επαναλήψεις/δευτ.) Ακρίβεια επικύρωσης Χρεώσιμος χρόνος (δευτ.) Κόστος εκπαίδευσης σε $
Βασική ταξινόμηση BERT ml.trn1.32xlarge 24.725 6.64 0.984 6033 41.47
Βασική ταξινόμηση BERT ml.p4d.24xlarge 37.69 5.44 0.984 6553 68.6

Τα αποτελέσματα έδειξαν ότι η παρουσία Trainium κοστίζει λιγότερο από την παρουσία P4d, παρέχοντας παρόμοια απόδοση και ακρίβεια κατά την εκπαίδευση του ίδιου μοντέλου με τα ίδια δεδομένα εισόδου και τις ίδιες παραμέτρους εκπαίδευσης. Αυτό σημαίνει ότι η παρουσία Trainium προσφέρει καλύτερη απόδοση τιμής από τα στιγμιότυπα P4D που βασίζονται σε GPU. Με ένα απλό παράδειγμα όπως αυτό, μπορούμε να δούμε ότι το Trainium προσφέρει περίπου 22% γρηγορότερο χρόνο εκπαίδευσης και έως και 50% χαμηλότερο κόστος σε σχέση με τις περιπτώσεις P4d.

Αναπτύξτε το εκπαιδευμένο μοντέλο

Αφού εκπαιδεύσουμε το μοντέλο, μπορούμε να το αναπτύξουμε σε διάφορους τύπους παρουσιών όπως CPU, GPU ή AWS Inferentia. Το βασικό σημείο που πρέπει να σημειωθεί είναι ότι το εκπαιδευμένο μοντέλο δεν εξαρτάται από εξειδικευμένο υλικό για ανάπτυξη και εξαγωγή συμπερασμάτων. Το SageMaker παρέχει μηχανισμούς για την ανάπτυξη ενός εκπαιδευμένου μοντέλου χρησιμοποιώντας μηχανισμούς τόσο σε πραγματικό χρόνο όσο και σε παρτίδες. Το παράδειγμα σημειωματάριου στο αποθετήριο GitHub περιέχει κώδικα για την ανάπτυξη του εκπαιδευμένου μοντέλου ως τελικό σημείο σε πραγματικό χρόνο χρησιμοποιώντας μια παρουσία ml.c5.xlarge (βασισμένη σε CPU).

Συμπέρασμα

Σε αυτήν την ανάρτηση, εξετάσαμε πώς να χρησιμοποιήσουμε το Trainium και το SageMaker για γρήγορη ρύθμιση και εκπαίδευση ενός μοντέλου ταξινόμησης που εξοικονομεί έως και 50% κόστος χωρίς συμβιβασμούς στην ακρίβεια. Μπορείτε να χρησιμοποιήσετε το Trainium για ένα ευρύ φάσμα περιπτώσεων χρήσης που περιλαμβάνουν προ-εκπαίδευση ή βελτιστοποίηση μοντέλων που βασίζονται σε Transformer. Για περισσότερες πληροφορίες σχετικά με την υποστήριξη διαφόρων αρχιτεκτονικών μοντέλων, ανατρέξτε στο Model Architecture Fit Guidelines.


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

Αρούν Κουμάρ Λοκανάθα είναι Senior ML Solutions Architect με την ομάδα του Amazon SageMaker Service. Επικεντρώνεται στο να βοηθά τους πελάτες να δημιουργήσουν, να εκπαιδεύσουν και να μεταφέρουν φόρτους εργασίας παραγωγής ML στο SageMaker σε κλίμακα. Ειδικεύεται στο Deep Learning ειδικά στον τομέα του NLP και του CV. Εκτός δουλειάς, του αρέσει το τρέξιμο και η πεζοπορία.

Μαρκ Γιου είναι Μηχανικός Λογισμικού στο AWS SageMaker. Επικεντρώνεται στην κατασκευή κατανεμημένων συστημάτων προπόνησης μεγάλης κλίμακας, στη βελτιστοποίηση της απόδοσης της προπόνησης και στην ανάπτυξη υλισμικών εκπαίδευσης ml υψηλής απόδοσης, συμπεριλαμβανομένου του SageMaker trainium. Ο Mark έχει επίσης εις βάθος γνώση σχετικά με τη βελτιστοποίηση της υποδομής μηχανικής εκμάθησης. Στον ελεύθερο χρόνο του, του αρέσει η πεζοπορία και το τρέξιμο.

Όμρι Φουξ είναι Διευθυντής Ανάπτυξης Λογισμικού στο AWS SageMaker. Είναι ο τεχνικός ηγέτης που είναι υπεύθυνος για την πλατφόρμα εργασίας εκπαίδευσης SageMaker, εστιάζοντας στη βελτιστοποίηση της απόδοσης εκπαίδευσης του SageMaker και στη βελτίωση της εκπαιδευτικής εμπειρίας. Έχει πάθος για την τεχνολογία αιχμής ML και AI. Στον ελεύθερο χρόνο του, του αρέσει η ποδηλασία και η πεζοπορία.

Gal Oshri είναι Ανώτερος Διευθυντής Προϊόντων στην ομάδα του Amazon SageMaker. Διαθέτει 7 χρόνια εμπειρίας σε εργαλεία, πλαίσια και υπηρεσίες Μηχανικής Μάθησης.

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

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