Casa Finanza personale In esecuzione in Parallel Python per Data Science - dummies

In esecuzione in Parallel Python per Data Science - dummies

Sommario:

Video: Execute Jars and Python scripts on Azure Databricks using Data Factory | Azure Friday 2024

Video: Execute Jars and Python scripts on Azure Databricks using Data Factory | Azure Friday 2024
Anonim

Molti computer oggi sono multicore (due o più processori in un unico pacchetto), alcuni con più CPU fisiche. Uno dei limiti più importanti di Python è che utilizza un singolo core per impostazione predefinita. (È stato creato in un momento in cui i single core erano la norma).

I progetti di scienza dei dati richiedono molti calcoli. In particolare, una parte dell'aspetto scientifico della scienza dei dati si basa su test ripetuti ed esperimenti su diverse matrici di dati. Non dimenticare che lavorare con enormi quantità di dati significa che la maggior parte delle trasformazioni che richiedono tempo ripetono l'osservazione dopo l'osservazione (ad esempio, operazioni identiche e non correlate su parti diverse di una matrice).

L'utilizzo di più core CPU accelera un calcolo di un fattore che corrisponde quasi al numero di core. Ad esempio, avere quattro core significherebbe lavorare al massimo quattro volte più velocemente. Non si ottiene un aumento completo di quattro volte perché c'è un sovraccarico quando si avvia un processo parallelo: nuove istanze Python in esecuzione devono essere configurate con le giuste informazioni in memoria e avviate; di conseguenza, il miglioramento sarà inferiore a quello potenzialmente ottenibile ma comunque significativo.

Sapere come utilizzare più di una CPU è quindi un'abilità avanzata ma incredibilmente utile per aumentare il numero di analisi completate e per velocizzare le operazioni sia durante l'installazione che durante l'utilizzo dei prodotti di dati.

Il multiprocessing funziona replicando lo stesso codice e il contenuto della memoria in varie nuove istanze Python (i lavoratori), calcolando il risultato per ognuno di essi e restituendo i risultati raggruppati alla console principale originale. Se l'istanza originale occupa già gran parte della memoria RAM disponibile, non sarà possibile creare nuove istanze e la macchina potrebbe esaurire la memoria.

Esecuzione del parallelismo multicore

Per eseguire il parallelismo multicore con Python, si integra il pacchetto Scikit-learn con il pacchetto joblib per operazioni dispendiose in termini di tempo, come la replica di modelli per la convalida dei risultati o per la ricerca di i migliori iper-parametri. In particolare, Scikit-learn consente il multiprocessing quando

  • Convalida incrociata: Verifica dei risultati di un'ipotesi di apprendimento automatico utilizzando diversi dati di addestramento e test

  • Ricerca a griglia: Modifica sistematica degli iperparametri di un'ipotesi di apprendimento automatico e test dei risultati conseguenti

  • Predizione multilivello: Esecuzione di un algoritmo più volte su più target quando ci sono molti risultati target diversi da prevedere allo stesso tempo

  • Metodi di machine-learning Ensemble: Modellazione di una grande quantità di classificatori, ciascuno indipendente dall'altro, come quando si utilizza la modellazione basata su RandomForest

Non è necessario fare nulla di speciale per sfruttare i calcoli paralleli: è possibile attivare il parallelismo impostando il parametro n_jobs per un numero di core superiore a 1 o impostando il valore su -1, il che significa che si desidera utilizzare tutte le istanze CPU disponibili.

Se non si sta eseguendo il codice dalla console o da un notebook IPython, è estremamente importante separare il codice da qualsiasi importazione di pacchetto o assegnazione di variabile globale nel proprio script utilizzando if if __name __ == '__ main__': comando all'inizio di qualsiasi codice che esegue il parallelismo multicore. L'istruzione if controlla se il programma viene eseguito direttamente o viene chiamato da una console Python già in esecuzione, evitando qualsiasi confusione o errore dal processo multiparallel (come ricorsivamente chiamando il parallelismo).

Dimostrazione del multiprocessing

È una buona idea usare IPython quando si esegue una dimostrazione di come il multiprocessing possa davvero farvi risparmiare tempo durante i progetti di scienza dei dati. L'utilizzo di IPython offre il vantaggio di utilizzare il comando magico% time per l'esecuzione della temporizzazione. Si inizia caricando un set di dati multiclasse, un algoritmo complesso di apprendimento automatico (il Support Vector Classifier o SVC) e una procedura di convalida incrociata per stimare i punteggi risultanti affidabili da tutte le procedure.

La cosa più importante da sapere è che le procedure diventano piuttosto grandi perché SVC produce 10 modelli, che ripete 10 volte ciascuno usando la convalida incrociata, per un totale di 100 modelli.

da sklearn. set di dati import load_digits digits = load_digits () X, y = cifre. dati, cifre. obiettivo da sklearn. svm importa SVC da 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 loop, meglio di 3: 17. 9 s per loop

Dopo questo test, è necessario attivare il parallelismo multicore e cronometrare i risultati utilizzando i seguenti comandi:

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

La macchina di esempio dimostra un vantaggio positivo utilizzando l'elaborazione multicore, nonostante l'utilizzo di un piccolo set di dati in cui Python spende la maggior parte del tempo per avviare le console e eseguire una parte del codice in ciascuna di esse. Questo sovraccarico, di pochi secondi, è ancora significativo dato che l'esecuzione totale si estende per una manciata di secondi. Immagina cosa succederebbe se lavorassi con insiemi di dati più grandi - il tuo tempo di esecuzione potrebbe essere facilmente ridotto di due o tre volte.

