Hjem Personlig finansiering Kjører i Parallel Python for datalogi - dummies

Kjører i Parallel Python for datalogi - dummies

Innholdsfortegnelse:

Video: Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks 2025

Video: Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks 2025
Anonim

De fleste datamaskiner i dag er multicore (to eller flere prosessorer i en enkelt pakke), noen er prosessorer i en enkelt pakke. med flere fysiske CPUer. En av de viktigste begrensningene i Python er at den bruker en enkelt kjerne som standard. (Det ble opprettet på en tid da enkeltkjerner var normen.)

Datavitenskapsprosjekter krever ganske mange beregninger. Spesielt er en del av det vitenskapelige aspektet av datavitenskapen avhengig av gjentatte tester og eksperimenter på forskjellige datamatriser. Ikke glem at arbeid med store datamengder betyr at de fleste tidkrevende transformasjoner gjentar observasjon etter observasjon (for eksempel identiske og ikke-relaterte operasjoner på forskjellige deler av en matrise).

Ved å bruke flere CPU-kjerner akselererer en beregning med en faktor som nesten samsvarer med antall kjerner. For eksempel vil ha fire kjerner bety at du arbeider i beste fall fire ganger raskere. Du mottar ikke en full firefoldig økning fordi det er overhead når du starter en parallellprosess - nye løpende Python-forekomster må konfigureres med riktig minneinformasjon og lanseres; Følgelig vil forbedringen være mindre enn mulig oppnåelig, men fortsatt betydelig.

Å vite hvordan du bruker mer enn en CPU, er derfor en avansert, men utrolig nyttig ferdighet for å øke antall analyser som er fullført, og for å øke driften din både når du setter opp og når du bruker dataprodukter.

Multiprosessering fungerer ved å kopiere samme kode og minneinnhold i forskjellige nye Python-forekomster (arbeiderne), beregne resultatet for hver av dem, og returnere de samlede resultatene til hovedkonsollen. Hvis din originale forekomst allerede bruker mye av det tilgjengelige RAM-minnet, vil det ikke være mulig å opprette nye forekomster, og maskinen din kan være tom for minne.

Utføre multicore parallellisme

For å utføre multicore parallellitet med Python integrerer du Scikit-learn-pakken med joblib-pakken for tidkrevende operasjoner, for eksempel replikerende modeller for validering av resultater eller for å lete etter de beste hyperparametrene. Spesielt gjør Scikit-Learning mulighet til multiprocessing når

  • Kryssvalidering: Testing av resultatene av en maskinlæringshypotes ved hjelp av ulike opplærings- og testdata

  • Grid-søking: Systematisk endring av hyperparametrene av en maskinlæringshypotese og teste de resulterende resultatene

  • Multilabel-prediksjon: Kjører en algoritme flere ganger mot flere mål når det er mange forskjellige målutfall å forutsi samtidig.

  • Ensemble maskinlæringsmetoder: Du må ikke gjøre noe spesielt for å utnytte parallelle beregninger - du kan aktivere parallellisme ved å sette inn en rekke klassifiserere, hver som er uavhengig av den andre, for eksempel når du bruker RandomForest-basert modellering. n_jobs -parameteren til en rekke kjerner mer enn 1, eller ved å sette verdien til -1, noe som betyr at du vil bruke alle tilgjengelige CPU-forekomster.

Hvis du ikke kjører koden fra konsollen eller fra en IPython Notebook, er det ekstremt viktig at du skiller koden fra en pakkeimport eller global variabel oppgave i skriptet ditt ved å bruke hvis __name __ == '__ main__': kommando i begynnelsen av en kode som utfører multicore parallellisme. Hvis-setningen kontrollerer om programmet kjøres direkte eller kalles av en allerede kjørt Python-konsoll, unngår det noen forvirring eller feil ved multiparallell prosessen (som rekursivt kaller parallellismen).

Demonstrere multiprosessering

Det er en god ide å bruke IPython når du kjører en demonstrasjon av hvordan multiprocessing virkelig kan spare deg tid i datavitenskapsprosjekter. Bruke IPython gir fordelen av å bruke kommandoen% timeit magic for timing execution. Du starter med å laste inn et multiklass datasett, en kompleks maskinlæringsalgoritme (Support Vector Classifier, eller SVC), og en kryssvalideringsprosedyre for å estimere pålitelige resultatresultater fra alle prosedyrene.

Det viktigste å vite er at prosedyrene blir ganske store fordi SVC produserer 10 modeller, som det gjentar 10 ganger hver med kryssvalidering, for totalt 100 modeller.

fra sklearn. datasett import load_digits digits = load_digits () X, y = sifre. data, sifre. målet fra sklearn. svm import SVC fra Sklearn. cross_val_score% timeit single_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = 1) Ut [1]: 1 sløyfer, best av 3: 17. 9 s per sløyfe

Etter denne testen, Du må aktivere multicore-parallellismen og klare resultatene ved å bruke følgende kommandoer:

% timeit multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1) Ut [2]: 1 sløyfer, best av 3: 11. 7 s per loop

