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 2025

Video: Execute Jars and Python scripts on Azure Databricks using Data Factory | Azure Friday 2025
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

Vantaggi di base della rete - manichini

Vantaggi di base della rete - manichini

Se la verità viene detta, le reti di computer sono un problema da impostare. Perché i vantaggi di avere una rete rendono la pena di crearne uno utile. Non è necessario essere un dottorato di ricerca per comprendere i vantaggi del networking. Le reti riguardano esclusivamente la condivisione. Nello specifico, le reti riguardano la condivisione di tre elementi: informazioni, risorse, ...

Biometria L'accettazione, la privacy e la legge - manichini

Biometria L'accettazione, la privacy e la legge - manichini

La tecnologia biometrica non è affatto universalmente accettata da tutti gli utenti. Ci sono una serie di considerazioni sociali e legali che danno ad ogni organizzazione una pausa prima di fare il salto a capofitto nell'implementazione di un sistema biometrico. Le persone sono più a loro agio con i sistemi di raccolta biometrici che sono i meno intrusivi. Scanner per retina e nasi elettronici sono ...

Biometria Nozioni di base - manichini

Biometria Nozioni di base - manichini

La biometria non è roba da fantascienza. Puoi trovare una dozzina di modi più o meno efficaci per utilizzare la biometria per identificare qualcuno, ognuno dei quali si divide in due classi: la biometria fisiologica misura una parte specifica della struttura o della forma di una porzione del corpo di un soggetto. La biometria comportamentale è più interessata a come ...

Scelta dell'editore

Come creare un nuovo dizionario personalizzato in Excel 2007 - dummies

Come creare un nuovo dizionario personalizzato in Excel 2007 - dummies

In Excel 2007, è possibile creare dizionari personalizzati da utilizzare quando si esegue il controllo ortografico dei fogli di lavoro. Utilizzare il pulsante Aggiungi al dizionario nella finestra di dialogo Controllo ortografico per aggiungere parole sconosciute a un dizionario personalizzato. Per impostazione predefinita, Excel aggiunge queste parole a un file dizionario personalizzato denominato CUSTOM. DIC, ma è possibile creare una nuova personalizzazione ...

Come creare un componente aggiuntivo da un file di cartella di lavoro Excel Excel normale in VBA - modi di dire

Come creare un componente aggiuntivo da un file di cartella di lavoro Excel Excel normale in VBA - modi di dire

Sebbene sia possibile convertire qualsiasi cartella di lavoro di Excel in un componente aggiuntivo, non tutte le cartelle di lavoro traggono vantaggio da questa conversione. Una cartella di lavoro senza macro rende un componente aggiuntivo inutile. In effetti, gli unici tipi di cartelle di lavoro che traggono vantaggio dall'essere convertiti in un componente aggiuntivo sono quelli con macro. Ad esempio, una cartella di lavoro costituita da macro generiche (Sub ...

Come creare una nuova cartella di lavoro in Excel 2010 - dummy

Come creare una nuova cartella di lavoro in Excel 2010 - dummy

Se si lavora in Microsoft Excel 2010 e vuoi iniziare a lavorare in un nuovo file di cartella di lavoro di Excel, puoi facilmente creare una nuova cartella di lavoro. Per fare ciò, puoi usare un comando nella scheda File o una scorciatoia da tastiera. Fare clic sulla scheda File. Excel visualizza la visualizzazione Backstage, in cui è possibile accedere ai comandi relativi ai file. ...

Scelta dell'editore

Usa lo strumento Gomma in Adobe Illustrator CS5 - manichini

Usa lo strumento Gomma in Adobe Illustrator CS5 - manichini

Adobe Illustrator Creative Suite 5 (Adobe CS5) Illustrator è utilizzato per rimuovere rapidamente aree di grafica con la stessa facilità con cui si cancellano i pixel in Photoshop, accarezzando con il mouse su qualsiasi forma o gruppo di forme. Facendo doppio clic sullo strumento Gomma, è possibile definire il diametro, l'angolo e la rotondità della gomma. Se stai usando un ...

Trasforma gli strumenti in Adobe Illustrator CS5 - dummies

Trasforma gli strumenti in Adobe Illustrator CS5 - dummies

I più popolari strumenti di trasformazione in Adobe Creative Suite 5 (Adobe CS5) Illustrator - Rifletti, scala, inclina, rimodella e Trasformazione libera: sono facili da usare e modificano rapidamente la tua illustrazione. Lo strumento Rifletti Niente è simmetrico, giusto? Forse no, ma gli oggetti non creati simmetricamente in Illustrator possono sembrare off-kilter. Utilizzando lo strumento Rifletti, si ...

Quando utilizzare Adobe CS5 Illustrator - dummies

Quando utilizzare Adobe CS5 Illustrator - dummies

Utilizzando Adobe Creative Suite 5 (Adobe CS5) Illustrator anziché Photoshop , ottieni diversi benefici. Potresti aver sentito che Illustrator è migliore per la grafica vettoriale, ma perché e che altro porta? Illustrator può salvare ed esportare immagini nella maggior parte dei formati di file. Scegliendo di salvare o esportare, è possibile creare un ...