Hjem Personlig finansiering Kører i Parallel Python for Data Science - dummies

Kører i Parallel Python for Data Science - dummies

Indholdsfortegnelse:

Video: The 11-Year-Old Moroccan who speaks English, C++, SQL, Python and now learning German 2025

Video: The 11-Year-Old Moroccan who speaks English, C++, SQL, Python and now learning German 2025
Anonim

De fleste computere i dag er multicore (to eller flere processorer i en enkelt pakke), nogle med flere fysiske CPU'er. En af Pythons vigtigste begrænsninger er, at den som standard bruger en enkelt kerne. (Det blev skabt i en tid, hvor enkeltkerner var normen.)

Datavidenskabsprojekter kræver ganske mange beregninger. Navnlig er en del af det videnskabelige aspekt af datalogi afhængig af gentagne tests og eksperimenter på forskellige datamatricer. Glem ikke at arbejde med enorme datamængder betyder, at de fleste tidskrævende transformationer gentager observation efter observation (for eksempel identiske og ikke-relaterede operationer på forskellige dele af en matrix).

Ved hjælp af flere CPU-kerner accelereres en beregning med en faktor, der næsten matcher antallet af kerner. For eksempel ville have fire kerner betyde at arbejde i bedste fald fire gange hurtigere. Du modtager ikke en fuld firefoldig forøgelse, fordi der er overhead, når du starter en parallel proces - nye løbende Python-forekomster skal konfigureres med de rigtige informationer i hukommelsen og lanceres; Derfor vil forbedringen være mindre end potentielt opnåelig, men stadig signifikant.

At vide, hvordan du bruger mere end en CPU, er derfor en avanceret, men utrolig nyttig færdighed til at øge antallet af analyser, der er gennemført, og for at fremskynde dine operationer, både når du konfigurerer og bruger dine dataprodukter.

Multiprocessing værker ved at kopiere samme kode og hukommelsesindhold i forskellige nye Python-tilfælde (arbejderne), beregne resultatet for hver af dem og returnere de samlede resultater til den oprindelige konsol. Hvis din originale instans allerede optager meget af den ledige RAM-hukommelse, er det ikke muligt at oprette nye forekomster, og din maskine er muligvis tom for hukommelsen.

Udførelse af multicore-parallelisme

For at udføre multicore-parallelisme med Python integrerer du Scikit-learn-pakken med joblib-pakken til tidskrævende operationer, f.eks. Replikering af modeller til validering af resultater eller søgning efter de bedste hyperparametre. Specielt giver Scikit-learning mulighed for multiprocessing, når

  • Cross-validering: Tester resultaterne af en maskinlæringshypotese ved hjælp af forskellige trænings- og testdata

  • Gittersøgning: Systematisk ændring af hyperparametrene af en maskinlæringshypotese og afprøvning af de resulterende resultater

  • Multilabel-forudsigelse: Kørsel af en algoritme flere gange mod flere mål, når der er mange forskellige målresultater til at forudsige på samme tid

  • Ensemble-maskinlæringsmetoder: Modellering af en stor række klassifikatorer, hver uafhængig af den anden, f.eks. Ved brug af RandomForest-baseret modellering

Du behøver ikke gøre noget særligt for at udnytte parallelle beregninger - du kan aktivere parallelisme ved at indstille n_jobs -parameteren til et antal kerner mere end 1 eller ved at indstille værdien til -1, hvilket betyder at du vil bruge alle tilgængelige CPU-forekomster.

Hvis du ikke kører din kode fra konsollen eller fra en IPython Notebook, er det yderst vigtigt, at du adskiller din kode fra enhver pakkeimport eller global variabel tildeling i dit script ved hjælp af hvis __name __ == '__ main__': kommando i begyndelsen af ​​en kode, der udfører multicore parallelisme. If-erklæringen kontrollerer, om programmet køres direkte eller kaldes af en allerede igangværende Python-konsol, idet der undgås forvirring eller fejl ved multiparallelprocessen (såsom rekursivt kalder parallellen).

Demonstrere multiprocessing

Det er en god idé at bruge IPython, når du kører en demonstration af, hvordan multiprocessing virkelig kan spare dig tid i datavidenskabsprojekter. Brug af IPython giver fordelen ved at bruge kommandoen% timeit magic til timing execution. Du starter ved at indlæse et multiclass datasæt, en kompleks maskinlæringsalgoritme (Support Vector Classifier eller SVC) og en krydsvalideringsprocedure for at estimere pålidelige resultatresultater fra alle procedurer.

Det vigtigste er at procedurerne bliver ganske store, fordi SVC producerer 10 modeller, som gentager 10 gange hver med krydsvalidering til i alt 100 modeller.

fra sklearn. datasæt import load_digits cifre = load_digits () X, y = cifre. data, cifre. mål fra sklearn. svm import SVC fra Sklearn. cross_valation import cross_val_score% timeit single_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = 1) Ud [1]: 1 sløjfer, bedst 3: 17. 9 s pr. sløjfe

Efter denne test, du skal aktivere multicore-parallelismen og klare resultaterne ved hjælp af følgende kommandoer:

% timeit multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1) Ud [2]: 1 sløjfer, bedste af 3: 11. 7 s per loop

Eksemplermaskinen viser en positiv fordel ved brug af multicore-behandling, på trods af at du bruger et lille datasæt, hvor Python tilbringer det meste af tiden og starter en del af koden i hver enkelt. Denne overhead, et par sekunder, er stadig signifikant, da den samlede eksekvering strækker sig over en håndfuld sekunder. Forestil dig, hvad der ville ske, hvis du arbejdede med større datasæt - din eksekveringstid kunne nemt klippes med to eller tre gange.

