Rumah Kewangan Peribadi Yang menjalankan Python Paralel untuk Sains Data - makmies

Yang menjalankan Python Paralel untuk Sains Data - makmies

Isi kandungan:

Video: Computational Linguistics, by Lucas Freitas 2024

Video: Computational Linguistics, by Lucas Freitas 2024
Anonim

Kebanyakan komputer hari ini adalah multicore (dua atau lebih pemproses dalam pakej tunggal), beberapa dengan pelbagai CPU fizikal. Salah satu batasan Python yang paling penting ialah ia menggunakan teras tunggal secara lalai. (Ia dicipta dalam satu masa apabila teras tunggal adalah norma.)

Projek sains data memerlukan banyak perhitungan. Khususnya, sebahagian aspek saintifik sains data bergantung pada ujian berulang dan eksperimen pada matriks data yang berlainan. Jangan lupa bahawa bekerja dengan kuantiti data yang besar bermakna bahawa kebanyakan perubahan masa memantau pemerhatian selepas pemerhatian (contohnya, operasi yang sama dan tidak berkaitan di bahagian berlainan matriks).

Menggunakan lebih banyak teras CPU mempercepat pengiraan dengan faktor yang hampir sepadan dengan bilangan teras. Sebagai contoh, mempunyai empat teras akan berfungsi paling baik empat kali lebih cepat. Anda tidak menerima peningkatan empat kali ganda penuh kerana terdapat overhead apabila memulakan proses selari - contoh Python yang baru perlu disiapkan dengan maklumat ing memori yang betul dan dilancarkan; Oleh itu, penambahbaikan akan kurang daripada berpotensi dicapai tetapi masih penting.

Mengetahui bagaimana menggunakan lebih daripada satu CPU adalah kemahiran maju tetapi sangat berguna untuk meningkatkan bilangan analisis yang telah siap, dan untuk mempercepatkan operasi anda semasa membuat dan apabila menggunakan produk data anda.

Multiprocessing berfungsi dengan mereplikasi kod dan kandungan memori yang sama dalam pelbagai contoh Python baru (pekerja), menghitung hasil untuk masing-masing, dan mengembalikan hasil yang dikumpulkan ke konsol asal utama. Jika contoh asal anda sudah menduduki banyak memori RAM yang ada, tidak mungkin untuk membuat contoh baru, dan mesin anda mungkin kehabisan memori.

Melakukan paralelisme multicore

Untuk melakukan pelbagai paralelisme dengan Python, anda mengintegrasikan pakej belajar Scikit dengan pakej joblib untuk operasi memakan masa, seperti model replika untuk mengesahkan keputusan atau untuk mencari parameter hiper yang terbaik. Secara khusus, Scikit-learning membolehkan multiprocessing apabila

  • Cross-validating: Menguji hasil hipotesis pembelajaran komputer menggunakan data latihan dan pengujian yang berlainan

  • Grid-searching: daripada hipotesis mesin pembelajaran dan menguji keputusan yang berlaku

  • Ramalan multilabel: Menjalankan algoritma berbilang kali berbanding pelbagai sasaran apabila terdapat banyak hasil sasaran yang berbeza untuk meramalkan pada masa yang sama

  • Ensemble kaedah pembelajaran komputer: Memodelkan kumpulan pengelas yang besar, masing-masing bebas daripada yang lain, seperti apabila menggunakan pemodelan berdasarkan RandomForest

Anda tidak perlu melakukan apa-apa yang khusus untuk memanfaatkan pengiraan selari - anda boleh mengaktifkan parallelism dengan menetapkan n_jobs -parameter ke beberapa teras lebih daripada 1 atau dengan menetapkan nilai ke -1, yang bermaksud anda ingin menggunakan semua contoh CPU yang tersedia.

Jika anda tidak menjalankan kod anda dari konsol atau dari Notebook IPython, sangat penting untuk anda memisahkan kod anda daripada sebarang import pakej atau tugasan pembolehubah global dalam skrip anda dengan menggunakan jika __name __ == '__ main__': perintah pada permulaan mana-mana kod yang melaksanakan multicore parallelism. Pernyataan jika menyemak sama ada program itu dijalankan secara langsung atau dipanggil oleh konsol Python yang sudah berjalan, mengelakkan sebarang kekeliruan atau kesilapan oleh proses multiparall (seperti rekursif memanggil paralelisme).

Menunjukkan multiprocessing

Adalah idea yang baik untuk menggunakan IPython apabila anda menjalankan demonstrasi bagaimana multiprocessing benar-benar boleh menjimatkan masa anda semasa projek sains data. Menggunakan IPython memberikan kelebihan menggunakan perintah% magic timeit untuk pelaksanaan masa. Anda bermula dengan memuatkan dataset multiclass, algoritma mesin pembelajaran yang rumit (Vector Classifier Support, atau SVC), dan prosedur silang-pengesahan untuk menganggarkan skor hasil yang boleh dipercayai dari semua prosedur.

Perkara yang paling penting untuk diketahui ialah prosedur menjadi agak besar kerana SVC menghasilkan 10 model, yang mana ia mengulang 10 kali setiap kali menggunakan silang silang, untuk sejumlah 100 model.

dari sklearn. dataset import load_digits digit = load_digits () X, y = digit. data, digit. sasaran dari sklearn. svm import SVC dari sklearn. cross_validation import cross_val_score% timeit single_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = 1) Keluar [1]: 1 gelung, terbaik 3: 17. 9 s per gelung

anda perlu mengaktifkan paralelisme multicore dan masa keputusan menggunakan perintah berikut:

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

