Πώς να χρησιμοποιήσετε τις GPU της NVIDIA για εκπαίδευση με τεχνητή νοημοσύνη

Πώς να χρησιμοποιήσετε τις GPU της NVIDIA για εκπαίδευση με τεχνητή νοημοσύνη

Σύντομη απάντηση: Χρησιμοποιήστε GPU NVIDIA για εκπαίδευση με τεχνητή νοημοσύνη, επιβεβαιώνοντας πρώτα ότι το πρόγραμμα οδήγησης και η GPU είναι ορατά με το nvidia-smi , στη συνέχεια εγκαθιστώντας ένα συμβατό framework/CUDA stack και εκτελώντας μια μικροσκοπική δοκιμή "model + batch on cuda". Εάν η μνήμη εξαντληθεί, μειώστε το μέγεθος της batch και χρησιμοποιήστε μικτή ακρίβεια, παρακολουθώντας παράλληλα τη χρήση, τη μνήμη και τις θερμοκρασίες.

Βασικά συμπεράσματα:

Έλεγχοι βάσης : Ξεκινήστε με το nvidia-smi . Διορθώστε την ορατότητα του προγράμματος οδήγησης πριν εγκαταστήσετε τα frameworks.

Συμβατότητα στοίβας : Διατηρήστε τις εκδόσεις του προγράμματος οδήγησης, του χρόνου εκτέλεσης CUDA και του πλαισίου ευθυγραμμισμένες για να αποτρέψετε σφάλματα και εύθραυστες εγκαταστάσεις.

Μικρή επιτυχία : Επιβεβαιώστε ότι εκτελείται ένα μόνο πέρασμα προς τα εμπρός στο CUDA πριν από την κλιμάκωση των πειραμάτων.

Πειθαρχία VRAM : Βασιστείτε σε μικτή ακρίβεια, συσσώρευση διαβάθμισης και σημείο ελέγχου για να ταιριάζει σε μεγαλύτερα μοντέλα.

Συνήθεια παρακολούθησης : Παρακολουθήστε τη χρήση, τα μοτίβα μνήμης, την ισχύ και τις θερμοκρασίες, ώστε να εντοπίζετε έγκαιρα τα σημεία συμφόρησης.

Άρθρα που ίσως σας ενδιαφέρουν μετά από αυτό:

🔗 Πώς να δημιουργήσετε έναν πράκτορα Τεχνητής Νοημοσύνης
Σχεδιάστε τη ροή εργασίας, τα εργαλεία, τη μνήμη και τα προστατευτικά του πράκτορά σας.

🔗 Πώς να αναπτύξετε μοντέλα τεχνητής νοημοσύνης
Ρυθμίστε περιβάλλοντα, συσκευάστε μοντέλα και στείλτε τα στην παραγωγή με αξιοπιστία.

🔗 Πώς να μετρήσετε την απόδοση της Τεχνητής Νοημοσύνης
Επιλέξτε μετρήσεις, εκτελέστε αξιολογήσεις και παρακολουθήστε την απόδοση με την πάροδο του χρόνου.

🔗 Πώς να αυτοματοποιήσετε εργασίες με τεχνητή νοημοσύνη
Αυτοματοποιήστε επαναλαμβανόμενες εργασίες με μηνύματα, ροές εργασίας και ενσωματώσεις.


1) Η συνολική εικόνα - τι κάνεις όταν «προπονείσαι με GPU» 🧠⚡

Όταν εκπαιδεύετε μοντέλα τεχνητής νοημοσύνης, κάνετε ως επί το πλείστον ένα βουνό από μαθηματικές πράξεις σε πίνακες. Οι GPU είναι κατασκευασμένες για αυτό το είδος παράλληλης εργασίας, επομένως πλαίσια όπως το PyTorch, το TensorFlow και το JAX μπορούν να αναλάβουν τη βαριά δουλειά από την GPU. ( Έγγραφα PyTorch CUDA , εγκατάσταση TensorFlow (pip) , Γρήγορη εκκίνηση JAX )

Στην πράξη, η «χρήση GPU NVIDIA για εκπαίδευση» συνήθως σημαίνει:

  • Οι παράμετροι του μοντέλου σας βρίσκονται (ως επί το πλείστον) σε GPU VRAM

  • Οι παρτίδες σας μετακινούνται από τη μνήμη RAM στη VRAM σε κάθε βήμα

  • Το forward pass και το backprop εκτελούνται σε πυρήνες CUDA ( Οδηγός Προγραμματισμού CUDA )

  • Οι ενημερώσεις του βελτιστοποιητή σας πραγματοποιούνται στην GPU (ιδανικά)

  • Παρακολουθείτε τις θερμοκρασίες, τη μνήμη, την αξιοποίηση, ώστε να μην μαγειρεύετε τίποτα 🔥 ( NVIDIA nvidia-smi docs )

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


