Τεχνικός ΟΔΗΓΟΣ

Συσσώρευση κλίσης

Η συσσώρευση διαβάθμισης σάς επιτρέπει να προσομοιώσετε ένα μεγάλο μέγεθος παρτίδας σε περιορισμένη μνήμη GPU, αθροίζοντας τις διαβαθμίσεις σε πολλές μικρές μίνι παρτίδες πριν ενημερώσετε τα βάρη.

2 λεπτά ανάγνωσηΤελευταία ενημέρωση

Επισκόπηση

It is the standard workaround for training big models when memory is the bottleneck.

Βαθιά κατάδυση

Κανονικά ένα βήμα εκπαίδευσης επεξεργάζεται μια παρτίδα, υπολογίζει τις κλίσεις και ενημερώνει αμέσως τις παραμέτρους. Με τη συσσώρευση διαβάθμισης, εκτελείτε πολλά περάσματα προς τα εμπρός και προς τα πίσω σε μικρότερες μικρο-παρτίδες, προσθέτοντας τις διαβαθμίσεις τους μαζί στα buffer παραμέτρων και καλείτε το βήμα βελτιστοποίησης (και μηδενίζετε τις διαβαθμίσεις) μόνο μετά από N μικρο-παρτίδες. Το πραγματικό μέγεθος παρτίδας γίνεται μέγεθος μικρο-παρτίδας επί N, παρόλο που η μνήμη αιχμής περιέχει μόνο μία μικρο-παρτίδα ενεργοποιήσεων. Αυτό έχει σημασία επειδή πολλές συνταγές εκπαίδευσης προϋποθέτουν μεγάλες παρτίδες για σταθερά στατιστικά στοιχεία και επειδή μοντέλα όπως οι μεγάλοι μετασχηματιστές δεν μπορούν να χωρέσουν μια πλήρη παρτίδα στόχο σε μία μόνο συσκευή. Το catch: Τα στατιστικά στοιχεία κανονικοποίησης παρτίδας υπολογίζονται ανά μικρο-παρτίδα, επομένως η νόρμα επιπέδου ή η νόρμα ομάδας συνδυάζονται καλύτερα με τη συσσώρευση και πρέπει να κλιμακώσετε σωστά την απώλεια για να διατηρήσετε σωστά τον αποτελεσματικό ρυθμό εκμάθησης.

Τεχνική διορατικότητα

Επειδή οι διαβαθμίσεις μιας αθροιστικής απώλειας είναι αθροιστικές, η συσσώρευση διαβαθμίσεων σε N μικρο-παρτίδες ισοδυναμεί μαθηματικά με μια μεγάλη παρτίδα, με την προϋπόθεση ότι έχετε τον σωστό μέσο όρο. Οι υλοποιήσεις τυπικά διαιρούν κάθε απώλεια μικρο-παρτίδας με Ν πριν από την αντίστροφη, έτσι η συσσωρευμένη κλίση ισούται με τη μέση τιμή για την πλήρη αποτελεσματική παρτίδα. Παραλείπετε το optimizer.step() και το zero_grad() μέχρι την Nth micro-battch, ανταλλάσσοντας επιπλέον υπολογιστικό χρόνο για μειωμένη μνήμη αιχμής.

Στρατηγικός αντίκτυπος

Κόστος και προϋπολογισμός

Οι αποφάσεις για την αρχιτεκτονική καθορίζουν την απόδοση και το λειτουργικό κόστος για χρόνια.

Σαφέστερες αποφάσεις

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

Ελεγχος ποιότητας

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

Το μέλλον της συσσώρευσης κλίσης

Η συσσώρευση κλίσης θα παραμείνει ως προεπιλεγμένος μοχλός, καθώς τα μεγέθη των μοντέλων ξεπερνούν τη μνήμη μιας συσκευής. Συνδυάζεται όλο και περισσότερο με μικτή ακρίβεια, σημεία ελέγχου ενεργοποίησης, μηδενικό διαμοιρασμό και παραλληλισμό αγωγών σε πλαίσια όπως το DeepSpeed ​​και το FSDP. Περιμένετε αυστηρότερο αυτοματισμό όπου οι βιβλιοθήκες συντονίζουν αυτόματα τα βήματα συσσώρευσης σε έναν προϋπολογισμό μνήμης και συνεχή σημασία για τη βελτίωση των μεγάλων μοντέλων σε μέτριο υλικό, συμπεριλαμβανομένων των GPU των καταναλωτών, όπου ξεκλειδώνει εκπαίδευση που διαφορετικά θα ήταν αδύνατη.

Υλοποίηση σε πραγματικό κόσμο

Βελτιστοποιήστε ένα μοντέλο μεγάλης γλώσσας σε μια μοναδική GPU καταναλωτή, συγκεντρώνοντας περισσότερες από 8 ή 16 μικρο-παρτίδες για να φτάσετε σε μια αποτελεσματική παρτίδα εκατοντάδων.

Εκπαίδευση μοντέλων όρασης ή τμηματοποίησης υψηλής ανάλυσης όπου χωράει ακόμη και μια παρτίδα των 2, αλλά η συνταγή χρειάζεται μια αποτελεσματική παρτίδα 32.

Το Hugging Face Trainer και το PyTorch Lightning εκθέτουν μια ρύθμιση gradient_accumulation_steps που χρησιμοποιείται συνήθως σε ρυθμίσεις περιορισμένης VRAM.

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

Κίνδυνοι & προστατευτικά κιγκλιδώματα

Η βελτιστοποίηση ενός σημείου αναφοράς μπορεί να κρύψει ευρύτερες αδυναμίες του συστήματος.

Το κόστος υποδομής και συντήρησης συχνά υποτιμάται.

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

Οδικός Χάρτης Εφαρμογής

1

Καθορίστε τους στόχους καθυστέρησης, ποιότητας και κόστους πριν από την εφαρμογή.

2

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

3

Παρακολούθηση οργάνου για σφάλματα, μετατόπιση και επιπτώσεις από τον χρήστη.

4

Προετοιμάστε διαδρομές επαναφοράς και απόκρισης συμβάντος πριν την κλιμάκωση.

Συνεχίστε την εξερεύνηση

Free newsletter

Get the daily AI briefing

Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.

One email each weekday. Unsubscribe in one click. We never sell or share your address.

Test yourself

Take the Gradient Accumulation quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

Έναρξη κουίζ

Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation

Επόμενος οδηγός

Διαβαθμίσεις που εξαφανίζονται και εκρήγνυνται

Συχνές ερωτήσεις

What is Gradient Accumulation?

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

Τι σας επιτρέπει να κάνετε κυρίως η συσσώρευση διαβάθμισης;

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

Κατά τη συσσώρευση, πότε καλείτε το βήμα του βελτιστοποιητή και μηδενίζετε τις διαβαθμίσεις;

Συσσωρεύετε διαβαθμίσεις σε N μικρο-παρτίδες και ενημερώνετε μόνο μία φορά στο τέλος του κύκλου.

Ποιο στρώμα κανονικοποίησης ζευγαρώνει πιο καθαρά με τη συσσώρευση κλίσης;

Το Batch-norm υπολογίζει στατιστικά στοιχεία ανά μικρο-παρτίδα, επομένως ο κανόνας επιπέδου ή ομάδας αποφεύγει την αναντιστοιχία με μικρές μικρο-παρτίδες.