Acasă Finanțe personale Care rulează în Python paralel pentru date science - dummies

Care rulează în Python paralel pentru date science - dummies

Cuprins:

Video: Technology Stacks - Computer Science for Business Leaders 2016 2024

Video: Technology Stacks - Computer Science for Business Leaders 2016 2024
Anonim

Majoritatea calculatoarelor de astăzi sunt multicore (două sau mai multe procesoare într-un singur pachet) cu procesoare fizice multiple. Una dintre cele mai importante limitări ale Python este aceea că utilizează un singur nucleu în mod implicit. (A fost creată într-o perioadă când normele au fost simple.)

Proiectele de date științifice necesită o mulțime de calcule. În special, o parte din aspectul științific al științei datelor se bazează pe teste și experimente repetate pe diferite matrice de date. Nu uitați că lucrul cu cantități mari de date înseamnă că cele mai multe transformări care consumă timp repetă observația după observație (de exemplu, operații identice și nerelevante pe diferite părți ale matricei).

Folosirea mai multor nuclee de CPU accelerează un calcul printr-un factor care aproape se potrivește cu numărul de miezuri. De exemplu, având patru nuclee ar însemna lucrul în cel mai bun caz de patru ori mai rapid. Nu primiți o creștere completă de patru ori, deoarece există o sarcină suplimentară atunci când începeți un proces paralel - noile instanțe Python care rulează trebuie să fie configurate cu informațiile corecte din memorie și lansate; în consecință, îmbunătățirea va fi mai mică decât posibilă, dar încă semnificativă.

Știind cum să folosești mai mult de un CPU este, prin urmare, o abilitate avansată, dar incredibil de utilă, pentru creșterea numărului de analize efectuate și pentru accelerarea operațiunilor atât la înființarea, cât și la utilizarea produselor dvs. de date.

Multiprocesarea funcționează prin replicarea aceluiași cod și conținut de memorie în diferite instanțe Python (lucrătorii), calculând rezultatul pentru fiecare dintre ele și returnând rezultatele colectate către consola originală principală. Dacă instanța dvs. originală ocupă deja o mare parte din memoria RAM disponibilă, nu va fi posibilă crearea de instanțe noi și este posibil ca aparatul să nu funcționeze în memorie.

Paralelism multicore

Pentru a efectua paralelismul multicore cu Python, integrați pachetul Scikit-learn cu pachetul joblib pentru operații consumatoare de timp, cum ar fi replicarea modelelor pentru validarea rezultatelor sau pentru căutarea cei mai buni parametri hiper-parametri. În special, Scikit-learn permite multiprocesarea atunci când

Validarea încrucișată:

  • Testarea rezultatelor unei ipoteze de învățare a mașinii folosind diferite date de instruire și testare Căutarea în rețea:

  • Schimbarea sistematică a parametrilor hiper-parametri a unei ipoteze de învățare a mașinilor și testarea rezultatelor urmărite Predicția multilobilelor:

  • Rularea unui algoritm de mai multe ori împotriva țintelor multiple atunci când există multe rezultate țintă diferite pentru a prezice în același timp Metode de învățare a ansamblului de mașini:

  • Modelarea unei game largi de clasificatori, fiecare independentă de cealaltă, cum ar fi atunci când se folosește modelarea bazată pe RandomForest Nu trebuie să faci nimic special pentru a profita de calculul paralel - puteți activa paralelismul prin setarea n_jobs -parametrul la un număr de nuclee mai mare de 1 sau prin setarea valorii la -1, ceea ce înseamnă că doriți să utilizați toate instanțele CPU disponibile.

Dacă nu rulați codul din consola sau dintr-un Notebook IPython, este extrem de important să vă separați codul de orice import de pachete sau alocare de variabile globale în scriptul dvs. folosind __name __ == '__ main__': comandă la începutul oricărui cod care execută paralelismul multicore. Instrucțiunea if verifică dacă programul este rulat direct sau este apelat de o consolă Python deja executată, evitând orice confuzie sau eroare de către procesul multiparallel (cum ar fi apelul recursiv al paralelismului).

Demonstrarea multiprocesării

Este o idee bună să utilizați IPython atunci când executați o demonstrație a modului în care multiprocesarea vă poate economisi timp în timpul proiectelor de știință a datelor. Utilizarea IPython oferă avantajul utilizării comenzii% timeit magic pentru executarea calendarului. Începeți prin încărcarea unui set de date multiclass, algoritm complex de învățare a mașinilor (Vector Classifierul de suport sau SVC) și o procedură de validare încrucișată pentru estimarea scorurilor rezultate din toate procedurile.

Cel mai important lucru pe care trebuie să-l cunoaștem este că procedurile devin destul de mari, deoarece SVC produce 10 modele, care se repetă de 10 ori fiecare, folosind fiecare validare încrucișată, pentru un total de 100 de modele.

din sklearn. seturi de date import load_digits digits = load_digits () X, y = cifre. date, cifre. tinta de la sclearn. SVM import SVC din sklearn. cross_validation import cross_val_score% timeit single_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = 1) Out [1]: 1 bucle, trebuie să activați paralelismul multicore și să efectuați timp utilizând următoarele comenzi:

% timeit multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1) cel mai bun din 3: 11. 7 secunde pe buclă