2) Τι κάνει μια έκδοση εκπαίδευσης AI με GPU NVIDIA καλή 🤌

Αυτή είναι η ενότητα «μην χτίζεις σπίτι με ζελέ». Μια καλή ρύθμιση για το πώς να χρησιμοποιήσετε τις GPU της NVIDIA για εκπαίδευση AI είναι αυτή που έχει χαμηλό δραματικό φορτίο. Το χαμηλό δραματικό φορτίο είναι σταθερό. Το σταθερό σημαίνει γρήγορο. Το γρήγορο είναι... λοιπόν, γρήγορο 😄

Ένα ολοκληρωμένο σύστημα εκπαίδευσης συνήθως περιλαμβάνει:

  • Αρκετή VRAM για το μέγεθος παρτίδας + το μοντέλο + τις καταστάσεις του βελτιστοποιητή σας

    • Η VRAM είναι σαν χώρος για βαλίτσες. Μπορείς να πακετάρεις πιο έξυπνα, αλλά δεν μπορείς να πακετάρεις άπειρες.

  • Μια αντίστοιχη στοίβα λογισμικού (οδηγός + χρόνος εκτέλεσης CUDA + συμβατότητα πλαισίου) ( PyTorch Get Started (επιλογέας CUDA) , εγκατάσταση TensorFlow (pip) )

  • Γρήγορη αποθήκευση (το NVMe βοηθάει πολύ για μεγάλα σύνολα δεδομένων)

  • Αξιοπρεπής CPU + RAM , ώστε η φόρτωση δεδομένων να μην επιβαρύνει την GPU ( Οδηγός ρύθμισης απόδοσης PyTorch )

  • Ψύξη και ελεύθερος χώρος ισχύος (υποτιμημένο μέχρι που δεν είναι 😬)

  • Αναπαραγώγιμο περιβάλλον (venv/conda ή containers) ώστε οι αναβαθμίσεις να μην γίνονται χάος ( επισκόπηση του NVIDIA Container Toolkit )

Και κάτι ακόμα που οι άνθρωποι παραβλέπουν:

  • Μια συνήθεια παρακολούθησης - ελέγχετε τη μνήμη και τη χρήση της GPU όπως ελέγχετε τους καθρέφτες ενώ οδηγείτε. ( NVIDIA nvidia-smi docs )


3) Πίνακας σύγκρισης - δημοφιλείς τρόποι εκπαίδευσης με GPU NVIDIA (με ιδιορρυθμίες) 📊

Παρακάτω είναι ένα γρήγορο φυλλάδιο με τις συμβουλές για το «ποιο από τα δύο ταιριάζει;». Οι τιμές είναι πολύ ενδεικτικές (επειδή η πραγματικότητα ποικίλλει) και ναι, ένα από αυτά τα κελιά είναι λίγο υπερβολικό, επίτηδες.

