Πίνακας περιεχομένων:
- Δοκιμάζει τα αποτελέσματα μιας υποθέσεως εκμάθησης μηχανής χρησιμοποιώντας διαφορετικά δεδομένα εκπαίδευσης και δοκιμών
- από το sklearn. σύνολα δεδομένων import load_digits digits = load_digits () X, y = ψηφία. δεδομένα, ψηφία. στόχος από το sklearn. svm εισαγωγής SVC από sklearn. cross_validation Εισαγωγή cross_val_score% timeit single_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = 1) Out [1]: 1 βρόγχοι, καλύτερο από 3: 17. 9 s ανά βρόχο < πρέπει να ενεργοποιήσετε τον παραλληλισμό πολλαπλών διευθύνσεων και να χρονομετρήσετε τα αποτελέσματα χρησιμοποιώντας τις ακόλουθες εντολές:
Βίντεο: Map of Computer Science 2024
Οι περισσότεροι υπολογιστές σήμερα είναι πολύπλευροι (δύο ή περισσότεροι επεξεργαστές σε ένα πακέτο) με πολλαπλές φυσικές CPU. Ένας από τους σημαντικότερους περιορισμούς της Python είναι ότι χρησιμοποιεί έναν ενιαίο πυρήνα από προεπιλογή. (Δημιουργήθηκε σε μια εποχή που οι μόνοι πυρήνες ήταν ο κανόνας.)
Τα έργα της επιστήμης των δεδομένων απαιτούν πολλούς υπολογισμούς. Συγκεκριμένα, ένα μέρος της επιστημονικής πλευράς της επιστήμης των δεδομένων βασίζεται σε επαναλαμβανόμενες δοκιμές και πειράματα σε διαφορετικές μήτρες στοιχείων. Μην ξεχνάτε ότι η εργασία με τεράστιες ποσότητες δεδομένων σημαίνει ότι οι περισσότεροι χρονοβόροι μετασχηματισμοί επαναλαμβάνουν την παρατήρηση μετά από παρατήρηση (για παράδειγμα, πανομοιότυπες και μη σχετικές λειτουργίες σε διαφορετικά μέρη μιας μήτρας).
Η χρήση περισσότερων πυρήνων CPU επιταχύνει έναν υπολογισμό με έναν παράγοντα που ταιριάζει σχεδόν με τον αριθμό των πυρήνων. Για παράδειγμα, η κατοχή τεσσάρων πυρήνων θα σήμαινε ότι θα εργαστούμε στην καλύτερη περίπτωση τέσσερις φορές πιο γρήγορα. Δεν λαμβάνετε πλήρη τετραπλάσια αύξηση επειδή υπάρχει εναέρια όταν ξεκινάει μια παράλληλη διαδικασία - νέες εκτελούμενες περιπτώσεις Python πρέπει να ρυθμιστούν με τις σωστές πληροφορίες στη μνήμη και να ξεκινήσουν. κατά συνέπεια, η βελτίωση θα είναι μικρότερη από δυνητικά εφικτή, αλλά ακόμη σημαντική.
Η πολλαπλών επεξεργασιών λειτουργεί με την αναπαραγωγή του ίδιου κώδικα και του ίδιου περιεχομένου μνήμης σε διάφορες νέες περιπτώσεις του Python (οι εργαζόμενοι), υπολογίζοντας το αποτέλεσμα για καθένα από αυτά και επιστρέφοντας τα συγκεντρωμένα αποτελέσματα στην κύρια αρχική κονσόλα. Εάν η αρχική σας παρουσία καταλαμβάνει ήδη μεγάλο μέρος της διαθέσιμης μνήμης RAM, δεν θα είναι δυνατή η δημιουργία νέων παρουσιών και το μηχάνημά σας μπορεί να μην λειτουργεί σωστά.Δοκιμάζει τα αποτελέσματα μιας υποθέσεως εκμάθησης μηχανής χρησιμοποιώντας διαφορετικά δεδομένα εκπαίδευσης και δοκιμών
Αναζήτηση δικτύου:
-
μιας υποθετικής εκμάθησης μηχανής και δοκιμής των αποτελεσμάτων που προκύπτουν Πρόβλεψη Multilabel:
-
Τρόπος εκτέλεσης ενός αλγορίθμου πολλαπλών φορές κατά πολλαπλών στόχων όταν υπάρχουν πολλά διαφορετικά στοχευόμενα αποτελέσματα για την πρόβλεψη ταυτόχρονα
-
Μοντελοποίηση ενός μεγάλου αριθμού ταξινομητών, το καθένα ανεξάρτητο από το άλλο, όπως όταν χρησιμοποιείτε μοντέλα βασισμένα σε RandomForest Δεν χρειάζεται να κάνετε κάτι ιδιαίτερο για να εκμεταλλευτείτε τους παράλληλους υπολογισμούς - μπορείτε να ενεργοποιήσετε τον παραλληλισμό ρυθμίζοντας το n_jobs -parameter σε έναν αριθμό πυρήνων πάνω από 1 ή ρυθμίζοντας την τιμή στο -1, πράγμα που σημαίνει ότι θέλετε να χρησιμοποιήσετε όλες τις διαθέσιμες στιγμές CPU.
-
Εάν δεν εκτελείτε τον κώδικα σας από την κονσόλα ή από ένα Notebook IPython, είναι εξαιρετικά σημαντικό να διαχωρίσετε τον κώδικα από οποιαδήποτε εισαγωγή πακέτου ή ανάθεση συνολικής μεταβλητής στο σενάριο σας χρησιμοποιώντας το if __name __ == '__ main__': εντολή στην αρχή οποιουδήποτε κώδικα που εκτελεί πολυπολιτισμικό παραλληλισμό. Η εντολή if ελέγχει εάν το πρόγραμμα εκτελείται απευθείας ή καλείται από μια κονσόλα Python που ήδη εκτελείται, αποφεύγοντας οποιαδήποτε σύγχυση ή σφάλμα από την πολυπαραμετρική διαδικασία (όπως επαναλαμβανόμενη κλήση του παραλληλισμού). Επίδειξη πολλαπλής επεξεργασίας
Είναι καλή ιδέα να χρησιμοποιήσετε το IPython όταν τρέχετε μια επίδειξη του τρόπου με τον οποίο η πολυεπεξεργασία μπορεί πραγματικά να σας εξοικονομήσει χρόνο κατά τη διάρκεια των έργων επιστήμης δεδομένων. Η χρήση του IPython παρέχει το πλεονέκτημα της χρήσης της εντολής% timeit magic για την εκτέλεση χρονισμού. Ξεκινάτε φορτώνοντας ένα σύνολο δεδομένων πολλαπλών κλάσεων, έναν περίπλοκο αλγόριθμο εκμάθησης μηχανών (ο διαβαθμιστής διάνυσμα υποστήριξης ή SVC) και μια διαδικασία διασταυρούμενης επικύρωσης για την εκτίμηση αξιόπιστων βαθμολογιών που προκύπτουν από όλες τις διαδικασίες.
Το πιο σημαντικό πράγμα που πρέπει να γνωρίζουμε είναι ότι οι διαδικασίες γίνονται αρκετά μεγάλες επειδή η SVC παράγει 10 μοντέλα, τα οποία επαναλαμβάνει 10 φορές το καθένα χρησιμοποιώντας διασταυρούμενη επικύρωση, για συνολικά 100 μοντέλα.
από το sklearn. σύνολα δεδομένων import load_digits digits = load_digits () X, y = ψηφία. δεδομένα, ψηφία. στόχος από το sklearn. svm εισαγωγής SVC από sklearn. cross_validation Εισαγωγή cross_val_score% timeit single_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = 1) Out [1]: 1 βρόγχοι, καλύτερο από 3: 17. 9 s ανά βρόχο < πρέπει να ενεργοποιήσετε τον παραλληλισμό πολλαπλών διευθύνσεων και να χρονομετρήσετε τα αποτελέσματα χρησιμοποιώντας τις ακόλουθες εντολές:
% timeit multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1) Out [2]: 1 loops, καλύτερα από 3: 11. 7 δευτερόλεπτα ανά βρόχο
Η μηχανή παραδειγμάτων παρουσιάζει ένα θετικό πλεονέκτημα χρησιμοποιώντας την επεξεργασία πολλαπλών κόμβων, παρά τη χρήση ενός μικρού συνόλου δεδομένων όπου η Python ξοδεύει το μεγαλύτερο μέρος του χρόνου ξεκινώντας κονσόλες και τρέχοντας ένα μέρος του κώδικα σε κάθε μία. Αυτή η δαπάνη, λίγα δευτερόλεπτα, εξακολουθεί να είναι σημαντική, δεδομένου ότι η συνολική εκτέλεση εκτείνεται για μια χούφτα δευτερόλεπτα. Απλά φανταστείτε τι θα συμβεί αν εργαστήκατε με μεγαλύτερα σύνολα δεδομένων - ο χρόνος εκτέλεσης θα μπορούσε να κοπεί εύκολα δύο ή τρεις φορές.
Παρόλο που ο κώδικας λειτουργεί καλά με IPython, βάζοντας το σε μια δέσμη ενεργειών και ζητώντας από την Python να την εκτελέσει σε κονσόλα ή χρησιμοποιώντας ένα IDE μπορεί να προκαλέσει σφάλματα λόγω των εσωτερικών λειτουργιών μιας εργασίας πολλαπλών εντολών. Η λύση είναι να βάλουμε όλο τον κώδικα κάτω από μια εντολή if, η οποία ελέγχει εάν το πρόγραμμα ξεκίνησε άμεσα και δεν κλήθηκε αργότερα. Ακολουθεί ένα σενάριο παράδειγμα:
από το sklearn. σύνολο δεδομένων import_digits από το sklearn. svm εισαγωγής SVC από sklearn. cross_validation εισαγωγή cross_val_score εάν __name__ == '__main__': digits = load_digits () X, y = ψηφία. δεδομένα, ψηφία. στόχος multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1)