Η ζήτηση μνήμης GPU περιλαμβάνει τα δεδομένα και τα βάρη που χρησιμοποιούνται, τα ενδιάμεσα αποτελέσματα, τους χώρους εργασίας του χρόνου εκτέλεσης και τις κρυφές μνήμες που εξαρτώνται από το φόρτο εργασίας. Μετρήστε τη μέγιστη χρήση στην προβλεπόμενη ακρίβεια, μέγεθος παρτίδας και παραλληλισμό· το αποθηκευμένο μέγεθος του μοντέλου είναι μόνο μία είσοδος.
Επιλέξτε το φόρτο εργασίας πριν επιλέξετε το GPU
Μια προδιαγραφή GPU γίνεται χρήσιμη όταν γνωρίζετε το λογισμικό και την εργασία που θα εκτελέσει. Η απόδοση, η επεξεργασία εικόνας, η εκπαίδευση και η συμπερασματολογία έχουν διαφορετικά μοτίβα μνήμης και υπολογισμού. Ελέγξτε την υποστηριζόμενη αρχιτεκτονική GPU, τους οδηγούς και τον χρόνο εκτέλεσης της εφαρμογής πριν συγκρίνετε χωρητικότητα. Μια κάρτα με αρκετή μνήμη μπορεί να είναι ακατάλληλη αν η απαιτούμενη διαδρομή λογισμικού ή λειτουργία δεν υποστηρίζεται.
Περιγράψτε το μέγιστο μέγεθος εισόδου, την ακρίβεια, το μέγεθος παρτίδας και την ταυτόχρονη εργασία που σκοπεύετε να επιτρέψετε. Για τη συμπερασματολογία, συμπεριλάβετε το μεγαλύτερο υποστηριζόμενο αίτημα και τις ταυτόχρονες συνεδρίες. Για την απόδοση, συμπεριλάβετε την αντιπροσωπευτική σκηνή και τις υφές. Μια επιτυχημένη μικροσκοπική επίδειξη είναι απόδειξη ότι η στοίβα μπορεί να ξεκινήσει· δεν είναι απόδειξη ότι ο πλήρης φόρτος εργασίας παραγωγής χωράει.
Διαχωρίστε τα μόνιμα δεδομένα από τη μνήμη εργασίας
Τα βάρη ή τα στοιχεία εισόδου μπορούν να παραμένουν στη συσκευή ενώ τα ενδιάμεσα αποτελέσματα και οι προσωρινοί buffers εμφανίζονται κατά την εκτέλεση. Η εκπαίδευση μπορεί επιπλέον να απαιτεί κλίσεις και κατάσταση βελτιστοποιητή. Τα φόρτα εργασίας συμπερασματολογίας μπορούν να διατηρούν κρυφές μνήμες των οποίων το μέγεθος αλλάζει με το αίτημα. Η ακριβής διάταξη εξαρτάται από το μοντέλο, το πλαίσιο και την υλοποίηση. Μην εφαρμόζετε έναν καθολικό πολλαπλασιαστή σε κάθε εργασία και μην τον θεωρείτε εγγύηση χωρητικότητας.
Ως απλό αριθμητικό παράδειγμα, ένα υποθετικό μοντέλο επτά δισεκατομμυρίων παραμέτρων που αναπαρίσταται με δύο bytes ανά παράμετρο χρειάζεται περίπου δεκατέσσερα δισεκατομμύρια bytes μόνο για αυτές τις παραμέτρους. Ο υπολογισμός αυτός εξαιρεί τις εκχωρήσεις του χρόνου εκτέλεσης, τις ενεργοποιήσεις, τις κρυφές μνήμες και την επιβάρυνση μορφής. Είναι ένα παράδειγμα σχεδιασμού χαμηλότερου επιπέδου, όχι δήλωση ότι ένα τέτοιο φόρτο εργασίας χωράει σε μια συγκεκριμένη διαμόρφωση SwissOctet.
| Συστατικό μνήμης | Τι το αλλάζει | Πώς να το διερευνήσετε |
|---|---|---|
| Βάρη ή στοιχεία σκηνής | Μέγεθος μοντέλου, αναπαράσταση και φορτωμένα στοιχεία | Επιθεωρήστε τη μορφή που έχει αναπτυχθεί και την πραγματική φορτωμένη εκχώρηση |
| Ενδιάμεσα αποτελέσματα | Σχήμα εισόδου και μέγεθος παρτίδας | Μετρήστε μια πλήρη αντιπροσωπευτική λειτουργία |
| Κρυφές μνήμες | Μήκος αιτήματος και παραλληλισμός | Ασκήστε το μέγιστο υποστηριζόμενο φόρτο εργασίας |
| Χώροι εργασίας και χρόνος εκτέλεσης | Βιβλιοθήκες, πυρήνες και στρατηγική εκτέλεσης | Παρατηρήστε τη μέγιστη χρήση συσκευής και πλαισίου |
Μετρήστε τη μέγιστη χρήση μέσω της σωστής προβολής
Οι μετρήσεις του πλαισίου και οι μετρήσεις σε επίπεδο συσκευής μπορούν να περιγράφουν διαφορετικά πράγματα. Το PyTorch διακρίνει τη μνήμη που εκχωρείται σε tensors από τη μνήμη που δεσμεύεται από τον caching allocator του και παρέχει μετρήσεις κορυφής. Η τεκμηρίωση οπτικοποίησης μνήμης εξηγεί επίσης ότι οι εκχωρήσεις που γίνονται έξω από τον allocator του μπορεί να μην εμφανίζονται σε αυτή την προβολή. Συγκρίνετε την αναφορά του πλαισίου με την ευρύτερη κατάσταση της συσκευής αντί να υποθέτετε ότι ένας αριθμός καλύπτει κάθε εκχώρηση.
Κάντε προθέρμανση της πραγματικής λειτουργίας και μετά μετρήστε την πλήρη εργασία και την ρεαλιστική επικάλυψη μεταξύ εργασιών. Καταγράψτε τις εκδόσεις λογισμικού και τις ακριβείς συνθήκες εισόδου. Ένα συμβάν εξάντλησης μνήμης μπορεί να συμβεί σε μια προσωρινή κορύφωση, οπότε ένα ήσυχο τελικό στιγμιότυπο μπορεί να χάσει το πρόβλημα. Κρατήστε τις διαγνωστικές καταγραφές ιδιωτικές όταν μπορεί να περιέχουν λεπτομέρειες του μοντέλου ή πληροφορίες για τις εισόδους της εφαρμογής σας.
Αντιμετωπίστε το μέγεθος παρτίδας και την ακρίβεια ως επιλογές σχεδιασμού
Μεγαλύτερες παρτίδες μπορούν να αλλάξουν τόσο τη χρήση όσο και τη ζήτηση μνήμης. Η καθοδήγηση απόδοσης του NVIDIA συζητά την αλληλεπίδραση μεταξύ σχήματος λειτουργίας, αριθμητικής έντασης και δυνατοτήτων υλικού. Το χρήσιμο μέγεθος παρτίδας εξαρτάται από τον στόχο καθυστέρησης του φόρτου εργασίας καθώς και από τη διεκπεραιωτικότητα. Μια πολιτική παρτίδας που μεγιστοποιεί την ολοκληρωμένη εργασία ανά δευτερόλεπτο μπορεί να κάνει τους μεμονωμένους χρήστες να περιμένουν περισσότερο από όσο επιτρέπει η εφαρμογή.
Η μειωμένη ακρίβεια ή η κβαντοποίηση μπορεί να μειώσει ορισμένες απαιτήσεις μνήμης, αλλά η συμβατότητα και η ποιότητα εξόδου χρειάζονται δοκιμή. Κρατήστε ένα σύνολο δεδομένων αξιολόγησης και συγκρίνετε τα σχετικά αποτελέσματα μετά από αλλαγή μορφής. Μην αλλάζετε την αναπαράσταση ενός μοντέλου μόνο και μόνο για να χωρέσει χωρίς να ελέγξετε τη συμπεριφορά από την οποία εξαρτάται το έργο. Η βελτιστοποίηση μνήμης θα πρέπει να διατηρεί το απαιτούμενο αποτέλεσμα, όχι απλώς να αποφεύγει ένα σφάλμα εκχώρησης.
Κρατήστε και την υπόλοιπη μηχανή στον προϋπολογισμό
Ο CPU, ο host RAM και η διαδρομή αποθήκευσης προετοιμάζουν και τροφοδοτούν την εργασία GPU. Η αργή αποκωδικοποίηση εισόδου ή η ανεπαρκής μνήμη του host μπορούν να αφήσουν τον επιταχυντή να περιμένει. Τα μεγάλα αρχεία μοντέλων και σύνολα δεδομένων χρειάζονται επίσης αρκετό χώρο δίσκου για εγκατάσταση, προσωρινές μετατροπές και ενημερώσεις. Αξιολογήστε ολόκληρη τη ροή αντί να αγοράσετε μια GPU και να περιμένετε κάθε προηγούμενο βήμα να γίνει ταχύτερο.
Οι πολλαπλές GPU δεν συμπεριφέρονται αυτόματα ως μία συσκευή συγκεντρωμένης μνήμης. Η εφαρμογή πρέπει να χρησιμοποιεί κατάλληλη παράλληλη στρατηγική και η επιβάρυνση επικοινωνίας μπορεί να έχει σημασία. Επιβεβαιώστε πόσες συσκευές παρέχονται, τη μνήμη καθεμιάς και την υποστηριζόμενη διάταξη του λογισμικού. Μια λίστα ονομάτων αναβάθμισης GPU δεν είναι επαληθευμένη περιγραφή της μνήμης που είναι διαθέσιμη σε μία μη τροποποιημένη διεργασία.
Χρησιμοποιήστε ένα αντιπροσωπευτικό τεστ αποδοχής
Ορίστε ένα τεστ με την επιλεγμένη στοίβα λογισμικού, την αναμενόμενη μέγιστη είσοδο και τον επιτρεπόμενο παραλληλισμό. Μετρήστε τη μέγιστη μνήμη, τον χρόνο ολοκλήρωσης, τα σφάλματα και την ποιότητα της εξόδου. Κρατήστε κάποιο περιθώριο για τη φυσιολογική διακύμανση του χρόνου εκτέλεσης και τη συντήρηση, με το ποσό να δικαιολογείται από παρατηρήσεις. Εάν ο φόρτος εργασίας δεν χωράει, αποφασίστε αν θα μειώσετε τον παραλληλισμό, θα αλλάξετε την υλοποίηση ή θα επιλέξετε διαφορετικό υλικό.
Το Tensor GPU παρουσιάζει επιλογές σχετικές με GPU στον κατάλογο SwissOctet. Επιβεβαιώστε την ακριβή συσκευή, τη VRAM ανά συσκευή, τη συμβατότητα οδηγών και την επιλεγμένη διαμόρφωση πριν βασιστείτε σε αυτό. Ο ιστότοπος δεν παρέχει εγγύηση καταλληλότητας για συγκεκριμένη εφαρμογή. Ένα τεκμηριωμένο τεστ αποδοχής συνδέει αυτές τις λεπτομέρειες υλικού με την εργασία που χρειάζεστε να εκτελέσει το μηχάνημα.
Η πρακτική λίστα ελέγχου σας.
- Επιβεβαιώστε την υποστηριζόμενη αρχιτεκτονική GPU και τον χρόνο εκτέλεσης.
- Υπολογίστε βάρη, ενδιάμεσα, κρυφές μνήμες και χώρους εργασίας.
- Μετρήστε τις κορυφώσεις στη μέγιστη προβλεπόμενη είσοδο και παραλληλισμό.
- Συγκρίνετε τις προβολές μνήμης του πλαισίου και σε επίπεδο συσκευής.
- Επικυρώστε την έξοδο μετά από αλλαγές ακρίβειας ή μορφής.
- Επιβεβαιώστε την ακριβή VRAM ανά συσκευή πριν παραγγείλετε.
Οι λεπτομέρειες που έχουν σημασία.
Το αποθηκευμένο μέγεθος του μοντέλου ισούται με τη ζήτηση VRAM;+
Όχι. Η εκτέλεση προσθέτει ενδιάμεσα αποτελέσματα, χώρους εργασίας, κρυφές μνήμες και άλλες εκχωρήσεις, ενώ οι μορφές αποθήκευσης μπορούν να διαφέρουν από τις αναπαραστάσεις στη μνήμη.
Η προσθήκη μιας δεύτερης GPU θα διπλασιάσει αυτόματα τη χρησιμοποιήσιμη μνήμη;+
Όχι. Η εφαρμογή χρειάζεται κατάλληλη παράλληλη στρατηγική. Τα όρια ανά συσκευή και η συμπεριφορά επικοινωνίας εξακολουθούν να έχουν σημασία.
Μπορεί η μειωμένη ακρίβεια να λύσει πάντα ένα πρόβλημα εξάντλησης μνήμης;+
Όχι. Μπορεί να μειώσει ορισμένες εκχωρήσεις, αλλά η υποστήριξη, οι υπόλοιποι buffers και η αποδεκτή ποιότητα εξόδου πρέπει να δοκιμαστούν.
Πηγαίνετε στην πηγή.
Αυτές οι αναφορές υποστηρίζουν τις τεχνικές έννοιες σε αυτόν τον οδηγό. Ακολουθήστε την τρέχουσα τεκμηρίωση πριν αλλάξετε ένα σύστημα παραγωγής.
- NVIDIA: Ξεκινήστε με την απόδοση βαθιάς μάθησης docs.nvidia.com
- PyTorch: Κατανόηση της χρήσης μνήμης CUDA docs.pytorch.org
- PyTorch: Διαχείριση μνήμης CUDA docs.pytorch.org
Συντακτική καθοδήγηση από SwissOctet. Τα παραδείγματα είναι ενδεικτικά. Οι προδιαγραφές υπηρεσιών, οι διαθέσιμες επιλογές και οι συμβατικοί όροι πρέπει να επαληθεύονται ξεχωριστά.