Επιταχύνετε την εκπαίδευση μοντέλων βαθιάς μάθησης έως και 35% με το Amazon SageMaker smart sifting | Υπηρεσίες Ιστού της Amazon

Επιταχύνετε την εκπαίδευση μοντέλων βαθιάς μάθησης έως και 35% με το Amazon SageMaker smart sifting | Υπηρεσίες Ιστού της Amazon

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

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

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

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

Σε αυτήν την ανάρτηση, συζητάμε τα ακόλουθα θέματα:

  • Η νέα δυνατότητα έξυπνου κοσκινίσματος στο SageMaker και πώς λειτουργεί
  • Πώς να χρησιμοποιήσετε το έξυπνο κοσκίνισμα με φόρτους εργασίας εκπαίδευσης PyTorch

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

Πώς λειτουργεί το έξυπνο κοσκίνισμα του SageMaker

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

Ο στόχος του έξυπνου κοσκίνισης είναι να περιηγηθεί στα δεδομένα προπόνησής σας κατά τη διάρκεια της εκπαιδευτικής διαδικασίας και να τροφοδοτήσει μόνο τα πιο ενημερωτικά δείγματα στο μοντέλο. Κατά τη διάρκεια μιας τυπικής εκπαίδευσης με το PyTorch, τα δεδομένα αποστέλλονται επαναληπτικά σε παρτίδες στον βρόχο εκπαίδευσης και σε συσκευές επιτάχυνσης (για παράδειγμα, GPU ή τσιπ Trainium) από το PyTorch DataLoader. Το έξυπνο κοσκίνισμα εφαρμόζεται σε αυτό το στάδιο φόρτωσης δεδομένων και ως εκ τούτου είναι ανεξάρτητο από οποιαδήποτε προεπεξεργασία δεδομένων προς τα πάνω στη γραμμή εκπαίδευσής σας.

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

Ένα βασικό στοιχείο για το έξυπνο κοσκίνισμα είναι η αναλογία των δεδομένων που πρέπει να εξαιρεθούν: για παράδειγμα, με τον καθορισμό της αναλογίας στο 33% (beta_value=0.5), τα δείγματα στο κάτω τρίτο περίπου της απώλειας κάθε παρτίδας θα αποκλείονται από την εκπαίδευση. Όταν έχουν εντοπιστεί αρκετά δείγματα υψηλής απώλειας για την ολοκλήρωση μιας παρτίδας, τα δεδομένα αποστέλλονται μέσω του πλήρους βρόχου εκπαίδευσης και το μοντέλο μαθαίνει και εκπαιδεύεται κανονικά. Δεν χρειάζεται να κάνετε αλλαγές στον βρόχο προπόνησής σας όταν είναι ενεργοποιημένο το έξυπνο κοσκίνισμα.

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

Επιταχύνετε την εκπαίδευση μοντέλων βαθιάς μάθησης έως και 35% με το Amazon SageMaker smart sifting | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

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

Επιταχύνετε την εκπαίδευση μοντέλων βαθιάς μάθησης έως και 35% με το Amazon SageMaker smart sifting | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.

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

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

Στις επόμενες ενότητες, περιγράφουμε ένα πρακτικό παράδειγμα ενεργοποίησης του έξυπνου κοσκινίσματος με μια εργασία εκπαίδευσης PyTorch στο SageMaker. Εάν θέλετε να ξεκινήσετε γρήγορα, μπορείτε να μεταβείτε στο Παραδείγματα PyTorch ή PyTorch Lightning.

Προϋποθέσεις

Υποθέτουμε ότι γνωρίζετε ήδη πώς να εκπαιδεύσετε ένα μοντέλο χρησιμοποιώντας PyTorch ή PyTorch Lightning χρησιμοποιώντας το SageMaker Python SDK και την κλάση Estimator χρησιμοποιώντας τα SageMaker Deep Learning Containers για εκπαίδευση. Εάν όχι, ανατρέξτε στο Χρήση του SageMaker Python SDK πριν συνεχίσετε.

Ξεκινήστε με το έξυπνο κοσκίνισμα SageMaker

Σε μια τυπική εργασία εκπαίδευσης PyTorch, αρχικοποιείτε την εκπαίδευση PyTorch DataLoader με το σύνολο δεδομένων σας και άλλες απαιτούμενες παραμέτρους, το οποίο παρέχει παρτίδες εισόδου καθώς προχωρά η εκπαίδευση. Για να ενεργοποιήσετε το έξυπνο κοσκίνισμα των δεδομένων προπόνησής σας, θα χρησιμοποιήσετε ένα νέο DataLoader τάξη: smart_sifting.dataloader.sift_dataloader.SiftingDataloader. Αυτή η κλάση χρησιμοποιείται ως περιτύλιγμα πάνω από το υπάρχον PyTorch σας DataLoader και η εκπαιδευτική διαδικασία θα χρησιμοποιήσει αντ' αυτού SiftingDataloader για να λάβετε παρτίδες εισόδου. ο SiftingDataLoader λαμβάνει την παρτίδα εισόδου από το αρχικό σας PyTorch DataLoader, αξιολογεί τη σημασία των δειγμάτων στην παρτίδα και κατασκευάζει μια κοσκινισμένη παρτίδα με δείγματα υψηλής απώλειας, τα οποία στη συνέχεια περνούν στο στάδιο εκπαίδευσης. Το περιτύλιγμα μοιάζει με τον ακόλουθο κώδικα:

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=BertLoss(), model=self.model
)