Mesin contoh menunjukkan kelebihan positif menggunakan pemproses multicore, walaupun menggunakan dataset kecil di mana Python membelanjakan sebahagian besar konsol permulaan masa dan menjalankan sebahagian kod dalam setiap satu. Overhed ini, beberapa saat, masih penting memandangkan jumlah pelaksanaan meluas selama beberapa saat. Bayangkan apa yang akan berlaku jika anda bekerja dengan set data yang lebih besar - masa pelaksanaan anda boleh dengan mudah dipotong dua atau tiga kali.

Walaupun kod ini berfungsi dengan baik dengan IPython, meletakkannya dalam skrip dan meminta Python untuk menjalankannya dalam konsol atau menggunakan IDE boleh menyebabkan ralat kerana operasi dalaman tugas multicore. Penyelesaiannya adalah untuk meletakkan semua kod di bawah pernyataan jika, yang menyemak sama ada program itu bermula secara langsung dan tidak dipanggil selepasnya. Inilah skrip contoh:

dari sklearn. dataset import load_digits dari sklearn. svm import SVC dari sklearn. cross_validation import cross_val_score if __name__ == '__main__': digit = load_digits () X, y = digits. data, digit. target multi_core_learning = cross_val_score (SVC (), X, y, cv = 20, n_jobs = -1)
Yang menjalankan Python Paralel untuk Sains Data - makmies

Pilihan Editor

Kotak dan Sempadan Sifat Cascading Style Sheets (CSS) - dummies

Kotak dan Sempadan Sifat Cascading Style Sheets (CSS) - dummies

Sifat kotak, anda boleh meletakkan objek gaya di mana saja di dalam tetingkap penyemak imbas, objek kedudukan berbanding dengan objek lain pada halaman, dan gunakan peraturan gaya padding dan margin kotak secara selektif untuk mana-mana atau semua empat objek gaya sebagai kiri dan bawah atau atas, kiri, dan ...

Mengira Kadar Terbuka untuk Kempen Pemasaran E-Mail Anda - dummies

Mengira Kadar Terbuka untuk Kempen Pemasaran E-Mail Anda - dummies

Kadar adalah salah satu istilah pemasaran yang paling mengelirukan dari e-mel. Ia sebenarnya mengukur bilangan interaksi tertentu dengan pelayan e-mel selepas e-mel dihantar dinyatakan sebagai peratusan jumlah tidak melantun. E-mel anda tidak dikira sebagai terbuka sehingga salah satu daripada interaksi berikut berlaku: Penerima membolehkan imej ...

BuddyPress For Dummies Cheat Sheet - dummies

BuddyPress For Dummies Cheat Sheet - dummies

BuddyPress adalah perisian bebas sumber terbuka yang dapat anda unduh, memasang, dan gunakan untuk membina komuniti sosial anda sendiri di laman web anda yang berkuasa WordPress. Untuk melakukan ini, anda memerlukan pemahaman asas tentang ciri dan terminologi BuddyPress. Mencipta komuniti sosial anda sendiri mudah dilakukan dengan BuddyPress, tetapi jika anda memerlukan bantuan, anda boleh bertanya ...

Pilihan Editor

Menikmati Magic of Mindful Movies - dummies

Menikmati Magic of Mindful Movies - dummies

Tidak ada cara yang lebih baik untuk mengembangkan pengalaman pemikiran anda melampaui batas fizikal United Kingdom dan mengembangkan wawasan anda daripada menikmati filem yang cenderung berfikiran. Filem untuk kanak-kanak: Kung Fu Panda (Mark Osborne, John Stevenson, 2008). Filem animasi moden ini sering merujuk kepada kuasa yang datang dari ...

Memperluaskan Kesedaran Anda dengan Mendengarkan CD - manisan

Memperluaskan Kesedaran Anda dengan Mendengarkan CD - manisan

Kadang-kadang, hanya apa yang anda perlukan untuk pengalaman pemikiran yang mendalam. Mendengarkan CD berkualiti boleh memindahkan anda ke luar United Kingdom dan benar-benar membuka fikiran anda kepada idea-idea. CD berikut disyorkan: Meditasi Berpandu: Untuk Ketenangan, Kesedaran dan Cinta oleh Bodhipaksa. A ...

Freemason yang terkenal - orang-orang buatan

Freemason yang terkenal - orang-orang buatan

Yang hebat dan paling cemerlang di dunia atau Freemason. Kumpulan-kumpulan ini memberikan anda jauh dari senarai komprehensif - mereka hanya contoh: Bapa pengasas: Freemason yang paling terkenal di Amerika, George Washington telah dimulakan pada tahun 1752, di Fredericksburg, Virginia. Bapa pengasas lain yang juga Mason termasuk Benjamin Franklin, Marquis de ...

Pilihan Editor

Rakaman Portraits dengan Canon EOS Rebel T1i / 500D - patung

Rakaman Portraits dengan Canon EOS Rebel T1i / 500D - patung

Subjek tertumpukan tajam dan latar belakang yang lembut dan kabur. Ikuti langkah-langkah ini untuk mengambil potret seperti Canon Rebel Digital anda.

Menukar Canon EOS Rebel T7i / 800D ke Mod Live View - dummies

Menukar Canon EOS Rebel T7i / 800D ke Mod Live View - dummies

DSLR yang dijual hari ini, kamera Canon EOS Rebel T7i / 800D menawarkan Live View, yang menyahdayakan pemidang tilik dan sebaliknya memaparkan pratonton langsung subjek anda pada monitor kamera. Senarai berikut menerangkan asas penggunaan Live View: Switch to Live View for photography: Tekan butang Live View untuk beralih dari ...