Sebbene il codice funzioni bene con IPython, inserendolo in uno script e chiedendo a Python di eseguirlo in una console o utilizzando un IDE può causare errori a causa delle operazioni interne di un'attività multicore. La soluzione è mettere tutto il codice sotto un'istruzione if, che controlla se il programma è stato avviato direttamente e non è stato chiamato in seguito. Ecco uno script di esempio:

da sklearn. i set di dati importano load_digits da sklearn. svm importa SVC da sklearn. cross_validation import cross_val_score if __name__ == '__main__': digits = load_digits () X, y = cifre. dati, cifre. target multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1)
In esecuzione in Parallel Python per Data Science - dummies

Scelta dell'editore

Scattare foto digitali con uno zoom ottico - dummy

Scattare foto digitali con uno zoom ottico - dummy

La fotocamera digitale potrebbe avere uno zoom ottico, che è un Obiettivo zoom attuale vecchio stile (al contrario di uno zoom digitale). Per utilizzare lo zoom ottico della fotocamera digitale per scatti ravvicinati, segui questi passaggi di preparazione delle immagini prima di attivare il pulsante o lo switch di zoom:

La reflex digitale e la sensibilità alla luce - dummy

La reflex digitale e la sensibilità alla luce - dummy

La tua reflex digitale ha un'opzione per determinare la sensibilità del sensore della fotocamera è alla luce. Le fotocamere digitali sono le stesse delle fotocamere a pellicola in quanto la sensibilità alla luce è determinata dalla valutazione ISO. Il vantaggio di una fotocamera digitale è che non è necessario cambiare pellicola per modificare le valutazioni ISO. Quando aumenti ...

Scatti grandangolari con obiettivi standard - manichini

Scatti grandangolari con obiettivi standard - manichini

Fotografia grandangolare con un angolo di campo maggiore rispetto alla lunghezza focale normale o teleobiettivo. A volte si percepiscono le foto come molto espansive. Altre volte, a malapena lo si nota. Dipende tutto dal soggetto e da come si inquadra la scena. Questa figura mostra una scena di terreni agricoli che è stata scattata utilizzando un Sony APS-C ...

Scelta dell'editore

Come usare il meta tag DESCRIPTION - dummies

Come usare il meta tag DESCRIPTION - dummies

I meta tag sono tag HTML speciali che puoi utilizzare per trasportare informazioni, che i browser o altri programmi possono quindi leggere. Quando i motori di ricerca di Internet furono creati per la prima volta, i webmaster includevano i meta tag nelle loro pagine per rendere più facile per i motori di ricerca determinare le pagine. I motori di ricerca hanno utilizzato anche questi meta ...

Come scrivere un grande tag Title Web Marketing - dummies

Come scrivere un grande tag Title Web Marketing - dummies

Scrivere un tag title è fondamentale per il successo del web marketing e coinvolge più che mettere le parole chiave prima. I motori di ricerca mostrano il tag parola chiave nella parte superiore di ciascun elemento nelle pagine dei risultati dei motori di ricerca (SERP). Un tag del titolo ben scritto potrebbe aumentare le probabilità che un cliente in ricerca faccia clic sul tuo annuncio. Se ...

In che modo Yahoo! Cerca negli elenchi di Internet e dei ranghi - dummies

In che modo Yahoo! Cerca negli elenchi di Internet e dei ranghi - dummies

Quando le persone effettuano ricerche sul Web utilizzando Yahoo! , ottengono una combinazione di risultati organici e pagati. Se lavori per una società più grande, potresti provare Yahoo! La ricerca inoltra Pro per ottenere un vantaggio rispetto alla concorrenza e puoi persino registrare il tuo sito con Yahoo! Directory. Yahoo! I risultati di ricerca organica ...

Scelta dell'editore

Di Spotify su ShareMyPlaylists. it Funzionalità del sito - dummies

Di Spotify su ShareMyPlaylists. it Funzionalità del sito - dummies

ShareMyPlaylists (o SMP, in breve) è stato uno dei primi siti di condivisione di playlist Spotify e continua a innovare e offrire nuove funzionalità ai visitatori. Il mantra del sito è "Long Live the Mixtape", e qui troverai tantissime creazioni accuratamente compilate da migliaia di utenti. Dopo aver creato una playlist Spotify piena di ...

Spotify Unlimited - dummies

Spotify Unlimited - dummies

Spotify Unlimited è un modo brillante per ascoltare tutta la musica che vuoi senza limiti. È come una persona speciale che ti compra da mangiare e da bere tutta la sera per non doverti preoccupare del conto. È come essere in grado di dormire nel weekend senza preoccuparsi del lavoro o se ...

I generi di Spotify - dummies

I generi di Spotify - dummies

Che si tratti di hard rock, techno, pop, jazz, industrial, indie pop, folk , classico, heavy metal, valzer o qualsiasi altra cosa ti piaccia, Spotify ha il genere o il tipo di musica coperto. Puoi cercare i generi comuni da Spotify. Sebbene Spotify abbia pubblicato un elenco di quasi 1, 000 generi noti, non tutti saranno in grado di offrire ...