Μετατρέψτε τις ώρες προπόνησης σε λεπτά με την επιτάχυνση GPU Εάν είστε επαγγελματίας μηχανικής μάθησης, γνωρίζετε καλά αυτή τη σκηνή. Έχετε περάσει ώρες αγωνιζόμενοι για τα δεδομένα, σχεδιάζοντας τα τέλεια χαρακτηριστικά και σχεδιάζοντας προσεκτικά το πείραμά σας. και χτύπησε μέσα. model.fit(X, y) Και μετά... περιμένεις. Η γραμμή προόδου κινείται προς τα εμπρός με παγωμένο ρυθμό. Πάρτε έναν καφέ. Ελέγχετε το Slack. Επιστρέφετε και η CPU σας εξακολουθεί να απομακρύνεται. Δεν μπορείτε να δοκιμάσετε χαρακτηριστικά, να ρυθμίσετε υπερπαραμέτρους και να κρατήσετε το κεφάλι σας στο πρόβλημα. Το πιο δαπανηρό μέρος της μηχανικής μάθησης είναι ο χρόνος σας Το XGBoost έχει κερδίσει τη φήμη του ως η δύναμη της κλιμάκωσης. Είναι το χρυσό πρότυπο στα σύνολα δεδομένων πίνακα. Αλλά η δύναμή του έρχεται με ένα κόστος. Όταν κλιμακώνεστε σε εκατομμύρια σειρές, εκπαιδεύστε μπαλόνια χρόνου από λεπτά σε ώρες. Οι περισσότεροι επαγγελματίες δεν συνειδητοποιούν ότι το XGBoost έχει μια ενιαία παράμετρο που μπορεί να μετατρέψει αυτή την εμπειρία. Γυρίστε το και το μοντέλο σας μπορεί να εκπαιδεύσει 5-15 φορές πιο γρήγορα. χωρίς αλλαγές αλγορίθμου. χωρίς νέες βιβλιοθήκες. μόνο μία γραμμή στη διαμόρφωσή σας. Αυτή η μία αλλαγή σας παίρνει από το να ολοκληρώσετε ένα μόνο πείραμα σε μια μέρα για να εκτελέσετε αρκετές. αναζητήσεις υπερπαραμετρών που κάποτε τραβήχτηκαν για ημέρες τώρα τυλίγονται σε ώρες. Αντί να περιμένετε σε μια γραμμή προόδου, παραμένετε στον κύκλο, δοκιμάζοντας ιδέες ενώ είναι φρέσκες και διατηρώντας τη δυναμική στη δουλειά σας. Σε πολλές περιπτώσεις, η επιτάχυνση CUDA κάνει τη διαφορά μεταξύ της ολοκλήρωσης μιας εργασίας και της μη ολοκλήρωσής της. Η «μαγική» παράμετρος: η επιτάχυνση GPU έγινε εύκολη Το XGBoost έχει ενσωματωμένη υποστήριξη για το NVIDIA CUDA, οπότε η χρήση της επιτάχυνσης GPU δεν απαιτεί νέες βιβλιοθήκες ή επαναγραφές κώδικα. Εδώ είναι μια τυπική ροή εργασίας CPU: import xgboost as xgb model = xgb.XGBClassifier( ... tree_method="hist" # CPU training ) model.fit(X_train, y_train) Για να χρησιμοποιήσετε το GPU σας, απλά αλλάξτε Δύο : tree_method "gpu_hist" import xgboost as xgb model = xgb.XGBClassifier( ... tree_method="gpu_hist" # GPU training ) model.fit(X_train, y_train) Για τους επιστρέφοντες, ο : device="cuda" import xgboost as xgb xgb_model = xgb.XGBRegressor(device="cuda") xgb_model.fit(X, y) Αυτό είναι. Είτε χρησιμοποιείτε το XGBClassifier είτε το XGBRegressor, προσθέτοντας λέει στο XGBoost να χρησιμοποιήσει όλους τους διαθέσιμους πόρους GPU της NVIDIA. Αυτή η ενιαία αλλαγή μπορεί να κάνει την εκπαίδευσή σας 5-15 φορές ταχύτερη σε μεγάλα σύνολα δεδομένων. device="cuda" Η απόδειξη: 46x επιτάχυνση στην προεπιλεγμένη πρόβλεψη της Amex Για να δείξουμε την επιτάχυνση στη δράση, συγκρίσαμε έναν ταξινομητή XGBoost σε ένα υποσύνολο 5,5 εκατομμυρίων σειρών (50giga) του συνόλου δεδομένων American Express Default Prediction, το οποίο περιλαμβάνει 313 χαρακτηριστικά. Έχουμε εκπαιδεύσει το μοντέλο σε δύο διαμορφώσεις: CPU: Ένα M3 Pro 12-core CPU. GPU: Ένα NVIDIA A100 GPU. Ιδού η σύγκριση των ωρών εκπαίδευσης: Τα αποτελέσματα είναι δραματικά: Διάρκεια προπόνησης: 27 λεπτά NVIDIA GPU Εκπαίδευση Χρόνος: 35 δευτερόλεπτα με σχεδόν πανομοιότυπες επιδόσεις. Σε σειρές 50M ή 500M, οι ώρες CPU μπορούν να επεκταθούν σε ημέρες, ενώ οι GPUs, κατασκευασμένες για τεράστια παράλληλα φορτία εργασίας, αντιμετωπίζουν την ανάπτυξη με ελάχιστο επιπλέον χρόνο. Η διαφορά μεταξύ μετρήσεων όπως R2, RMSE και MAE είναι ελάχιστη, είτε σε μοντέλα βασικής γραμμής είτε σε προσαρμοσμένα μοντέλα. Έτσι, δεν διαπραγματεύεστε ακρίβεια για ταχύτητα. Όσον αφορά την προγνωστική δύναμη, και τα δύο μοντέλα συμφωνούν σε ένα πράγμα: Αποτελεί το σημαντικότερο χαρακτηριστικό και Πέρα από αυτό, αρχίζουν να διαφέρουν. P-2_last B_1_last Το μοντέλο CPU επικεντρώνεται στην χαρακτηριστικά, εστιάζοντας στις πιο πρόσφατες τιμές. Το μοντέλο GPU ευνοεί τις συγκεντρωτικές Χαρακτηριστικά όπως Β και , χαρακτηριστικά που η CPU δεν κατατάσσεται ποτέ στα κορυφαία πέντε. _last _mean P-2_mean -22_mean B-1_mean Αυτό υποδηλώνει μια υπόθεση: το μοντέλο CPU συλλαμβάνει σήματα βραχυπρόθεσμου κινδύνου, ανταποκρινόμενο στα πιο πρόσφατα γεγονότα, ενώ το μοντέλο GPU συλλαμβάνει μακροπρόθεσμα μοτίβα, αξιολογώντας τον κίνδυνο ενός πελάτη σε όλο το ιστορικό του. Αναμένουμε επίσης ότι σε ακόμη μεγαλύτερα σύνολα δεδομένων μεγέθους terabyte, οι GPUs θα μπορούσαν να παράγουν μοντέλα με ελαφρώς καλύτερες μετρήσεις χάρη στην ικανότητά τους να επεξεργάζονται περισσότερα δεδομένα ταυτόχρονα. Εκτελέστε τον κώδικα και δείτε τη διαφορά απόδοσης σε αυτό . Try It Yourself: Σημειωματάριο Σημειωματάριο Σημειωματάριο Βέλτιστες πρακτικές για την επιτάχυνση GPU προσθέτοντας Για να αξιοποιήσετε στο έπακρο την επιτάχυνση της GPU, να έχετε υπόψη σας αυτές τις βέλτιστες πρακτικές: device="cuda" Ξεκινήστε με τα σωστά δεδομένα Η επιτάχυνση GPU λειτουργεί καλύτερα σε σύνολα δεδομένων που είναι αρκετά μεγάλα για να δικαιολογήσει τη μετακίνηση δεδομένων από τη μνήμη RAM του συστήματος στη μνήμη GPU. Το γλυκό σημείο είναι συνήθως σύνολα δεδομένων μεταξύ 4 GB και 24 GB, αν και τα οφέλη μπορεί να εμφανιστούν ξεκινώντας από 2-4 GB. Για πολύ μικρά σύνολα δεδομένων, ο χρόνος που δαπανάται για τη μεταφορά δεδομένων στην GPU και τη δημιουργία παράλληλων υπολογισμών μπορεί στην πραγματικότητα να υπερβεί τον χρόνο εκπαίδευσης, καθιστώντας την εκπαίδευση της CPU ταχύτερη σε αυτές τις περιπτώσεις. Σκεφτείτε το VRAM σας: Βάλτε τα δεδομένα σας στη μνήμη GPU Οι GPU έχουν τη δική τους υψηλής ταχύτητας μνήμη, που ονομάζεται VRAM, η οποία είναι ξεχωριστή από τη μνήμη RAM του συστήματός σας. Για την τυπική εκπαίδευση, το σύνολο δεδομένων σας πρέπει να ταιριάζει εξ ολοκλήρου στο VRAM. της διοίκησης. nvidia-smi Κατά κανόνα, εάν το DataFrame σας χρησιμοποιεί 10 GB μνήμης RAM συστήματος, θα χρειαστείτε μια GPU με περισσότερα από 10 GB VRAM. Για μεγάλα φορτία εργασίας, GPU όπως το NVIDIA A10G (24 GB) ή A100 (40–80 GB) είναι κοινές επιλογές. Βελτιστοποίηση των τύπων δεδομένων για τη μείωση του αποτυπώματος μνήμης Ένας από τους απλούστερους τρόπους για να αποθηκεύσετε το VRAM είναι χρησιμοποιώντας πιο αποτελεσματικούς τύπους δεδομένων.Οι προεπιλεγμένοι τύποι Pandas είναι 64-bit (float64, int64), οι οποίοι είναι συνήθως πιο ακριβείς από ό, τι χρειάζεται. Η μετατροπή στηλών σε τύπους 32-bit (float32, int32) μπορεί να μειώσει τη χρήση μνήμης κατά περίπου το ήμισυ χωρίς να επηρεάσει την ακρίβεια του μοντέλου. Αυτή η μικρή προσαρμογή μπορεί να κάνει μεγάλη διαφορά όταν εργάζεστε με μεγάλα σύνολα δεδομένων σε μια GPU. df['my_column'].astype('float32') Πηγαίνετε End-to-End: Επιταχύνετε την προετοιμασία δεδομένων με cudf.pandas Συχνά, το μεγαλύτερο εμπόδιο δεν είναι η εκπαίδευση από μόνη της, αλλά η προετοιμασία των δεδομένων.Η μετακίνηση δεδομένων προς τα εμπρός και προς τα πίσω μεταξύ της μνήμης CPU και της μνήμης GPU προσθέτει υπερχείλιση που μπορεί να επιβραδύνει τη ροή εργασίας σας. Η βιβλιοθήκη επιλύει αυτό παρέχοντας μια υποκατάσταση drop-in που τροφοδοτείται από GPU για pandas. cudf.pandas Ξεκινώντας το σενάριο με την εισαγωγή Όλες οι λειτουργίες φόρτωσης δεδομένων και μηχανικής χαρακτηριστικών εκτελούνται απευθείας στην GPU. Όταν μεταφέρετε αυτό το μητρικό DataFrame της GPU στο XGBoost, εξαλείφετε την υπερφόρτωση μεταφοράς και επιτυγχάνετε τεράστιες επιταχύνσεις από άκρο σε άκρο. cudf.pandas as pd Για σύνολα δεδομένων μεγαλύτερα από VRAM: Χρησιμοποιήστε εξωτερική μνήμη Τι γίνεται αν το σύνολο δεδομένων σας είναι 100 GB, αλλά η GPU σας έχει μόνο 24 GB VRAM; Με το XGBoost 3.0, η υποστήριξη εξωτερικής μνήμης σας επιτρέπει να το χειριστείτε επεξεργάζοντας τα δεδομένα σε κομμάτια από τη μνήμη του συστήματος ή τον δίσκο. Πέρα από το VRAM: Εκπαίδευση σε Terabyte-Scale Datasets με το XGBoost 3.0 Στο παρελθόν, σύνολα δεδομένων μεγαλύτερα από το VRAM μιας GPU ήταν ένα σκληρό όριο για την επιτάχυνση της κατάρτισης. Η κυκλοφορία του XGBoost 3.0 εξαλείφει αυτό το εμπόδιο με ένα νέο Αυτό σας επιτρέπει να εκπαιδεύσετε σε τεράστια σύνολα δεδομένων με ροή δεδομένων από τη μνήμη συστήματος ή δίσκο απευθείας στην GPU για επεξεργασία. external memory capability Αυτό καθιστά δυνατή την κλιμακωτή ενίσχυση των κλιμάκων σε φορτία εργασίας μεγέθους terabyte σε μια ενιαία GPU, μια εργασία που απαιτούσε προηγουμένως μεγάλες, κατανεμημένες ομάδες.Σε σύγχρονο υλικό όπως το NVIDIA Grace Hopper Superchip, αυτή η προσέγγιση μπορεί να είναι έως και 8 φορές ταχύτερη από ένα σύστημα CPU πολλαπλών πυρήνων, διατηρώντας παράλληλα πλήρη απόδοση και ακρίβεια. Ενώ αυτό το χαρακτηριστικό λειτουργεί με το κεντρικό αντικείμενο DMatrix αντί για το Scikit-Learn wrapper, οι παράμετροι παραμένουν εξοικειωμένοι. Όταν ζευγαρώνονται με Για την προετοιμασία δεδομένων, ολόκληρη η ροή εργασίας σας για σύνολα δεδομένων μεγέθους terabyte μπορεί τώρα να τρέξει στην GPU. cudf.pandas Ανακτήστε το χρόνο σας Περιμένοντας τα μοντέλα να εκπαιδεύσουν, τα δεδομένα να επεξεργαστούν ή τα πειράματα να ολοκληρωθούν επιβραδύνει την ικανότητά σας να δοκιμάσετε ιδέες, να ανακαλύψετε ιδέες και να δημιουργήσετε αξία. Η επιτάχυνση GPU της NVIDIA σας επιτρέπει να ανακτήσετε αυτόν τον χρόνο. Με μία μόνο αλλαγή παραμέτρων, μπορείτε να εκπαιδεύσετε μοντέλα 5-15 φορές ταχύτερα, να εκτελέσετε αγωγούς δεδομένων από άκρο σε άκρο στη GPU και ακόμη και να εργαστείτε με σύνολα δεδομένων μεγαλύτερα από τη μνήμη της GPU. Τα εργαλεία είναι έτοιμα, οι ενοποιήσεις είναι απλές και η εγκατάσταση απλή.Η ταχύτερη επανάληψη σημαίνει περισσότερα πειράματα, περισσότερες ανακαλύψεις και τελικά καλύτερα μοντέλα. Από εδώ, έχετε μερικούς διαφορετικούς τρόπους να βουτήξετε: Ακολουθήστε το σημειωματάριο NVIDIA για έναν οδηγό βήμα προς βήμα. Παρακολουθήστε το πλήρες βίντεο στο YouTube. Βυθιστείτε στην επίσημη τεκμηρίωση __XGBoost t__o εξερευνήστε όλες τις επιλογές διαμόρφωσης cuda.GPU Acceleration Made Ea Σημειωματάριο Σημειωματάριο YouTube Βίντεο YouTube Βίντεο Μην παίρνεις απλώς το λόγο μου για αυτό. – Run my Amex και νιώστε πόσο πιο γρήγορη μπορεί να είναι η ροή εργασίας σας. , Ντοκιμαντέρ , Ντοκιμαντέρ Ντοκιμαντέρ το ευτυχισμένο κτίριο, Πάολο