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

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

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

Παραλληλισμός Δεδομένων

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

Παραλληλισμός αγωγών

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

Παραλληλισμός τανυστών

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

Ειδικός Παραλληλισμός

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

Παραλληλισμός Δεδομένων

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

Παραλληλισμός αγωγών

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

Παραλληλισμός τανυστών

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

Ειδικός Παραλληλισμός

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

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

Χωρίς Παραλληλισμό

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

Διάφορες τεχνικές παραλληλισμού τεμαχίζουν αυτή τη διαδικασία εκπαίδευσης σε διαφορετικές διαστάσεις, όπως:

  • Παραλληλισμός δεδομένων—τρέξτε διαφορετικά υποσύνολα της παρτίδας σε διαφορετικές GPU.
  • Παραλληλισμός αγωγών—τρέξτε διαφορετικά επίπεδα του μοντέλου σε διαφορετικές GPU.
  • Παραλληλισμός τανυστή—διαλύστε τα μαθηματικά για μια μεμονωμένη πράξη, όπως ένας πολλαπλασιασμός πινάκων που θα χωριστεί σε GPU.
  • Mixture of Experts—επεξεργαστείτε κάθε παράδειγμα μόνο κατά ένα κλάσμα κάθε στρώματος.

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

Παραλληλισμός Δεδομένων

Παράλληλα δεδομένα εκπαίδευση σημαίνει αντιγραφή των ίδιων παραμέτρων σε πολλαπλές GPU (συχνά αποκαλούμενες "εργάτες") και αντιστοίχιση διαφορετικών παραδειγμάτων σε καθεμία που πρόκειται να υποβληθεί σε επεξεργασία ταυτόχρονα. Ο παραλληλισμός δεδομένων από μόνος του απαιτεί ακόμα το μοντέλο σας να χωράει στη μνήμη μιας μονάδας GPU, αλλά σας επιτρέπει να χρησιμοποιήσετε τον υπολογισμό πολλών GPU με κόστος αποθήκευσης πολλών διπλότυπων αντιγράφων των παραμέτρων σας. Τούτου λεχθέντος, υπάρχουν στρατηγικές για την αύξηση της αποτελεσματικής μνήμης RAM που είναι διαθέσιμη στη GPU σας, όπως η προσωρινή εκφόρτωση παραμέτρων στη μνήμη της CPU μεταξύ των χρήσεων.

Καθώς κάθε παράλληλος εργαζόμενος δεδομένων ενημερώνει το αντίγραφο των παραμέτρων του, πρέπει να συντονιστεί για να διασφαλίσει ότι κάθε εργαζόμενος συνεχίζει να έχει παρόμοιες παραμέτρους. Η απλούστερη προσέγγιση είναι η εισαγωγή αποκλειστικής επικοινωνίας μεταξύ των εργαζομένων: (1) ανεξάρτητος υπολογισμός της διαβάθμισης σε κάθε εργαζόμενο. (2) μέσο όρο των κλίσεων μεταξύ των εργαζομένων; και (3) υπολογίζουν ανεξάρτητα τις ίδιες νέες παραμέτρους σε κάθε εργαζόμενο. Το βήμα (2) είναι ένας μέσος όρος αποκλεισμού που απαιτεί μεταφορά πολλών δεδομένων (ανάλογα με τον αριθμό των εργαζομένων επί το μέγεθος των παραμέτρων σας), που μπορεί να βλάψει την απόδοση της εκπαίδευσής σας. Υπάρχουν διάφορα σχήματα ασύγχρονου συγχρονισμού για να αφαιρέσετε αυτό το γενικό κόστος, αλλά βλάπτουν τη μαθησιακή απόδοση. Στην πράξη, οι άνθρωποι γενικά τηρούν τη σύγχρονη προσέγγιση.

Παραλληλισμός αγωγών

Με Παράλληλος αγωγός εκπαίδευση, χωρίζουμε διαδοχικά κομμάτια του μοντέλου σε GPU. Κάθε GPU διαθέτει μόνο ένα κλάσμα παραμέτρων και έτσι το ίδιο μοντέλο καταναλώνει αναλογικά λιγότερη μνήμη ανά GPU.

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

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων Προς τα εμπρός
Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων Οπισθοδρομικός
Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων Ενημέρωση κλίσης
Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων Idle
Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

