Huis Persoonlijke financiën Uitvoeren in Parallel Python voor Data Science - dummies

Uitvoeren in Parallel Python voor Data Science - dummies

Inhoudsopgave:

Video: CPU vs GPU (What's the Difference?) - Computerphile 2024

Video: CPU vs GPU (What's the Difference?) - Computerphile 2024
Anonim

De meeste computers van tegenwoordig zijn multicore (twee of meer processors in een enkel pakket), sommige met meerdere fysieke CPU's. Een van de belangrijkste beperkingen van Python is dat het standaard een enkele kern gebruikt. (Het is gemaakt in een tijd waarin enkele kernen de norm waren.)

Gegevenswetenschappelijke projecten vereisen nogal wat berekeningen. In het bijzonder is een deel van het wetenschappelijke aspect van de gegevenswetenschap afhankelijk van herhaalde tests en experimenten met verschillende gegevensmatrices. Vergeet niet dat het werken met enorme hoeveelheden gegevens betekent dat de meeste tijdrovende transformaties observatie na waarneming herhalen (bijvoorbeeld identieke en niet-gerelateerde bewerkingen op verschillende delen van een matrix).

Door meer CPU-kernen te gebruiken, wordt een berekening versneld met een factor die bijna overeenkomt met het aantal kernen. Als u bijvoorbeeld vier kernen gebruikt, betekent dit dat u op zijn best vier keer sneller werkt. U krijgt geen volledige viervoudige verhoging omdat er overhead is bij het starten van een parallel proces - nieuwe actieve Python-instanties moeten worden ingesteld met de juiste informatie in het geheugen en worden gelanceerd; bijgevolg zal de verbetering minder dan mogelijk haalbaar maar nog steeds aanzienlijk zijn.

Weten hoe u meer dan één CPU moet gebruiken, is daarom een ​​geavanceerde maar ongelooflijk nuttige vaardigheid voor het vergroten van het aantal voltooide analyses en voor het versnellen van uw bewerkingen, zowel bij het instellen als bij het gebruik van uw dataproducten.

Multiprocessing werkt door dezelfde code en geheugeninhoud te repliceren in verschillende nieuwe Python-instanties (de werkers), het resultaat voor elk van hen te berekenen en de samengevoegde resultaten naar de originele hoofdconsole terug te sturen. Als uw oorspronkelijke exemplaar al een groot deel van het beschikbare RAM-geheugen in beslag neemt, is het niet mogelijk om nieuwe exemplaren te maken en heeft uw machine mogelijk onvoldoende geheugen.

Multicore-parallellisme uitvoeren

Om multicore-parallelliteit met Python uit te voeren, integreert u het Scikit-learn-pakket met het joblib-pakket voor tijdrovende operaties, zoals het repliceren van modellen voor het valideren van resultaten of voor het zoeken naar de beste hyperparameters. In het bijzonder maakt Scikit-learn multiprocessing mogelijk wanneer

  • Cross-Validating: De resultaten van een machine-learning hypothese testen met behulp van verschillende training- en testgegevens

  • Grid-searching: Systematisch de hyperparameters veranderen van een machine-learning hypothese en testen van de daaruit voortvloeiende resultaten

  • Multilabel-voorspelling: Een algoritme meerdere keren uitvoeren tegen meerdere doelen wanneer er veel verschillende doeldomeinen zijn om tegelijkertijd te voorspellen

  • Ensemble machine-learning methoden: Modellering van een groot aantal classifiers, elk onafhankelijk van elkaar, zoals bij gebruik van op RandomForest-gebaseerde modellering

U hoeft niets speciaals te doen om te profiteren van parallelle berekeningen - u kunt parallellisme activeren door instellingen in te stellen de n_jobs -parameter naar een aantal kernen van meer dan 1 of door de waarde in te stellen op -1, wat betekent dat je alle beschikbare CPU-instances wilt gebruiken.

Als u uw code niet vanaf de console of vanaf een IPython-notebook uitvoert, is het uiterst belangrijk dat u uw code van elke pakketimport of globale variabeltaak in uw script scheidt met de if __name __ == '__ main__': commando aan het begin van elke code die multicoreparallelisme uitvoert. De if-opdracht controleert of het programma direct wordt uitgevoerd of wordt aangeroepen door een reeds draaiende Python-console, waarbij verwarring of fouten worden voorkomen door het multiparallelle proces (zoals het recursief oproepen van het parallellisme).

Multiprocessing aantonen

Het is een goed idee om IPython te gebruiken wanneer u een demonstratie uitvoert van hoe multiprocessing u echt tijd kan besparen tijdens data science-projecten. Het gebruik van IPython biedt het voordeel van het gebruik van de% timeit magic-opdracht voor het uitvoeren van timings. U begint met het laden van een multiclass-gegevensverzameling, een complex algoritme voor machine-learning (de Support Vector Classifier of SVC) en een cross-validatieprocedure voor het schatten van betrouwbare resulterende scores van alle procedures.

Het belangrijkste om te weten is dat de procedures behoorlijk groot worden omdat de SVC 10 modellen produceert, die ze 10 keer elk herhaalt met behulp van kruisvalidatie, voor een totaal van 100 modellen.

van sklearn. datasets importeren load_digits digits = load_digits () X, y = cijfers. gegevens, cijfers. doelwit van sklearn. svm importeer SVC van sklearn. cross_validation importeren cross_val_score% timeit single_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = 1) Uit [1]: 1 lussen, beste van 3: 17. 9 s per lus

Na deze test, je moet de multicore parallelliteit activeren en de resultaten timen met behulp van de volgende opdrachten:

% timeit multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1) Uit [2]: 1 loops, best of 3: 11. 7 s per lus

