ZeRO και Sharded Optimizers
Το ZeRO (Zero Redundancy Optimizer) εξαλείφει τη άσκοπη αντιγραφή μνήμης του παραλληλισμού δεδομένων μοιράζοντας την κατάσταση του βελτιστοποιητή, τις διαβαθμίσεις και τα βάρη στις GPU.
Επισκόπηση
It lets you train enormous models with the simplicity of data parallelism but a fraction of the per-GPU memory.
Βαθιά κατάδυση
Στον συνηθισμένο παραλληλισμό δεδομένων, κάθε GPU αποθηκεύει ένα περιττό πλήρες αντίγραφο της κατάστασης, των κλίσεων και των παραμέτρων του βελτιστοποιητή, κάτι που είναι εξαιρετικά σπατάλη, ειδικά για τον Adam, όπου η κατάσταση βελτιστοποίησης μπορεί να είναι πολλές φορές το μέγεθος του ίδιου του μοντέλου. Το ZeRO, που εισήχθη από τον Microsoft στο DeepSpeed, καταργεί αυτόν τον πλεονασμό κατατμώντας αυτούς τους τανυστές σε GPU, έτσι ώστε κάθε συσκευή να έχει μόνο ένα κομμάτι. Το ZeRO έρχεται σε τρία προοδευτικά στάδια: Stage 1 shards optimizer state, Stage 2 προσθέτει gradient sharding και Stage 3 shards τις ίδιες τις παραμέτρους. Όπως χρειάζεται, οι GPU συγκεντρώνουν τα κομμάτια που λείπουν μέσω επικοινωνίας, υπολογίζουν και τα απελευθερώνουν. Το αποτέλεσμα είναι δραματικά χαμηλότερη μνήμη ανά GPU, επιτρέποντας εκπαίδευση δισεκατομμυρίων έως τρισεκατομμυρίων παραμέτρων, διατηρώντας παράλληλα το εύκολο προγραμματιστικό μοντέλο παραλληλισμού δεδομένων.
Τεχνική διορατικότητα
Το ZeRO ανταλλάσσει επιπλέον επικοινωνία για εξοικονόμηση μνήμης. Στο Στάδιο 3, πριν από το πέρασμα προς τα εμπρός ενός επιπέδου, ένα all-gather συλλέγει τις πλήρεις παραμέτρους αυτού του επιπέδου σε κάθε GPU. Στη συνέχεια, οι μη ιδιόκτητες φέτες απορρίπτονται για να ανακτηθεί η μνήμη. Οι διαβαθμίσεις είναι μειωμένες-διασπορά, έτσι κάθε GPU διατηρεί μόνο το τμήμα διαβάθμισης που ταιριάζει με τις παραμέτρους που διαθέτει. Το FSDP (Fully Sharded Data Parallel) της PyTorch υλοποιεί την ίδια ιδέα εγγενώς, τυλίγοντας τις ενότητες σε θραύσματα και ανανεώνοντας εν κινήσει.
Στρατηγικός αντίκτυπος
Κόστος και προϋπολογισμός
Οι αποφάσεις για την αρχιτεκτονική καθορίζουν την απόδοση και το λειτουργικό κόστος για χρόνια.
Σαφέστερες αποφάσεις
Η τεχνική εκπαίδευση βοηθά τις ομάδες να επιλέξουν τη σωστή στοίβα, όχι μόνο τη νεότερη.
Ελεγχος ποιότητας
Οι καλύτερες επιλογές μηχανικής μειώνουν τα περιστατικά αξιοπιστίας στην παραγωγή.
Το μέλλον των ZeRO και Sharded Optimizers
Το Sharding γίνεται η προεπιλογή για προπόνηση μεγάλης κλίμακας και όχι μια εξωτική επιλογή. Αναμένετε βαθύτερη ενσωμάτωση με την εκφόρτωση (ώθηση τμημάτων σε CPU ή NVMe μέσω ZeRO-Infinity), καλύτερη επικάλυψη όλων των συλλογών και μείωσης-σκέδασης με υπολογισμό για απόκρυψη του κόστους τους και συνδυασμούς με παραλληλισμό τανυστών και αγωγών. Καθώς τα μοντέλα συνεχίζουν να αυξάνονται, οι βελτιστοποιητές κομματιού που λειτουργούν αποδοτικά στη μνήμη είναι κεντρικός για την προσαρμογή τους σε ρεαλιστικούς προϋπολογισμούς υλικού.
Υλοποίηση σε πραγματικό κόσμο
Χρησιμοποιώντας το DeepSpeed ZeRO Stage 2 για να ρυθμίσετε με ακρίβεια ένα μοντέλο γλώσσας πολλών δισεκατομμυρίων παραμέτρων που διαφορετικά θα ξεχείλιζε τη μνήμη GPU.
Εκπαίδευση με το PyTorch FSDP, το οποίο διαχωρίζει τις παραμέτρους, τις διαβαθμίσεις και την κατάσταση του βελτιστοποιητή σε όλες τις GPU και τις συγκεντρώνει ανά επίπεδο κατά παραγγελία.
Εφαρμογή ZeRO-Offload για ώθηση της κατάστασης βελτιστοποίησης στη μνήμη CPU, επιτρέποντας σε μια μεμονωμένη GPU να εκπαιδεύει ένα μοντέλο πολλές φορές μεγαλύτερο από τη VRAM της.
Κλιμάκωση ενός μοντέλου τρισεκατομμυρίων παραμέτρων με το ZeRO-Infinity μέσω ροής θραυσμάτων παραμέτρων από τον χώρο αποθήκευσης NVMe όταν εξαντληθεί η μνήμη GPU και CPU.
Κίνδυνοι & προστατευτικά κιγκλιδώματα
Η βελτιστοποίηση ενός σημείου αναφοράς μπορεί να κρύψει ευρύτερες αδυναμίες του συστήματος.
Το κόστος υποδομής και συντήρησης συχνά υποτιμάται.
Τα κενά ασφάλειας και παρατηρητικότητας μπορούν να αυξηθούν καθώς τα συστήματα γίνονται πιο πολύπλοκα.
Οδικός Χάρτης Εφαρμογής
Καθορίστε τους στόχους καθυστέρησης, ποιότητας και κόστους πριν από την εφαρμογή.
Σημείο αναφοράς υπό ρεαλιστικές συνθήκες φορτίου και δεδομένων.
Παρακολούθηση οργάνου για σφάλματα, μετατόπιση και επιπτώσεις από τον χρήστη.
Προετοιμάστε διαδρομές επαναφοράς και απόκρισης συμβάντος πριν την κλιμάκωση.
Συνεχίστε την εξερεύνηση
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 ZeRO and Sharded Optimizers 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
Επόμενος οδηγός
Lookahead και Lion Optimizers
Συχνές ερωτήσεις
What is ZeRO and Sharded Optimizers?
Το ZeRO (Zero Redundancy Optimizer) εξαλείφει τη άσκοπη αντιγραφή μνήμης του παραλληλισμού δεδομένων μοιράζοντας την κατάσταση του βελτιστοποιητή, τις διαβαθμίσεις και τα βάρη στις GPU. Σας επιτρέπει να εκπαιδεύσετε τεράστια μοντέλα με την απλότητα του παραλληλισμού δεδομένων αλλά ένα κλάσμα της μνήμης ανά GPU.
Τι πλεονασμό εξαλείφει το ZeRO σε σύγκριση με τον απλό παραλληλισμό δεδομένων;
Ο τυπικός παραλληλισμός δεδομένων αποθηκεύει ένα πλήρες αντίγραφο της κατάστασης του βελτιστοποιητή, των κλίσεων και των βαρών σε κάθε GPU. Το ZeRO τα θρυμματίζει έτσι ώστε κάθε GPU να κρατά μόνο ένα κομμάτι.
Γιατί η κατάσταση βελτιστοποίησης είναι συχνά η μεγαλύτερη μνήμη με τον Adam;
Ο Adam διατηρεί τρέχουσες εκτιμήσεις, όπως η πρώτη και η δεύτερη στιγμή ανά παράμετρο, οι οποίες σε συνδυασμό με τα κύρια βάρη fp32 μπορούν να μειώσουν το μέγεθος του ίδιου του μοντέλου.
Τι σημαίνει το ZeRO Stage 3 που δεν κάνουν τα Στάδια 1 και 2;
Το Στάδιο 1 διαχωρίζει την κατάσταση του βελτιστοποιητή θραυσμάτων, το Στάδιο 2 προσθέτει διαβαθμίσεις και το Στάδιο 3 προχωρά περαιτέρω μοιράζοντας τις παραμέτρους του μοντέλου σε όλες τις GPU επίσης.
Στο ZeRO Stage 3, πώς μια GPU λαμβάνει τις πλήρεις παραμέτρους που χρειάζεται για την προώθηση ενός επιπέδου;
Πριν από τον υπολογισμό ενός επιπέδου, ένα all-gather συγκεντρώνει τις πλήρεις παραμέτρους του σε κάθε GPU. Μόλις ολοκληρωθούν, οι μη ιδιόκτητες φέτες ελευθερώνονται για να ανακτήσουν τη μνήμη.
Ποιο χαρακτηριστικό του PyTorch υλοποιεί εγγενώς τον διαμοιρασμό σε στυλ ZeRO;
Το Fully Sharded Data Parallel (FSDP) της PyTorch διαχωρίζει τις παραμέτρους, τις διαβαθμίσεις και την κατάσταση του βελτιστοποιητή, συλλέγοντάς τα και ανανεώνοντάς τα εν κινήσει, αντικατοπτρίζοντας το ZeRO.