Απεικόνιση μιας απλής διάταξης παραλληλισμού σωλήνων όπου το μοντέλο χωρίζεται κάθετα σε 4 διαμερίσματα ανά στρώμα. Ο Εργάτης 1 φιλοξενεί παραμέτρους μοντέλου του πρώτου επιπέδου του δικτύου (πλησιέστερα στην είσοδο), ενώ ο εργαζόμενος 4 φιλοξενεί το επίπεδο 4 (το οποίο είναι πιο κοντά στην έξοδο). Τα "F", "B" και "U" αντιπροσωπεύουν λειτουργίες εμπρός, πίσω και ενημέρωσης, αντίστοιχα. Οι δείκτες υποδεικνύουν σε ποιον εργαζόμενο εκτελείται μια λειτουργία. Τα δεδομένα υποβάλλονται σε επεξεργασία από έναν εργαζόμενο τη φορά λόγω της διαδοχικής εξάρτησης, που οδηγεί σε μεγάλες «φυσαλίδες» του χρόνου αδράνειας.

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

Ο αριθμός των εργαζομένων στους οποίους χωρίζεται το μοντέλο είναι κοινώς γνωστός ως βάθος αγωγού.

Κατά τη διάρκεια του περάσματος προς τα εμπρός, οι εργαζόμενοι χρειάζεται μόνο να στείλουν την έξοδο (που ονομάζεται ενεργοποιήσεις) του κομματιού των επιπέδων του στον επόμενο εργαζόμενο. κατά το πέρασμα προς τα πίσω, στέλνει μόνο τις διαβαθμίσεις σε αυτές τις ενεργοποιήσεις στον προηγούμενο εργαζόμενο. Υπάρχει ένας μεγάλος χώρος σχεδιασμού για το πώς να προγραμματίσετε αυτά τα περάσματα και πώς να αθροίσετε τις διαβαθμίσεις σε μικροπαρτίδες. GPipe κάθε διεργασία εργαζομένου περνά διαδοχικά προς τα εμπρός και προς τα πίσω και στη συνέχεια συγκεντρώνει διαβαθμίσεις από πολλαπλές μικροπαρτίδες συγχρονισμένα στο τέλος. PipeDream Αντίθετα, προγραμματίζει κάθε εργαζόμενο να επεξεργάζεται εναλλακτικά περάσματα προς τα εμπρός και προς τα πίσω.

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων Προς τα εμπρός
Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων Οπισθοδρομικός
Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων Ενημέρωση
Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων Idle
GPipe

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

PipeDream

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

Σύγκριση των σχημάτων διοχέτευσης GPipe και PipeDream, χρησιμοποιώντας 4 μικροπαρτίδες ανά παρτίδα. Οι μικροπαρτίδες 1-8 αντιστοιχούν σε δύο διαδοχικές παρτίδες δεδομένων. Στην εικόνα, το "(αριθμός)" υποδεικνύει σε ποια μικροπαρτίδα εκτελείται μια λειτουργία και ο δείκτης επισημαίνει το αναγνωριστικό εργαζόμενου. Σημειώστε ότι το PipeDream αποκτά μεγαλύτερη αποτελεσματικότητα εκτελώντας ορισμένους υπολογισμούς με παλιές παραμέτρους.

Παραλληλισμός τανυστών

Ο παραλληλισμός αγωγών χωρίζει ένα μοντέλο «κάθετα» ανά στρώμα. Είναι επίσης δυνατό να διαχωριστούν "οριζόντια" ορισμένες λειτουργίες σε ένα επίπεδο, το οποίο συνήθως ονομάζεται Παράλληλος τανυστής εκπαίδευση. Για πολλά μοντέρνα μοντέλα (όπως το Μετασχηματιστής), το σημείο συμφόρησης υπολογισμού πολλαπλασιάζει μια μήτρα παρτίδας ενεργοποίησης με μια μήτρα μεγάλου βάρους. Πολλαπλασιασμός πίνακα μπορεί να θεωρηθεί ως κουκκίδες μεταξύ ζευγαριών σειρών και στηλών. είναι δυνατό να υπολογίσετε ανεξάρτητα προϊόντα κουκκίδων σε διαφορετικές GPU ή να υπολογίσετε μέρη κάθε προϊόντος κουκκίδων σε διαφορετικές GPU και να συνοψίσετε τα αποτελέσματα. Με οποιαδήποτε από τις δύο στρατηγικές, μπορούμε να τεμαχίσουμε τη μήτρα βάρους σε «θραύσματα» ίσου μεγέθους, να φιλοξενήσουμε κάθε θραύσμα σε διαφορετική GPU και να χρησιμοποιήσουμε αυτό το θραύσμα για να υπολογίσουμε το σχετικό τμήμα του συνολικού προϊόντος μήτρας πριν επικοινωνήσουμε αργότερα για να συνδυάσουμε τα αποτελέσματα.