Eksempelmaskinen demonstrerer en positiv fordel ved bruk av multicore-prosessering, til tross for å bruke et lite datasett hvor Python tilbringer mesteparten av konsollen og kjører en del av koden i hver enkelt. Denne overhead, noen få sekunder, er fortsatt viktig gitt at den totale utførelsen strekker seg ut i noen få sekunder. Tenk deg hva som ville skje hvis du jobbet med større datamengder - din kjøretid kunne enkelt klippes med to eller tre ganger.

Selv om koden fungerer bra med IPython, legger den ned i et skript og spør Python om å kjøre den i en konsoll eller ved hjelp av en IDE, kan det føre til feil på grunn av den interne operasjonen til en multicore-oppgave. Løsningen er å sette all koden under en if-setning, som kontrollerer om programmet startet direkte og ikke ble kalt etterpå. Her er et eksempelskript:

fra sklearn. datasett importerer load_digits fra sklearn. svm import SVC fra Sklearn. cross_validation import cross_val_score hvis __name__ == '__main__': siffer = load_digits () X, y = sifre. data, sifre. mål multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1)

Kjører i Parallel Python for datalogi - dummies

Redaktørens valg

10 Tips for visuelt analysere og presentere data i Excel - dummies

10 Tips for visuelt analysere og presentere data i Excel - dummies

Her er noen konkrete forslag om hvordan du med hell kan bruke diagrammer som dataanalyseværktøy i Excel, og hvordan du kan bruke diagrammer for å mer effektivt kommunisere resultatene av dataanalysen du gjør. Bruk riktig diagramtype Hva mange mennesker ikke skjønner er at du bare kan lage fem ...

10 Måter å forbedre Power Pivot Performance - dummies

10 Måter å forbedre Power Pivot Performance - dummies

Når du publiserer Power Pivot-rapporter på nettet, har du tenkt for å gi publikum den beste opplevelsen som er mulig. En stor del av denne erfaringen er å sikre at ytelsen er god. Ordet ytelse (som det gjelder applikasjoner og rapportering) er vanligvis synonymt med hastighet - eller hvor raskt et program utfører bestemte handlinger ...

Legger ekstra analyselagre til Excel-diagrammer - dummies

Legger ekstra analyselagre til Excel-diagrammer - dummies

Det er ikke uvanlig å bli bedt om å legge til Ekstra analyse til din visualisering som vanligvis ikke er plottet på et Excel-diagram. For eksempel viser dette diagramet salg for hvert kvartal, men klienten vil kanskje også se prosentveksten i samme kvartal. De fleste Excel-analytikere oppfyller dette behovet med faktiske tekstbokser. ...

Redaktørens valg

Reise fotografering kamera sammenligning diagram - dummies

Reise fotografering kamera sammenligning diagram - dummies

Fra smarte telefoner til punkt-og-skyte og digitale speilreflekskameraer, du har en mange fotograferingsvalg der ute. Bruk følgende diagram for å se hvilken type kamera som passer best for deg. Smartphone Point-and-shoot dSLR Bildesensor Kvalitet Lav til middels Medium Høy Vannbestandig (egnet for basseng) Sjeldne Få modeller Sjeldne Optiske Zoom Lav ...

Ta et makrofoto-dummies

Ta et makrofoto-dummies

Fotografi (makrofotografi) gir deg den som ser bildene dine, utsikt over verden ikke normalt sett av det blotte øye. De fleste kameraer, selv smarttelefoner, kan skyte ting med en rimelig nærhet med en viss grad av klarhet og fokus. Mens du reiser, finner du ting som skyter nærbilde, for eksempel hva du spiser til middag, en merkelig feil, ...

Forestille et Moving Object - dummies

Forestille et Moving Object - dummies

Når du ser et bilde, skjønner du selv hva som skjedde da det ble tatt. Noen bilder kan innebære bevegelse eller aktivitet. For eksempel kan du fokusere på en sykkel som beveger seg nedover gaten med bygningene bak den sløret. Dette er annerledes enn grunne dybdeskarphet, men fordi blenderåpningen ikke er det som skaper ...

Redaktørens valg

ACT-strategi for å multiplisere en horisontal matrise med en vertikal matrise - dummies

ACT-strategi for å multiplisere en horisontal matrise med en vertikal matrise - dummies

På ACT Matematisk test, du må sannsynligvis multiplisere par matriser som har enten en rad eller en kolonne. En enkel måte å formere en horisontal matrise med en vertikal matris er å sette opp et lite rutenett. Denne metoden lar deg fylle ut tallene for å få det riktige svaret. Matrix ...

ACT-strategi for å løse en matrise ved hjelp av en determinant-dummies

ACT-strategi for å løse en matrise ved hjelp av en determinant-dummies

Er en determinant en vanlig operasjon utført på en firkantet matrise. På ACT Math-testen er den eneste determinantformelen du trenger å være kjent med, for en 2 x 2-matrise. Her er formelen for determinanten av Merk at determinanten av en matrise bare er et tall, ikke en matrise. Å ...

ACT Trick for Quadratics: Slik finner du raskt en Parabola-dummies retning

ACT Trick for Quadratics: Slik finner du raskt en Parabola-dummies retning

For å spare tid når du graver en kvadratisk funksjon på ACT Math-testen, kan du raskt bestemme retningen for parabolen ved hjelp av et enkelt triks basert på koeffisienten a. Dette trikset vedrører tegnet på variabelen a (i uttrykket ax2): Når a er positivt, er grafen konkav opp. I ...