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 2024

Video: The 11-Year-Old Moroccan who speaks English, C++, SQL, Python and now learning German 2024
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

Hvad er nyt i Microsoft Word 2016? - dummies

Hvad er nyt i Microsoft Word 2016? - dummies

Udgivelsen af ​​Microsoft Word i 2016 er funktionel pakket og kan prale af evnen til at forenkle arbejdsgange og forene arbejdsgrupper. Hvad det betyder for dig er, at det er et meget lettere produkt at bruge i forhold til tidligere versioner. Med funktionelle ændringer, der er indbygget i knapper og faner af Word 2016s båndformede proceslinje, har den ...

Word 2010 Tastaturgenveje - Dummies

Word 2010 Tastaturgenveje - Dummies

Word 2010 tilbyder en række nyttige tastaturgenveje til hurtigt at udføre opgaver. Her er nogle genveje til almindelig Word-formatering, redigering og fil- og dokumentopgaver. Word 2010 Formatering Genveje Kommando Genvej Bånd Placering Fed Ctrl + B Startside Fane, Skrifttype Gruppe Kursiv Ctrl + I Startside, Skriftgruppe Understrege Ctrl + U Startside Fane, Skriftgruppe Center Ctrl + E ...

Word 2007 For Dummies Cheat Sheet - dummies

Word 2007 For Dummies Cheat Sheet - dummies

Word 2007 ser anderledes ud, men tilbyder stadig de praktiske Word hæfteklammer som f.eks. tastaturgenveje til at hjælpe dig med at oprette, formatere, indsætte ting i og flytte gennem dine Word-dokumenter. Og Word 2007 tilbyder også et par nye funktioner, der hjælper dig med at håndtere din tekstbehandling med lethed.

Valg af editor

ASVAB Montering af objekter Subtest: Shapes - dummies

ASVAB Montering af objekter Subtest: Shapes - dummies

Mange mennesker kan finde den anden type montering af objekter problem på ASVAB lettere end forbindelsesproblemerne. Denne type problem er meget som et puslespil, medmindre det ikke resulterer i et billede af Frihedsgudinden eller et kort over USA. Der er også en heck of a ...

ASVAB Aritmetisk Reasoning Subtest: Viser Sammenligninger med Ratioer - Dummies

ASVAB Aritmetisk Reasoning Subtest: Viser Sammenligninger med Ratioer - Dummies

Du skal vide, hvordan du arbejde med forhold for den aritmetiske begrundelse subtest af ASVAB. Et forhold viser et forhold mellem to ting. For eksempel, hvis Margaret investerede i hendes tatoveringslokale i forholdet 2: 1 (eller 2 til 1) til hendes forretningspartner Julie, satte Margaret $ 2 for hver ...

ASVAB Auto & Shop Information Undertest: Drilling, Punching og Gouging Tools - dummies

ASVAB Auto & Shop Information Undertest: Drilling, Punching og Gouging Tools - dummies

Nej, det handler ikke om hånd-til-hånd kamp træning fra grundlæggende træning. Imidlertid vil ASVAB teste din viden om, hvor praktisk du er med boring, stansning og gouging-værktøjer. Masters i butikskunst gør ofte huller i det materiale, de arbejder med for at opbygge det perfekte fuglehus (eller hvad de arbejder på). ...

Valg af editor

EMT-eksamen: Sådan arbejder du med et team under et nødsituation

EMT-eksamen: Sådan arbejder du med et team under et nødsituation

Arbejder helt alene som en EMT er ekstremt sjælden. Selv under disse omstændigheder vil du sandsynligvis interagere med andre sundhedspleje- og offentlige sikkerhedsudbydere på et eller andet tidspunkt under et opkald. Mere sandsynligt vil du fungere som medlem af et hold. Det kan være en enkelt partner, et brandmandsbesætningsmedlem eller endda en nødsituation ...

EMT-eksamen: Sådan dokumenterer du dine tilfælde - dummier

EMT-eksamen: Sådan dokumenterer du dine tilfælde - dummier

Til eksamen og i feltet EMT er forpligtet til at dokumentere, hvad du observerede om patienten og miljøet, de resultater, du vurderede, den omhu du gav, og eventuelle ændringer i patientens tilstand, mens du var i din pleje. Dokumentation kan ske enten på papirformularer eller elektronisk med en computer, bærbar computer, ...