Εργαλείο / Προσέγγιση Καλύτερο για Τιμή Γιατί λειτουργεί (ως επί το πλείστον)
PyTorch (βανίλια) PyTorch οι περισσότεροι άνθρωποι, τα περισσότερα έργα Δωρεάν Ευέλικτο, τεράστιο οικοσύστημα, εύκολη αποσφαλμάτωση - επίσης όλοι έχουν απόψεις
Έγγραφα για το PyTorch Lightning ομάδες, δομημένη εκπαίδευση Δωρεάν Μειώνει τους τυποποιημένους, πιο καθαρούς βρόχους. Μερικές φορές μοιάζει με «μαγεία», μέχρι που δεν συμβαίνει αυτό
Μετασχηματιστές Αγκαλιαστικού Προσώπου + Έγγραφα Εκπαιδευτή Εκπαιδευτή Βελτιστοποίηση NLP + LLM Δωρεάν Εκπαίδευση με μπαταρίες, εξαιρετικές προεπιλογές, γρήγορες νίκες 👍
Επιτάχυνση Επιτάχυνση εγγράφων πολλαπλές GPU χωρίς πόνο Δωρεάν Κάνει το DDP λιγότερο ενοχλητικό, καλό για κλιμάκωση χωρίς να ξαναγράφει τα πάντα
Έγγραφα DeepSpeed μεγάλα μοντέλα, κόλπα μνήμης Δωρεάν Μηδενική απόδοση, μείωση φόρτου, κλιμάκωση - μπορεί να είναι περίεργο αλλά ικανοποιητικό όταν κάνει κλικ
TensorFlow + Keras TF αγωγοί παραγωγής Δωρεάν Ισχυρά εργαλεία, καλή ιστορία ανάπτυξης. Σε μερικούς αρέσει, σε άλλους όχι
JAX + Flax Γρήγορη εκκίνηση JAX / Έγγραφα Flax έρευνα + λάτρεις της ταχύτητας Δωρεάν Η μεταγλώττιση XLA μπορεί να είναι απίστευτα γρήγορη, αλλά η διόρθωση σφαλμάτων μπορεί να φαίνεται... αφηρημένη
Επισκόπηση NVIDIA NeMo Ροές εργασίας ομιλίας + LLM Δωρεάν Βελτιστοποιημένο για NVIDIA stack, καλές συνταγές - μοιάζει σαν να μαγειρεύεις σε έναν φανταχτερό φούρνο 🍳
Επισκόπηση του κιτ εργαλείων Docker + NVIDIA Container Toolkit αναπαραγώγιμα περιβάλλοντα Δωρεάν Το «Λειτουργεί στο μηχάνημά μου» γίνεται «Λειτουργεί στα μηχανήματά μας» (ως επί το πλείστον, πάλι)

4) Βήμα πρώτο - επιβεβαιώστε ότι η GPU σας είναι σωστά ορατή 🕵️♂️

Πριν εγκαταστήσετε μια ντουζίνα πράγματα, επαληθεύστε τα βασικά.

Πράγματα που θέλετε να είναι αληθινά:

  • Το μηχάνημα βλέπει την GPU

  • Το πρόγραμμα οδήγησης NVIDIA έχει εγκατασταθεί σωστά

  • Η GPU δεν έχει κολλήσει να κάνει κάτι άλλο

  • Μπορείτε να το υποβάλετε με αξιόπιστο τρόπο

Ο κλασικός έλεγχος είναι:

Τι ψάχνετε:

  • Όνομα GPU (π.χ., RTX, σειρά A, κ.λπ.)

  • Έκδοση προγράμματος οδήγησης

  • Χρήση μνήμης

  • Εκτέλεση διεργασιών ( NVIDIA nvidia-smi docs )

Αν το nvidia-smi αποτύχει, σταματήστε αμέσως. Μην εγκαταστήσετε ακόμα frameworks. Είναι σαν να προσπαθείτε να ψήσετε ψωμί όταν ο φούρνος σας δεν είναι συνδεδεμένος στην πρίζα. ( NVIDIA System Management Interface (NVSMI) )

Μικρή ανθρώπινη σημείωση: μερικές φορές το nvidia-smi λειτουργεί, αλλά η εκπαίδευσή σας εξακολουθεί να αποτυγχάνει επειδή το runtime CUDA που χρησιμοποιείται από το framework σας δεν ταιριάζει με τις προσδοκίες του προγράμματος οδήγησης. Δεν είσαι χαζός. Έτσι είναι... έτσι είναι τα πράγματα 😭 ( PyTorch Get Started (επιλογέας CUDA) , TensorFlow install (pip) )


5) Δημιουργήστε τη στοίβα λογισμικού - προγράμματα οδήγησης, CUDA, cuDNN και τον «χορό της συμβατότητας» 💃

Εδώ είναι που οι άνθρωποι χάνουν ώρες. Το κόλπο είναι: διάλεξε ένα μονοπάτι και μείνε πιστός σε αυτό .

Επιλογή Α: CUDA με πακέτο πλαισίου (συχνά η πιο εύκολη)

Πολλές εκδόσεις PyTorch διαθέτουν το δικό τους runtime CUDA, που σημαίνει ότι δεν χρειάζεστε ένα πλήρες κιτ εργαλείων CUDA εγκατεστημένο σε όλο το σύστημα. Χρειάζεστε κυρίως ένα συμβατό πρόγραμμα οδήγησης NVIDIA. ( Ξεκινήστε με το PyTorch (επιλογέας CUDA) , Προηγούμενες εκδόσεις PyTorch (τροχοί CUDA) )

Πλεονεκτήματα:

  • Λιγότερα κινούμενα μέρη

  • Ευκολότερες εγκαταστάσεις

  • Πιο αναπαραγώγιμο ανά περιβάλλον