Η SiftingDataloader απαιτεί ορισμένες πρόσθετες παραμέτρους για την ανάλυση των δεδομένων προπόνησής σας, τις οποίες μπορείτε να καθορίσετε μέσω του sift_config παράμετρος. Πρώτα, δημιουργήστε ένα smart_sifting.sift_config.sift_configs.RelativeProbabilisticSiftConfig αντικείμενο. Αυτό το αντικείμενο περιέχει το διαμορφώσιμο και το απαιτούμενο beta_value και loss_history_length, που ορίζουν αντίστοιχα την αναλογία των δειγμάτων που πρέπει να διατηρηθούν και το παράθυρο των δειγμάτων που πρέπει να συμπεριληφθεί κατά την αξιολόγηση της σχετικής απώλειας. Σημειώστε ότι, επειδή το έξυπνο κοσκίνισμα χρησιμοποιεί το μοντέλο σας για τον καθορισμό της σημασίας του δείγματος, μπορεί να υπάρξουν αρνητικές συνέπειες εάν χρησιμοποιήσουμε ένα μοντέλο με εντελώς τυχαία βάρη. Αντίθετα, μπορείτε να χρησιμοποιήσετε loss_based_sift_config και σε έναν sift_delay να καθυστερήσει τη διαδικασία κοσκινίσματος έως ότου τα βάρη των παραμέτρων στο μοντέλο ενημερωθούν πέρα ​​από τυχαίες τιμές. (Για περισσότερες λεπτομέρειες, ανατρέξτε στο Εφαρμόστε έξυπνο κοσκίνισμα στο σενάριο προπόνησής σας.) Στον παρακάτω κώδικα, ορίζουμε sift_config και καθορίστε beta_value και loss_history_length, καθώς και να καθυστερήσει την έναρξη του κοσκινίσματος χρησιμοποιώντας loss_based_sift_config:

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
)

Στη συνέχεια, πρέπει επίσης να συμπεριλάβετε α loss_impl παράμετρος στην SiftingDataloader αντικείμενο. Το έξυπνο κοσκίνισμα λειτουργεί σε επίπεδο μεμονωμένου δείγματος και είναι σημαντικό να έχετε πρόσβαση σε μια μέθοδο υπολογισμού απώλειας για να προσδιορίσετε τη σημασία του δείγματος. Πρέπει να εφαρμόσετε μια μέθοδο απώλειας κοσκινίσματος που επιστρέφει έναν τανυστή nx1, ο οποίος διατηρεί τιμές απώλειας n δειγμάτων. Συνήθως, καθορίζετε την ίδια μέθοδο απώλειας που χρησιμοποιείται από εσάς model κατά τη διάρκεια της προπόνησης. Τέλος, συμπεριλάβετε έναν δείκτη στο μοντέλο σας στο SiftingDataloader αντικείμενο, το οποίο χρησιμοποιείται για την αξιολόγηση δειγμάτων προτού συμπεριληφθούν στην εκπαίδευση. Δείτε τον παρακάτω κώδικα:

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) ....
.... train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
)

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

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader
from smart_sifting.loss.abstract_sift_loss_module import Loss
from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig
...
...
... ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) .... .... .... sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
) train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
) ...... # use train_dataloader in the rest of the training logic.

Συμπέρασμα

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

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


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

Επιταχύνετε την εκπαίδευση μοντέλων βαθιάς μάθησης έως και 35% με το Amazon SageMaker smart sifting | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Robert Van Dusen είναι Ανώτερος Διευθυντής Προϊόντων με το Amazon SageMaker. Καθοδηγεί πλαίσια, μεταγλωττιστές και τεχνικές βελτιστοποίησης για εκπαίδευση βαθιάς μάθησης.

Επιταχύνετε την εκπαίδευση μοντέλων βαθιάς μάθησης έως και 35% με το Amazon SageMaker smart sifting | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.K Lokesh Kumar Reddy είναι ανώτερος μηχανικός στην ομάδα της Amazon Applied AI. Επικεντρώνεται σε αποτελεσματικές τεχνικές εκπαίδευσης ML και στη δημιουργία εργαλείων για τη βελτίωση των συστημάτων συνομιλίας AI. Στον ελεύθερο χρόνο του απολαμβάνει να αναζητά νέους πολιτισμούς, νέες εμπειρίες και να ενημερώνεται για τις τελευταίες τάσεις της τεχνολογίας.

Επιταχύνετε την εκπαίδευση μοντέλων βαθιάς μάθησης έως και 35% με το Amazon SageMaker smart sifting | Υπηρεσίες Ιστού Amazon PlatoBlockchain Data Intelligence. Κάθετη αναζήτηση. Ολα συμπεριλαμβάνονται.Abhishek Dan είναι ανώτερος διευθυντής προγραμματιστών στην ομάδα του Amazon Applied AI και εργάζεται σε συστήματα μηχανικής μάθησης και συνομιλίας AI. Είναι παθιασμένος με τις τεχνολογίες τεχνητής νοημοσύνης και εργάζεται στη διασταύρωση της Επιστήμης και της Μηχανικής για την προώθηση των δυνατοτήτων των συστημάτων τεχνητής νοημοσύνης για τη δημιουργία πιο έξυπνων και απρόσκοπτων αλληλεπιδράσεων ανθρώπου-υπολογιστή. Αυτήν τη στιγμή κατασκευάζει εφαρμογές σε μεγάλα μοντέλα γλώσσας για να βελτιώσει την αποτελεσματικότητα και το CX για την Amazon.

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

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