Selv om koden fungerer fint med IPython, sætter den ned i et script og beder Python om at køre det i en konsol eller ved hjælp af en IDE, kan det medføre fejl på grund af de interne operationer af en multicore-opgave. Løsningen er at sætte hele koden under en if-erklæring, som kontrollerer om programmet startede direkte og ikke blev kaldt bagefter. Her er et eksempel script:

fra sklearn. datasæt importerer load_digits fra sklearn. svm import SVC fra Sklearn. cross_validation import cross_val_score hvis __name__ == '__main__': cifre = load_digits () X, y = cifre. data, cifre. mål multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1)
Kører i Parallel Python for Data Science - dummies

Valg af editor

Hvordan man opretter en ny arbejdsbog i Excel 2010 - dummies

Hvordan man opretter en ny arbejdsbog i Excel 2010 - dummies

Hvis du arbejder i Microsoft Excel 2010 og vil begynde at arbejde i en ny Excel-workbook-fil, kan du nemt oprette en ny projektmappe. For at gøre det kan du bruge en kommando på fanen Filer eller en tastaturgenvej. Klik på fanen Filer. Excel viser Backstage-visning, hvor du kan få adgang til filrelaterede kommandoer. ...

Hvordan man opretter en ny brugerordbog i Excel 2010 - dummies

Hvordan man opretter en ny brugerordbog i Excel 2010 - dummies

I Excel 2010 Opret brugerdefinerede ordbøger, der skal bruges, når du stavekontrollerer dine regneark. Du bruger knappen Tilføj til ordbog i dialogboksen Staveord til at tilføje ukendte ord til en brugerdefineret ordbog. Som standard tilføjer Excel disse ord til en brugerdefineret ordbog fil med navnet CUSTOM. DIC, men du kan oprette en ny brugerdefineret ...

Hvordan du opretter og formaterer et pivotdiagram i Excel 2010 - dummies

Hvordan du opretter og formaterer et pivotdiagram i Excel 2010 - dummies

, Når du opretter en pivottabel i Excel 2010, kan du oprette et pivotdiagram for at vise sine sammendragsværdier grafisk. Du kan også formatere et pivotdiagram for at forbedre udseendet. Du kan bruge en af ​​de diagramtyper, der er tilgængelige med Excel, når du opretter et pivotdiagram. Opret et pivotdiagram Følg disse ...

Valg af editor

Hvordan du ændrer layoutet på dit Ning-netværkets hovedside - dummier

Hvordan du ændrer layoutet på dit Ning-netværkets hovedside - dummier

Du kan flytte funktioner rundt på hovedsiden på dit Ning-netværk via siden Tilføj funktioner til dit netværk, ændrer layoutet, indtil det bare er det, du vil have. For at komme til denne side skal du klikke på linket Administrer i din navigation og derefter klikke på Funktioner under Dit netværk. Tilføj funktioner til dit netværk ...

Sådan vælger du et sprog med Ning Language Editor - dummies

Sådan vælger du et sprog med Ning Language Editor - dummies

Ning Language Editor er et af de mest kraftfulde værktøjer til din rådighed for at tilpasse dit netværk til det maksimale. Ning Language Editor hjælper dig med at lave din netværksgrænseflade (menuer, knapper, overskrifter, legender osv.), Og læs præcis som du vil have det til. Sprogeditoren giver dig mulighed for at vælge et bestemt sprog:

Hvordan man vælger et tema til dit Ning-netværk - dummies

Hvordan man vælger et tema til dit Ning-netværk - dummies

Du kan køre dit netværk på Ning uden at være en meget vellykket designer - og Ning's temaer lader dig få det til at ligne en million dollars! Folkene i Ning har taget godt af det og tilbyder dig mere end 50 flotte skabeloner (de kalder dem temaer), som du kan bruge med minimal indsats:

Valg af editor

Forstå kamphandlinger i rutefilter - dummier

Forstå kamphandlinger i rutefilter - dummier

De kamphandlinger, der er tilgængelige for rutefiltre, er identiske med dem, der er tilgængelige for andre routing politikker i Junos. Du kan acceptere ruter, afvise ruter, ændre attributter, der tilhører en rute, eller udføre flow kontrol type funktioner. Langt de mest almindelige handlinger, der skal bruges med rutefiltre, accepteres og afvises. Normalt vil du ...

Brug god sikkerhedspraksis ved installation af netværksudstyr - dummies

Brug god sikkerhedspraksis ved installation af netværksudstyr - dummies

Vigtigheden af ​​at følge sikkerhedsprotokoller kan ikke være overvurderet. Hvis der ikke træffes passende forholdsregler, kan der opstå alvorlig skade for personale eller apparatet. Følg disse retningslinjer for at sikre din sikkerhed og beskytte enheden mod skade. Vær altid opmærksom og udøv god dømmekraft. Bemærk: Kun uddannet og kvalificeret personale skal installere enheden. Brug ...

Forstå matchtyper i rutefilter - dummies

Forstå matchtyper i rutefilter - dummies

Rutefilter matcher bestemte IP-adresser eller præfiksintervaller. I lighed med andre routingpolitikker indeholder de nogle matchkriterier og tilsvarende kamphandlinger. En vigtig forskel mellem rutefiltre og andre politiske matchforhold er, hvordan flere filtre håndteres. Hvis du har mere end en matchtilstand, behandles betingelserne som ...