Μειονεκτήματα:

  • Αν αναμειγνύετε περιβάλλοντα αδιάφορα, μπορεί να μπερδευτείτε

Επιλογή Β: Εργαλειοθήκη CUDA συστήματος (περισσότερος έλεγχος)

Εγκαθιστάτε το κιτ εργαλείων CUDA στο σύστημα και ευθυγραμμίζετε τα πάντα με αυτό. ( Έγγραφα του κιτ εργαλείων CUDA )

Πλεονεκτήματα:

  • Περισσότερος έλεγχος για προσαρμοσμένες κατασκευές, κάποια ειδικά εργαλεία

  • Χρήσιμο για τη μεταγλώττιση ορισμένων λειτουργιών

Μειονεκτήματα:

  • Περισσότεροι τρόποι για να ταιριάξετε τις εκδοχές και να κλάψετε σιωπηλά

cuDNN και NCCL, σε ανθρώπινους όρους

  • Το cuDNN επιταχύνει τα βασικά στοιχεία βαθιάς μάθησης (συνελίξεις, bits RNN, κ.λπ.) ( έγγραφα NVIDIA cuDNN )

  • Το NCCL είναι η γρήγορη βιβλιοθήκη «επικοινωνίας GPU-προς-GPU» για εκπαίδευση πολλαπλών GPU ( επισκόπηση NCCL )

Αν κάνετε εκπαίδευση με πολλαπλές GPU, το NCCL είναι ο καλύτερός σας φίλος - και, κατά καιρούς, ο ιδιότροπος συγκάτοικός σας. ( Επισκόπηση NCCL )


6) Η πρώτη σας προπόνηση GPU (νοοτροπία παραδείγματος PyTorch) ✅🔥

Για να ακολουθήσετε την ενότητα Πώς να χρησιμοποιήσετε τις GPU της NVIDIA για εκπαίδευση στην Τεχνητή Νοημοσύνη , δεν χρειάζεστε πρώτα ένα τεράστιο έργο. Χρειάζεστε μια μικρή επιτυχία.

Βασικές ιδέες:

  • Εντοπισμός συσκευής

  • Μετακίνηση μοντέλου στη GPU

  • Μετακίνηση τανυστών στη GPU

  • Επιβεβαιώστε ότι τα περάσματα προς τα εμπρός τρέχουν εκεί ( έγγραφα PyTorch CUDA )

Πράγματα που πάντα ελέγχω νωρίς για την ψυχική μου υγεία:

Συνηθισμένα ερωτήματα όπως «γιατί είναι αργό;»

  • Το πρόγραμμα φόρτωσης δεδομένων σας είναι πολύ αργό (η ​​GPU αναμένει αδρανής) ( Οδηγός ρύθμισης απόδοσης PyTorch )

  • Ξέχασες να μετακινήσεις δεδομένα στην GPU (ουπς)

  • Το μέγεθος της παρτίδας είναι μικρό (η GPU δεν αξιοποιείται επαρκώς)

  • Κάνετε έντονη προεπεξεργασία CPU στο βήμα εκπαίδευσης

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


7) Το παιχνίδι VRAM - μέγεθος παρτίδας, μικτή ακρίβεια και μη εκρηκτική λειτουργία 💥🧳

Τα περισσότερα πρακτικά προβλήματα εκπαίδευσης καταλήγουν στην απομνημόνευση. Αν μάθετε μία δεξιότητα, μάθετε διαχείριση VRAM.

Γρήγοροι τρόποι για να μειώσετε τη χρήση μνήμης

  • Μικτή ακρίβεια (FP16/BF16)

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

  • Μικρότερο μήκος ακολουθίας / μέγεθος καλλιέργειας

    • Βάναυσο αλλά αποτελεσματικό

  • Σημείο ελέγχου ενεργοποίησης

    • Ανταλλαγή υπολογισμού με μνήμη (επαναυπολογισμός ενεργοποιήσεων κατά την αντίστροφη κίνηση) ( torch.utils.checkpoint )

  • Χρησιμοποιήστε ένα ελαφρύτερο εργαλείο βελτιστοποίησης

    • Ορισμένα προγράμματα βελτιστοποίησης αποθηκεύουν επιπλέον καταστάσεις που «μαζεύουν» την VRAM

Η στιγμή «γιατί η VRAM είναι ακόμα γεμάτη αφού σταματήσω;»