De voorbeeldmachine laat een positief voordeel zien met behulp van multicore-verwerking, ondanks het gebruik van een kleine dataset waarbij Python het grootste deel van de tijd consoles doorbrengt en een deel van de code in elk daarvan uitvoert. Deze overhead, enkele seconden, is nog steeds van belang omdat de totale uitvoering een paar seconden duurt. Stelt u zich eens voor wat er zou gebeuren als u met grotere sets gegevens zou werken - uw uitvoeringstijd zou gemakkelijk twee of drie keer kunnen worden verkort.

Hoewel de code prima werkt met IPython, kan het neerzetten in een script en Python vragen het in een console uit te voeren of een IDE te gebruiken fouten veroorzaken vanwege de interne bewerkingen van een multicore-taak. De oplossing is om alle code onder een if-statement te plaatsen, die controleert of het programma direct is gestart en niet achteraf is gecalld. Hier is een voorbeeldscript:

van sklearn. datasets importeren load_digits van sklearn. svm importeer SVC van sklearn. cross_validation importeer cross_val_score if __name__ == '__main__': digits = load_digits () X, y = cijfers. gegevens, cijfers. target multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1)
Uitvoeren in Parallel Python voor Data Science - dummies

Bewerkers keuze

Hoe u uw LinkedIn-profiel kunt vermarkten voor de markt - dummies

Hoe u uw LinkedIn-profiel kunt vermarkten voor de markt - dummies

Wanneer het komt om het voordeel dat u van LinkedIn krijgt te maximaliseren, bent u uw grootste pleitbezorger. Hoewel je netwerk van connecties je helpt te groeien, gebeurt veel van je marketing zonder dat je erbij betrokken bent. Nadat je je profiel hebt aangemaakt, worden die en andere LinkedIn-activiteit van je gelezen en beoordeeld door de ...

Hoe u uw LinkedIn-netwerk kunt bouwen voordat u naar een nieuwe stad gaat - dummies

Hoe u uw LinkedIn-netwerk kunt bouwen voordat u naar een nieuwe stad gaat - dummies

Deze dagen, wanneer u naar een nieuwe stad moet verhuizen, kunt u er veel plannen voor maken op LinkedIn en op internet. Je kunt de buurten onderzoeken, de schoolsystemen bekijken en online naar huizen gaan. Je kunt een stap verder gaan als je van plan bent om naar een andere ...

Hoe u uw LinkedIn-contactinstellingen controleert - dummies

Hoe u uw LinkedIn-contactinstellingen controleert - dummies

U zeker wilt dat u de juiste instellingen selecteert contactinstellingen voor uw LinkedIn-profiel. Als u bijvoorbeeld op zoek bent naar een nieuwe baan, wilt u er zeker van zijn dat de optie voor Carrièremogelijkheden is gecontroleerd. Wanneer u klaar bent om uw contactinstellingen te controleren, volgt u deze stappen: Ga naar ...

Bewerkers keuze

Canon EOS Rebel XS / 1000D voor Dummy's Cheat Sheet - dummies

Canon EOS Rebel XS / 1000D voor Dummy's Cheat Sheet - dummies

Uw Canon EOS Rebel XS / 1000D heeft alle functies die u kunt gebruiken om fantastische foto's te maken. Je moet de beeldmodus instellen op het onderwerp van je foto en de Canon EOS Rebel XS / 1000D laat je volledig of gedeeltelijk automatisch gaan met de belichtingsinstellingen.

Canon Rebel T3-serie camera's: Live-modus Autofocus in Live View - dummies

Canon Rebel T3-serie camera's: Live-modus Autofocus in Live View - dummies

Live-modus Met autofocus kunt u de focus instellen op uw Canon EOS Rebel T3 of T3i zonder tijdelijk het voorbeeld van de monitor te verliezen. Bovendien, in plaats van het selecteren van negen autofocuspunten, verplaatst u eenvoudig een enkel scherpstelpunt over uw onderwerp. Aan de andere kant is de autofocus van de Live-modus merkbaar langzamer dan in de Quick-modus, en ...

Bewerkers keuze

Wijzigt Hoe tekstgrootte te wijzigen in Word 2016 - dummies

Wijzigt Hoe tekstgrootte te wijzigen in Word 2016 - dummies

Tekstgrootte wordt ingesteld in uw Word 2016 document gebaseerd over de meting van de oude letterzetter, ook wel punten genoemd. Hier zijn enkele aandachtspunten waarmee u rekening moet houden bij het opmaken van tekst in Word: hoe groter de puntgrootte, hoe groter de tekst. De meeste gedrukte tekst is 10 of 12 punten lang. Koppen zijn meestal 14 ...

Grammatica controleren in Word 2007 - dummies

Grammatica controleren in Word 2007 - dummies

Naast het controleren op correcte spelling, kunt u met Word 2007 ook om uw documenten te bewijzen om grammaticale fouten te voorkomen. U kunt de grammaticasuggesties van Word bekijken terwijl u door het document bladert, of u kunt een traditionele spellingcontrole uitvoeren. Word biedt u zelfs de kans om de gemarkeerde fout te onderzoeken en meer te leren van ...

Spelling controleren terwijl u typt in Word 2013 - dummies

Spelling controleren terwijl u typt in Word 2013 - dummies

Woord 2013 heeft een interne bibliotheek vol met ontelbare woorden, allemaal correct gespeld. Telkens wanneer u een woord typt, wordt het vergeleken met dat woordenboek. Wanneer het woord niet wordt gevonden, wordt dit als verdacht gemarkeerd in uw document. Het merk is een rode zigzaglijn. Mijn advies: blijf typen. Laat de "rode zigzag van een ...