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 2024

Video: Contain Yourself: An Intro to Docker and Containers by Nicola Kabar and Mano Marks 2024
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

Hvordan å stable og gruppereformer i Word 2013 - dummies

Hvordan å stable og gruppereformer i Word 2013 - dummies

Enkeltformer kan noen ganger være nyttige i en dokument, men den virkelige kraften til Word 2013's Shapes-funksjonen kan bli funnet ved å kombinere figurer for å lage mer komplekse tegninger og logoer. Du kan stable formene oppå hverandre og kontrollere rekkefølgen de vises i stakken. Når du har ...

Hvordan du angir punktavstand i Word 2013 - dummies

Hvordan du angir punktavstand i Word 2013 - dummies

Word 2013 lar deg legge til "luft" til plass før eller etter eller i midten av avsnittene dine. I midten av avsnittet har du linjeavstand. Før og etter avsnittet kommer punktavstand. Hvordan sette linjeavstanden Endre linjeavstanden legger til ekstra mellomrom mellom alle tekstlinjer ...

Slik starter du et nytt dokument i Word 2007 - dummies

Slik starter du et nytt dokument i Word 2007 - dummies

Starter et nytt dokument i Word 2007 er lett. Hvis du nettopp har startet Word 2007 og vil åpne et tomt dokument, kan du følge tre enkle trinn.

Redaktørens valg

Slik oppretter du en AWS Administrator User - Dummies

Slik oppretter du en AWS Administrator User - Dummies

Opprett Administrator-gruppen er det første trinnet for å sikre at din AWS (Amazon Web Services) -kontoen er fortsatt trygg. Det neste trinnet er å opprette en konto for deg selv og tilordne den til administratorgruppen, slik at du har full tilgang til de administrative funksjonene i din AWS-konto. Følgende trinn beskriver hvordan ...

Vurderer AWS-støttede plattformer - dummies

Vurderer AWS-støttede plattformer - dummies

Hvis du ikke har behandlet AWS eller skyen ennå, du kan være fristet til å tenke på plattformer som en bestemt kombinasjon av gjenstander. For eksempel, når du ser ditt eget lokale oppsett, har du en server som kjører et bestemt operativsystem og har et bestemt sett med maskinvareressurser. Systemet har en bestemt ...

Lage skuffer på Amazon Web Services - dummies

Lage skuffer på Amazon Web Services - dummies

Når du er den stolte eieren av Amazon Web Services (AWS ) konto, det er på tide å gjøre noe nyttig, som å lage en bøtte. Start med å sjekke ut dine S3-ressurser. For å gjøre det, klikk S3-lenken på startsiden for AWS Management Console, som vist her: Du er tatt til en side som lar deg administrere ...

Redaktørens valg

Slik bruker du Eye-Fi med Evernote-dummies

Slik bruker du Eye-Fi med Evernote-dummies

Et selskap kalt Eye-Fi gjør det mulig å Koble kameraet ditt med Evernote, selv uten å koble kameraet til datamaskinen. Følg disse trinnene for å bruke Eye-Fi: Følg instruksjonene som følger med Eye-Fi-kortet for å konfigurere en Eye-Fi-konto. Sett inn Eye-Fi-kortet i kameraet. Slå på kameraet ditt. ...

Hvordan man merker på Evernote for datamaskiner og tabletter - dummies

Hvordan man merker på Evernote for datamaskiner og tabletter - dummies

Hele poenget med å lagre nyttig informasjon er for å kunne finne den senere. Tagging i Evernote er fundamentalt lik for alle plattformer og er ekstremt nyttig når du dash om å prøve å skrive inn notater på hvilken enhet du bruker på den tiden. For å lage en tagg for et notat på en datamaskin eller ...