Τα frameworks συχνά αποθηκεύουν προσωρινά μνήμη για απόδοση. Αυτό είναι φυσιολογικό. Φαίνεται τρομακτικό, αλλά δεν είναι πάντα διαρροή. Μαθαίνεις να διαβάζεις τα μοτίβα. ( Σημασιολογία PyTorch CUDA: caching allocator )

Πρακτική συνήθεια:


8) Κάντε την GPU να λειτουργεί πραγματικά - ρύθμιση απόδοσης που αξίζει τον χρόνο σας 🏎️

Το πρώτο βήμα είναι να κάνετε την «εκπαίδευση GPU να λειτουργήσει». Το δεύτερο βήμα είναι να την κάνετε γρήγορα .

Βελτιστοποιήσεις υψηλής επίδρασης

  • Αυξήστε το μέγεθος της παρτίδας (μέχρι να πονέσει, μετά μειώστε ελαφρά)

  • Χρήση καρφιτσωμένης μνήμης σε φορτωτές δεδομένων (ταχύτερα αντίγραφα από κεντρικό υπολογιστή σε συσκευή) ( Οδηγός ρύθμισης απόδοσης PyTorch , σεμινάριο PyTorch pin_memory/non_blocking )

  • Αυξήστε τους εργαζόμενους του dataloader (προσοχή, πάρα πολλοί μπορεί να γυρίσουν μπούμερανγκ) ( Οδηγός ρύθμισης απόδοσης PyTorch )

  • Προανάκτηση σε παρτίδες , ώστε η GPU να μην μένει σε αδράνεια

  • Χρήση συγχωνευμένων λειτουργιών / βελτιστοποιημένων πυρήνων όταν είναι διαθέσιμοι

  • Χρησιμοποιήστε μικτή ακρίβεια (και πάλι, είναι τόσο καλό) ( έγγραφα PyTorch AMP )

Το πιο παραβλεπόμενο σημείο συμφόρησης

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

Επίσης, μια μικρή εξομολόγηση: «Βελτιστοποίησα» ένα μοντέλο για μια ώρα μόνο και μόνο για να συνειδητοποιήσω ότι η καταγραφή ήταν το εμπόδιο. Η υπερβολική εκτύπωση μπορεί να επιβραδύνει την εκπαίδευση. Ναι, μπορεί.


9) Εκπαίδευση πολλαπλών GPU - DDP, NCCL και κλιμάκωση χωρίς χάος 🧩🤝

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

Κοινές προσεγγίσεις

  • Παράλληλα Δεδομένα (DDP)

    • Διαχωρισμός παρτίδων σε GPU, συγχρονισμός διαβαθμίσεων

    • Συνήθως η προεπιλεγμένη επιλογή "καλό" ( έγγραφα PyTorch DDP )

  • Μοντέλο Παράλληλης / Τενσορικής Παράλληλης

    • Διαχωρισμός του μοντέλου σε GPU (για πολύ μεγάλα μοντέλα)

  • Παράλληλος αγωγός

    • Διαχωρισμός των στρώσεων του μοντέλου σε στάδια (σαν γραμμή συναρμολόγησης, αλλά για τανσόρους)

Αν ξεκινάτε, η εκπαίδευση σε στυλ DDP είναι η ιδανική επιλογή. ( Εκμάθηση PyTorch DDP )

Πρακτικές συμβουλές για πολλαπλές GPU

  • Βεβαιωθείτε ότι οι GPU έχουν παρόμοια δυνατότητα (η ανάμειξη μπορεί να προκαλέσει συμφόρηση)

  • Παρακολουθήστε τη διασύνδεση: Η NVLink έναντι της PCIe έχει σημασία για φόρτους εργασίας με μεγάλο συγχρονισμό ( επισκόπηση NVIDIA NVLink , έγγραφα NVIDIA NVLink )

  • Διατηρήστε ισορροπημένα μεγέθη παρτίδας ανά GPU

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

Και ναι, τα σφάλματα του NCCL μπορεί να μοιάζουν με ένα αίνιγμα τυλιγμένο σε ένα μυστήριο τυλιγμένο σε «γιατί τώρα». Δεν είσαι καταραμένος. Πιθανώς. ( Επισκόπηση του NCCL )


10) Παρακολούθηση και δημιουργία προφίλ - τα άκομψα πράγματα που σας εξοικονομούν ώρες 📈🧯

Δεν χρειάζεστε φανταχτερά dashboards για να ξεκινήσετε. Πρέπει να παρατηρήσετε πότε κάτι δεν πάει καλά.

