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

Cara menggunakan Pemesejan Segera dengan Akaun MySpace anda - dummies

Cara menggunakan Pemesejan Segera dengan Akaun MySpace anda - dummies

Pasangan mySpaceIM MySpace Instant Messaging (IMing ) dengan perkhidmatan Skype telefon Internet yang popular, membolehkan anda menghantar dan menerima sama ada mesej menaip atau komunikasi suara. MySpaceIM berfungsi pada mesin Windows sahaja yang menggunakan Internet Explorer Microsoft. Sekiranya anda mempunyai Mac atau menggunakan pelayar yang berbeza, anda tidak bernasib baik. Juga, sesiapa sahaja yang anda mahu ...

Cara Menggunakan Profil MySpace Edit Halaman - dummies

Cara Menggunakan Profil MySpace Edit Halaman - dummies

Dengan halaman Edit Profil MySpace, anda boleh tambah, padam, atau tukar maklumat profil anda bila-bila masa anda mahu. Untuk membuka halaman Edit Profil, cuma pergi ke halaman utama anda dan klik pautan Edit Profil di sudut kiri atas. Tab Maklumat Peribadi di halaman Profil Edit dibahagikan kepada lapan skrin berasingan ...

Pilihan Editor

Cara Menggunakan Templat dalam Excel 2007 - dummies

Cara Menggunakan Templat dalam Excel 2007 - dummies

Excel 2007 menyediakan template yang direka bentuk, lembaran kerja untuk kegunaan umum. Templat mengandungi teks standard atau boilerplate, tetapi anda boleh mengubah suai template untuk memenuhi keperluan anda. Anda boleh menggunakan templat secara automatik dipasang dengan Excel 2007, atau anda boleh memuat turun templat percuma dari laman web Microsoft Office Online. Templat berikut dipasang secara automatik apabila ...

Cara menggunakan fungsi teks di Excel 2013 - dummies

Cara menggunakan fungsi teks di Excel 2013 - dummies

Fungsi teks di Excel 2013 menu lungsur butang arahan pada tab Rumus Ribbon (Alt + MT). Terdapat dua jenis fungsi teks: fungsi seperti VALUE, TEXT, dan DOLLAR yang menukarkan entri teks berangka ke dalam nombor dan entri berangka ke dalam teks, dan berfungsi seperti UPPER, LOWER, dan PROPER yang ...

Pilihan Editor

Cara Mengatur Laman Web Anda dengan Tabel dan Bingkai - dummies

Cara Mengatur Laman Web Anda dengan Tabel dan Bingkai - dummies

Menggunakan jadual dan bingkai pada halaman Web anda membantu anda membentangkan maklumat kepada pelawat laman anda dengan cara teratur. Jadual adalah alat susunatur untuk jadual data pada halaman Web, tetapi keupayaan meja untuk laman web telah lama digunakan untuk mengawal susun atur keseluruhan halaman. Pereka membuat sel ...

Cara Mendaftar Nama Domain Anda - dummies

Cara Mendaftar Nama Domain Anda - dummies

Ketika membina sebuah laman web, pantai jelas dan nama domain yang anda mahukan memang ada. Seterusnya, sudah tiba masanya untuk mendaftarkan nama domain itu. Apabila anda mendaftarkan nama domain, pastikan anda mendaftarkannya selama sekurang-kurangnya tiga tahun. Anda boleh mendaftar untuk sekurang-kurangnya ...

Cara Hapus Pemformatan yang Tidak Diingini dari Laman Web Anda - para pengedit kod paling banyak

Cara Hapus Pemformatan yang Tidak Diingini dari Laman Web Anda - para pengedit kod paling banyak

Yang secara automatik membersihkan kesilapan biasa dalam kod anda. Sebagai contoh, arahan Clean Up Word HTML / XHTML dalam Dreamweaver adalah satu kemestian bagi mana-mana halaman web yang merangkumi kandungan yang disalin dari Word atau mana-mana dokumen Microsoft lain. Ini penting kerana fail Microsoft sering membenamkan tambahan ...