Mașina de exemplu demonstrează un avantaj pozitiv folosind procesarea multicore, în ciuda folosirii unui set de date mic, în care Python petrece cea mai mare parte a timpului pornind consolele și executând o parte a codului în fiecare. Această depășire, câteva secunde, este încă semnificativă, dat fiind faptul că execuția totală se extinde pentru o mână de secunde. Imaginați-vă ce s-ar întâmpla dacă ați lucrat cu seturi de date mai mari - timpul dvs. de execuție ar putea fi ușor tăiat de două sau de trei ori.

Deși codul funcționează bine cu IPython, punerea în jos într-un script și rugându-l pe Python să o ruleze într-o consolă sau folosind un IDE poate cauza erori din cauza operațiilor interne ale unei sarcini multicore. Soluția este de a pune întregul cod sub o declarație if, care verifică dacă programul a pornit direct și nu a fost apelat după aceea. Iată un exemplu de script:

de la sklearn. seturile de date import_digits de la sklearn. SVM import SVC din sklearn. cross_validation importați cross_val_score dacă __name__ == '__main__': digits = load_digits () X, y = cifre. date, cifre. țintă multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1)

Care rulează în Python paralel pentru date science - dummies

Alegerea editorilor

Administrator de rețea: Zone de căutare inversă - dummies

Administrator de rețea: Zone de căutare inversă - dummies

Interogări DNS obișnuite sunt interogări de căutare înainte corespunde unui nume de domeniu complet calificat. O căutare inversă este opusul unei căutări forward: returnează numele de domeniu complet calificat al unei gazde pe baza adresei sale IP. Căutările inverse sunt posibile din cauza unui domeniu special numit ...

Rețea Elemente de bază: Clienți și servere - manechine

Rețea Elemente de bază: Clienți și servere - manechine

Computerul de rețea care conține hard disk-urile, imprimantele și alte resurse care sunt partajate cu alte calculatoare de rețea se numește un server. Acest termen vine în repetate rânduri, deci trebuie să-l amintiți. Scrie-o pe spatele mâinii tale stângi. Orice computer care nu este un server este numit client. Aveți ...

Retea Bazele: Poduri - dummies

Retea Bazele: Poduri - dummies

O punte este un dispozitiv care conecteaza doua retele astfel incat sa actioneze ca si cum ar fi o rețea. Podurile sunt utilizate pentru a împărți o rețea mare în două rețele mai mici din motive de performanță. Vă puteți gândi la un pod ca pe un repetor inteligent. Repetoarele ascultă semnale care coboară pe un cablu de rețea, amplifică ...

Alegerea editorilor

ÎMprumuta și tweak idei de la alte comunități online - dummies

ÎMprumuta și tweak idei de la alte comunități online - dummies

, Mai degrabă decât să ia ideile altcuiva complet pentru dvs. comunitate online, încercați să riffați pe aceeași idee, dar nu atât de mult încât este evident că nu sunteți creierul din spatele brainstorming-ului. Idei sunt acolo pentru a lua, dar nu ar fi mai degrabă văzute ca cineva inovatoare, nu cineva care scours pe web ...

Branding Blogul tău

Branding Blogul tău

Branding blog-ul tău merge mult spre a face dacă este ușor de recunoscut pentru cititorii tăi. Când vedeți un punct roșu în interiorul unui cerc roșu, ce magazin vine în minte? Ce zici de acele arcuri de aur? Un nume de marcă apare în minte atunci când vedeți simbolul swoosh? La fel ca magazinele populare, restaurantele și încălțămintea ...

Construiți un Blog Mama care este Sellable - dummies

Construiți un Blog Mama care este Sellable - dummies

Dacă obiectivul pe termen lung este de a vinde blogul dvs. ar trebui să o construiască cu acest scop în minte. Evitați asocierea prea intensă a blogului cu marca dvs. personală. Un blog care poate fi valoros cu orice scriitor la cârma trebuie să îndeplinească majoritatea, dacă nu toate, următoarele criterii: Blogul este concentrat ...

Alegerea editorilor

Cum să creați o nouă campanie de anunțuri LinkedIn - dummies

Cum să creați o nouă campanie de anunțuri LinkedIn - dummies

LinkedIn oferă servicii de publicitate pentru afacerea dvs. Dacă vă decideți să utilizați LinkedIn ca instrument de marketing, va trebui doar să obțineți o nouă campanie de anunțuri în lucrări. Când sunteți gata să începeți o nouă campanie, urmați acești pași:

Opțiuni de filtrare pentru anunțul dvs. LinkedIn - manechine

Opțiuni de filtrare pentru anunțul dvs. LinkedIn - manechine

Ce opțiuni de filtrare aveți pentru anunțul dvs. LinkedIn? Alte rețele de publicitate vă permit să filtrați publicul vizat de câteva atribute cunoscute ale persoanei care vă va vedea anunțul, sexul și locația membrilor din public. LinkedIn vă permite să faceți un pas mai departe permițându-vă ...

Oferind și primind viziuni pe LinkedIn - manechine

Oferind și primind viziuni pe LinkedIn - manechine

Deși mulți oameni cred că "Nu este ceea ce știi, știi, "care este unul dintre principalele motive pentru care LinkedIn este atât de valoros, mulți oameni (recrutorii, angajații, directorii executivi, investitorii și altele) sunt foarte interesați de ceea ce știi. În mod logic, oamenii care vă cunosc cel mai bine sunt oamenii din rețeaua dvs., care ...