Βασικά σημάδια που πρέπει να προσέξετε

  • Χρήση GPU : είναι σταθερά υψηλή ή απότομη;

  • Χρήση μνήμης : σταθερή, αναρριχώμενη ή περίεργη;

  • Κατανάλωση ενέργειας : η ασυνήθιστα χαμηλή μπορεί να σημαίνει υποαξιοποίηση

  • Θερμοκρασίες : οι παρατεταμένες υψηλές θερμοκρασίες μπορούν να μειώσουν την απόδοση

  • Χρήση CPU : τα προβλήματα αγωγού δεδομένων εμφανίζονται εδώ ( Οδηγός ρύθμισης απόδοσης PyTorch )

Νοοτροπία δημιουργίας προφίλ (απλή έκδοση)

  • Εάν η GPU έχει χαμηλή αξιοποίηση - συμφόρηση δεδομένων ή CPU

  • Εάν η GPU είναι υψηλή αλλά αργή - αναποτελεσματικότητα πυρήνα, ακρίβεια ή αρχιτεκτονική μοντέλου

  • Εάν η ταχύτητα εκπαίδευσης μειωθεί τυχαία - θερμικός περιορισμός, διεργασίες στο παρασκήνιο, προβλήματα εισόδου/εξόδου

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


11) Αντιμετώπιση προβλημάτων - οι συνήθεις ύποπτοι (και οι λιγότερο συνηθισμένοι) 🧰😵💫

Αυτή η ενότητα είναι ουσιαστικά: «τα ίδια πέντε θέματα, για πάντα»

Πρόβλημα: Η μνήμη του CUDA εξαντλήθηκε

Διορθώσεις:

Πρόβλημα: Η εκπαίδευση εκτελείται κατά λάθος στην CPU

Διορθώσεις:

  • βεβαιωθείτε ότι το μοντέλο μεταφέρθηκε στο CUDA

  • βεβαιωθείτε ότι οι τανυστές μετακινούνται στο CUDA

  • ελέγξτε τη διαμόρφωση της συσκευής πλαισίου ( έγγραφα PyTorch CUDA )

Πρόβλημα: Παράξενα σφάλματα ή παράνομη πρόσβαση στη μνήμη

Διορθώσεις:

  • Επιβεβαίωση συμβατότητας προγράμματος οδήγησης + χρόνου εκτέλεσης ( PyTorch Get Started (επιλογέας CUDA) , εγκατάσταση TensorFlow (pip) )

  • δοκιμάστε ένα καθαρό περιβάλλον

  • μείωση των προσαρμοσμένων λειτουργιών

  • επανεκτέλεση με ντετερμινιστικές ρυθμίσεις για αναπαραγωγή

Πρόβλημα: Πιο αργό από το αναμενόμενο

Διορθώσεις:

Πρόβλημα: Κολλάει σε πολλαπλές GPU

Διορθώσεις:

  • επιβεβαιώστε τις σωστές ρυθμίσεις backend ( κατανεμημένα έγγραφα PyTorch )

  • ελέγξτε τις ρυθμίσεις περιβάλλοντος NCCL (προσοχή) ( επισκόπηση NCCL )

  • δοκιμάστε πρώτα μία μόνο GPU

  • βεβαιωθείτε ότι το δίκτυο / η διασύνδεση είναι υγιής

Μικρή σημείωση για αναδρομή: μερικές φορές η λύση είναι κυριολεκτικά η επανεκκίνηση. Μου φαίνεται ανόητο. Λειτουργεί. Έτσι είναι οι υπολογιστές.


12) Κόστος και πρακτικότητα - επιλογή της σωστής GPU NVIDIA και ρύθμιση χωρίς υπερβολική σκέψη 💸🧠

Δεν χρειάζεται κάθε έργο τη μεγαλύτερη GPU. Μερικές φορές χρειάζεστε αρκετή GPU.

Εάν κάνετε βελτιστοποίηση σε μεσαία μοντέλα

Αν εκπαιδεύετε μεγαλύτερα μοντέλα από την αρχή

Αν κάνετε πειραματισμούς

  • Θέλετε γρήγορη επανάληψη

  • Μην ξοδεύεις όλα σου τα χρήματα σε GPU και μετά να καταναλώνεις χώρο αποθήκευσης και RAM

  • Ένα ισορροπημένο σύστημα υπερτερεί ενός μονόπλευρου (τις περισσότερες μέρες)

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