Ένα παράδειγμα είναι Megatron-LM, το οποίο παραλληλίζει τους πολλαπλασιασμούς πινάκων εντός των επιπέδων αυτοπροσοχής και MLP του μετασχηματιστή. PTD-P χρησιμοποιεί τανυστή, δεδομένα και παραλληλισμό αγωγών. Το πρόγραμμα αγωγών του εκχωρεί πολλαπλά μη διαδοχικά επίπεδα σε κάθε συσκευή, μειώνοντας την επιβάρυνση των φυσαλίδων με κόστος περισσότερης επικοινωνίας δικτύου.

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

Μείγμα Εμπειρογνωμόνων (MoE)

Με την Μείγμα Εμπειρογνωμόνων (MoE) προσέγγιση, μόνο ένα κλάσμα του δικτύου χρησιμοποιείται για τον υπολογισμό της εξόδου για οποιαδήποτε είσοδο. Ένα παράδειγμα προσέγγισης είναι να υπάρχουν πολλά σύνολα βαρών και το δίκτυο μπορεί να επιλέξει ποιο σύνολο θα χρησιμοποιήσει μέσω ενός μηχανισμού πύλης κατά τον χρόνο συμπερασμάτων. Αυτό επιτρέπει πολλές περισσότερες παραμέτρους χωρίς αυξημένο υπολογιστικό κόστος. Κάθε σύνολο βαρών αναφέρεται ως «ειδικοί», με την ελπίδα ότι το δίκτυο θα μάθει να εκχωρεί εξειδικευμένους υπολογισμούς και δεξιότητες σε κάθε ειδικό. Διαφορετικοί ειδικοί μπορούν να φιλοξενηθούν σε διαφορετικές GPU, παρέχοντας έναν σαφή τρόπο για να αυξηθεί ο αριθμός των GPU που χρησιμοποιούνται για ένα μοντέλο.

Τεχνικές Εκπαίδευσης Μεγάλων Νευρωνικών Δικτύων

Απεικόνιση στρώματος μείγματος εμπειρογνωμόνων (MoE). Μόνο 2 από τα n Οι ειδικοί επιλέγονται από το δίκτυο πύλης. (Η εικόνα προσαρμόστηκε από: Shazeer et al., 2017)

GShard κλιμακώνει έναν μετασχηματιστή MoE έως και 600 δισεκατομμύρια παραμέτρους με ένα σχήμα όπου μόνο τα επίπεδα MoE διαχωρίζονται σε πολλαπλές συσκευές TPU και άλλα επίπεδα αντιγράφονται πλήρως. Διακόπτης μετασχηματιστή κλιμακώνει το μέγεθος του μοντέλου σε τρισεκατομμύρια παραμέτρους με ακόμη μεγαλύτερη αραιότητα, δρομολογώντας μία είσοδο σε έναν μόνο ειδικό.

Άλλα σχέδια εξοικονόμησης μνήμης

Υπάρχουν πολλές άλλες υπολογιστικές στρατηγικές για να κάνουν την εκπαίδευση όλο και πιο μεγάλων νευρωνικών δικτύων πιο προσιτή. Για παράδειγμα:

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

  • Προπόνηση Μικτής Ακρίβειας είναι η εκπαίδευση μοντέλων χρησιμοποιώντας αριθμούς χαμηλότερης ακρίβειας (συνήθως FP16). Οι σύγχρονοι επιταχυντές μπορούν να φτάσουν πολύ υψηλότερους αριθμούς FLOP με αριθμούς χαμηλότερης ακρίβειας και εξοικονομείτε επίσης τη μνήμη RAM της συσκευής. Με την κατάλληλη φροντίδα, το μοντέλο που προκύπτει δεν μπορεί να χάσει σχεδόν καμία ακρίβεια.

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

  • Βελτιστοποιητές αποδοτικής μνήμης έχουν προταθεί για τη μείωση του αποτυπώματος μνήμης της κατάστασης λειτουργίας που διατηρεί ο βελτιστοποιητής, Όπως Προσαρμογέας.

  • Συμπίεση μπορεί επίσης να χρησιμοποιηθεί για την αποθήκευση ενδιάμεσων αποτελεσμάτων στο δίκτυο. Για παράδειγμα, Ουσία συμπιέζει τις ενεργοποιήσεις που αποθηκεύονται για το πέρασμα προς τα πίσω. DALL · Ε συμπιέζει τις διαβαθμίσεις πριν τις συγχρονίσει.


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


Ευχαριστίες
Ευχαριστώ τους Nikolas Tezak, Sam Altman, Daniel Gackle, Ilya Sutskever και Steven Adler για τα σχόλια σχετικά με τα προσχέδια. Χάρη στους Justin Jay Wang, Bianca Martin και Steve Dowling για την επικοινωνία και το σχεδιασμό.

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

Περισσότερα από OpenAI