Κλείσιμο σημειώσεων - Πώς να χρησιμοποιήσετε τις GPU της NVIDIA για εκπαίδευση τεχνητής νοημοσύνης χωρίς να χάσετε τα λογικά σας 😌✅

Αν δεν έχετε καταλάβει τίποτα άλλο από αυτόν τον οδηγό σχετικά με τον τρόπο χρήσης των GPU της NVIDIA για εκπαίδευση με τεχνητή νοημοσύνη , ακολουθήστε τα εξής:

Η εκπαίδευση σε GPU NVIDIA είναι μια από εκείνες τις δεξιότητες που σε βασίζουν σε φόβο, και ξαφνικά γίνεται απλώς... φυσιολογικό. Σαν να μαθαίνεις να οδηγείς. Στην αρχή όλα είναι θορυβώδη και μπερδεμένα και πιάνεις το τιμόνι πολύ δυνατά. Και μετά, μια μέρα, οδηγείς με το αυτοκίνητο, πίνεις καφέ και λύνεις αδιάφορα ένα πρόβλημα με το μέγεθος της παρτίδας σαν να μην είναι τίποτα σπουδαίο ☕😄

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

Τι σημαίνει η εκπαίδευση ενός μοντέλου τεχνητής νοημοσύνης σε μια GPU NVIDIA

Η εκπαίδευση σε μια GPU NVIDIA σημαίνει ότι οι παράμετροι του μοντέλου σας και οι παρτίδες εκπαίδευσης βρίσκονται σε GPU VRAM και τα βαριά μαθηματικά (forward pass, backprop, βήματα βελτιστοποίησης) εκτελούνται μέσω πυρήνων CUDA. Στην πράξη, αυτό συχνά καταλήγει στο να διασφαλιστεί ότι το μοντέλο και οι τανσόρ βρίσκονται σε cuda , και στη συνέχεια να παρακολουθείται η μνήμη, η αξιοποίηση και οι θερμοκρασίες, ώστε η απόδοση να παραμένει σταθερή.

Πώς να επιβεβαιώσετε ότι μια GPU NVIDIA λειτουργεί πριν εγκαταστήσετε οτιδήποτε άλλο

Ξεκινήστε με το nvidia-smi . Θα πρέπει να εμφανίζει το όνομα της GPU, την έκδοση του προγράμματος οδήγησης, την τρέχουσα χρήση μνήμης και τυχόν διεργασίες που εκτελούνται. Εάν το nvidia-smi αποτύχει, περιμένετε να ενεργοποιήσετε το PyTorch/TensorFlow/JAX - διορθώστε πρώτα την ορατότητα του προγράμματος οδήγησης. Είναι ο βασικός έλεγχος "είναι ο φούρνος συνδεδεμένος" για την εκπαίδευση της GPU.

Επιλογή μεταξύ του συστήματος CUDA και του CUDA που παρέχεται με το PyTorch

Μια συνηθισμένη προσέγγιση είναι η χρήση CUDA που ενσωματώνεται σε framework (όπως πολλοί τροχοί PyTorch) επειδή μειώνει τα κινούμενα μέρη - χρειάζεστε κυρίως ένα συμβατό πρόγραμμα οδήγησης NVIDIA. Η εγκατάσταση του πλήρους κιτ εργαλείων CUDA του συστήματος προσφέρει περισσότερο έλεγχο (προσαρμοσμένες κατασκευές, μεταγλώττιση λειτουργιών), αλλά εισάγει επίσης περισσότερες ευκαιρίες για αναντιστοιχίες εκδόσεων και σφάλματα χρόνου εκτέλεσης που προκαλούν σύγχυση.

Γιατί η εκπαίδευση μπορεί να είναι αργή ακόμα και με μια GPU NVIDIA

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

Πώς να αποτρέψετε τα σφάλματα "CUDA out of memory" κατά την εκπαίδευση της GPU της NVIDIA

Οι περισσότερες διορθώσεις είναι τακτικές VRAM: μείωση του μεγέθους παρτίδας, ενεργοποίηση μικτής ακρίβειας (FP16/BF16), χρήση συσσώρευσης διαβάθμισης, μείωση του μήκους ακολουθίας/μεγέθους περικοπής ή χρήση ελέγχου ενεργοποίησης. Ελέγξτε επίσης για άλλες διεργασίες GPU που καταναλώνουν μνήμη. Κάποιες δοκιμές και σφάλματα είναι φυσιολογικές - ο προϋπολογισμός VRAM γίνεται βασική συνήθεια στην πρακτική εκπαίδευση GPU.

Γιατί η VRAM μπορεί να φαίνεται πλήρης μετά το τέλος ενός σεναρίου εκπαίδευσης

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

Πώς να επιβεβαιώσετε ότι ένα μοντέλο δεν εκπαιδεύεται ήσυχα στην CPU

Έγκαιρος έλεγχος ασφάλειας: επιβεβαιώστε ότι η συνάρτηση torch.cuda.is_available() επιστρέφει την τιμή True , επαληθεύστε ότι η συνάρτηση next(model.parameters()).device εμφανίζει την τιμή cuda και εκτελέστε μια μοναδική μεταβίβαση προς τα εμπρός χωρίς σφάλματα. Εάν η απόδοση είναι ύποπτα αργή, επιβεβαιώστε επίσης ότι οι παρτίδες σας μετακινούνται στην GPU. Είναι σύνηθες να μετακινείται το μοντέλο και να αφήνονται κατά λάθος τα δεδομένα πίσω.

Η απλούστερη διαδρομή για εκπαίδευση σε πολλαπλές GPU

Η παράλληλη χρήση δεδομένων (εκπαίδευση τύπου DDP) είναι συχνά το καλύτερο πρώτο βήμα: διαχωρίστε τις παρτίδες μεταξύ των GPU και συγχρονίστε τις διαβαθμίσεις. Εργαλεία όπως το Accelerate μπορούν να κάνουν την πολλαπλή χρήση GPU λιγότερο επώδυνη χωρίς πλήρη επανεγγραφή. Να περιμένετε επιπλέον μεταβλητές - επικοινωνία NCCL, διαφορές διασύνδεσης (NVLink vs PCIe) και ενισχυμένα σημεία συμφόρησης δεδομένων - επομένως η σταδιακή κλιμάκωση μετά από μια σταθερή εκτέλεση με μία GPU τείνει να βελτιώνεται.

Τι πρέπει να παρακολουθείτε κατά την εκπαίδευση της GPU της NVIDIA για να εντοπίζετε προβλήματα νωρίς

Παρακολουθήστε την αξιοποίηση της GPU, την αξιοποίηση της μνήμης (σταθερή έναντι αυξανόμενης), την κατανάλωση ενέργειας και τις θερμοκρασίες - ο περιορισμός της ταχύτητας μπορεί να μειώσει αθόρυβα την ταχύτητα. Παρακολουθήστε επίσης την αξιοποίηση της CPU, καθώς τα προβλήματα στον αγωγό δεδομένων συχνά εμφανίζονται εκεί πρώτα. Εάν η αξιοποίηση είναι υψηλή ή χαμηλή, υποψιαστείτε I/O ή dataloaders. Εάν είναι υψηλή αλλά ο χρόνος βήματος εξακολουθεί να είναι αργός, δημιουργήστε προφίλ για τους πυρήνες, τη λειτουργία ακριβείας και την ανάλυση χρόνου βήματος.

Αναφορές

  1. NVIDIA - NVIDIA nvidia-smi έγγραφα - docs.nvidia.com

  2. NVIDIA - Διεπαφή Διαχείρισης Συστήματος NVIDIA (NVSMI) - developer.nvidia.com

  3. NVIDIA - Επισκόπηση NVIDIA NVLink - nvidia.com

  4. PyTorch - Ξεκινήστε με το PyTorch (επιλογέας CUDA) - pytorch.org

  5. PyTorch - Έγγραφα CUDA PyTorch - docs.pytorch.org

  6. TensorFlow - Εγκατάσταση TensorFlow (pip) - tensorflow.org

  7. JAX - Γρήγορη εκκίνηση JAX - docs.jax.dev

  8. Αγκαλιάζοντας το Πρόσωπο - Έγγραφα Προπονητή - huggingface.co

  9. Lightning AI - Έγγραφα Lightning - lightning.ai

  10. DeepSpeed ​​- Έγγραφα ZeRO - deepspeed.readthedocs.io

  11. Έρευνα της Microsoft - Έρευνα της Microsoft: ZeRO/DeepSpeed ​​- microsoft.com

  12. Φόρουμ PyTorch - Φόρουμ PyTorch: έλεγχος μοντέλου στο CUDA - discuss.pytorch.org

Βρείτε την τελευταία λέξη της Τεχνητής Νοημοσύνης στο επίσημο κατάστημα βοηθών τεχνητής νοημοσύνης

Σχετικά με εμάς

Επιστροφή στο ιστολόγιο