Membangun Pipeline Machine Learning menggunakan Snowflake dan Dask
Dalam posting ini, saya ingin membagikan beberapa alat yang telah saya jelajahi baru-baru ini dan menunjukkan kepada Anda bagaimana saya menggunakannya dan bagaimana mereka membantu meningkatkan efisiensi alur kerja saya. Dua yang akan saya bicarakan secara khusus adalah Snowflake dan Dask. Dua alat yang sangat berbeda namun saling melengkapi dengan baik terutama sebagai bagian dari Siklus Hidup ML.
By Daniel Foley, Ilmuwan Data
Pengantar
Baru-baru ini saya mencoba menemukan cara yang lebih baik untuk meningkatkan alur kerja saya sebagai ilmuwan data. Saya cenderung menghabiskan sebagian besar waktu saya untuk membuat model dan membangun ETL dalam pekerjaan saya. Ini berarti bahwa semakin banyak saya harus mengandalkan alat untuk menangani kumpulan data besar secara andal dan efisien. Saya segera menyadari bahwa menggunakan panda untuk memanipulasi kumpulan data ini tidak selalu merupakan pendekatan yang baik dan ini mendorong saya untuk mencari alternatif lain.
Dalam posting ini, saya ingin membagikan beberapa alat yang telah saya jelajahi baru-baru ini dan menunjukkan kepada Anda bagaimana saya menggunakannya dan bagaimana mereka membantu meningkatkan efisiensi alur kerja saya. Dua yang akan saya bicarakan secara khusus adalah Snowflake dan Dask. Dua alat yang sangat berbeda namun saling melengkapi dengan baik terutama sebagai bagian dari Siklus Hidup ML. Harapan saya adalah bahwa setelah membaca posting ini Anda akan memiliki pemahaman yang baik tentang apa itu Snowflake dan Dask, bagaimana mereka dapat digunakan secara efektif dan dapat bangun dan berjalan dengan kasus penggunaan Anda sendiri.
Lebih khusus lagi, saya ingin menunjukkan kepada Anda bagaimana Anda dapat membangun pipa ETL menggunakan Snowflake dan Python untuk menghasilkan data pelatihan untuk tugas pembelajaran mesin. Saya kemudian ingin memperkenalkan Dask dan Awan Saturnus dan menunjukkan kepada Anda bagaimana Anda dapat memanfaatkan pemrosesan paralel di cloud untuk benar-benar mempercepat proses pelatihan ML sehingga Anda dapat meningkatkan produktivitas Anda sebagai ilmuwan data.
Membangun ETL di Snowflake dan Python
Sebelum kita masuk ke coding lebih baik saya jelaskan secara singkat apa itu Snowflake. Ini adalah pertanyaan yang baru-baru ini saya tanyakan ketika tim saya memutuskan untuk mulai menggunakannya. Pada tingkat tinggi, ini adalah gudang data di cloud. Setelah bermain-main dengannya untuk sementara waktu, saya menyadari betapa kuatnya itu. Menurut saya, salah satu fitur yang paling berguna adalah gudang virtual yang dapat Anda gunakan. Gudang virtual memberi Anda akses ke data yang sama tetapi sepenuhnya independen dari gudang virtual lainnya sehingga sumber daya komputasi tidak dibagikan ke seluruh tim. Ini terbukti sangat berguna karena menghilangkan potensi masalah kinerja yang disebabkan oleh pengguna lain yang menjalankan kueri sepanjang hari. Ini menghasilkan lebih sedikit frustrasi dan waktu yang terbuang untuk menunggu kueri dijalankan.
Karena kita akan menggunakan Snowflake, saya akan menjelaskan secara singkat bagaimana Anda dapat mengaturnya dan mulai bereksperimen dengannya sendiri. Kita perlu melakukan hal berikut:
- Siapkan akun Snowflake
- Dapatkan data kami ke dalam Snowflake
- Tulis dan uji kueri kami menggunakan SQL dan Snowflake UI
- Tulis kelas Python yang dapat mengeksekusi kueri kami untuk menghasilkan dataset akhir kami untuk pemodelan
Menyiapkan akun semudah mendaftar untuk uji coba gratis di situs web. Setelah selesai, Anda dapat mengunduh CLI snowsql di sini. Ini akan membuatnya mudah untuk menambahkan data ke Snowflake. Setelah mengikuti langkah-langkah ini, kami dapat mencoba dan terhubung ke Snowflake menggunakan kredensial kami dan baris perintah.
snowsql -a <account_name> -u <user_name>
Anda dapat menemukan nama akun Anda di URL saat Anda masuk ke UI Snowflake. Seharusnya terlihat seperti ini: xxxxx.europe-west2.gcp. Ok, mari kita lanjutkan ke langkah selanjutnya dan memasukkan data kita ke dalam Snowflake. Ada beberapa langkah yang perlu kita ikuti di sini yaitu:
- Buat gudang virtual kami
- Buat database
- Tentukan dan Buat tabel kami
- Buat tabel pementasan untuk file CSV kami
- Menyalin data ke tabel kami
Untungnya ini tidak terlalu sulit dan kita dapat melakukan ini sepenuhnya menggunakan CLI snowsql. Untuk proyek ini, saya akan menggunakan kumpulan data yang lebih kecil daripada yang saya inginkan, tetapi sayangnya, saya tidak dapat menggunakan data perusahaan saya dan akan sangat sulit untuk menemukan kumpulan data besar yang sesuai secara online. Namun saya menemukan beberapa data transaksi dari Dunnhumby yang tersedia secara gratis di Kaggle. Hanya untuk iseng saja, saya membuat kumpulan data sintetis yang jauh lebih besar menggunakan data ini untuk menguji seberapa baik Dask menangani tantangan dibandingkan dengan sklearn.
Pertama-tama, kita perlu menyiapkan gudang virtual dan database menggunakan perintah berikut di Snowflake UI.
membuat or menggantikan analitik gudang_wh dengan
warehouse_size="X-KECIL"
penangguhan_otomatis=180
auto_resume=benar
awalnya_suspended=benar;
membuat or menggantikan Database tidak menyenangkan;
Data kami terdiri dari 6 CSV yang akan kami konversi menjadi 6 tabel. Saya tidak akan menghabiskan terlalu banyak waktu untuk membahas dataset karena posting ini lebih tentang menggunakan Snowflake dan Dask daripada menafsirkan data.
Di bawah ini adalah perintah yang dapat kita gunakan untuk membuat tabel kita. Yang perlu Anda ketahui sebelumnya adalah kolom dan tipe data apa yang akan Anda kerjakan.
create or replace table campaign_desc ( description string, campaign number,
start_day number,
end_day number ); create or replace table campaign_table ( description string, Household_key number, campaign number ); create or replace table coupon ( COUPON_UPC number, product_id number, campaign number ); create or replace table coupon_redempt ( household_key number, day number, coupon_upc number, campaign number ); create or replace table transactions ( household_key number, BASKET_ID number, day number, product_id number, quantity number, sales_value number, store_id number, retail_disc decimal, trans_time number, week_no number, coupon_disc decimal, coupon_match_disc decimal ); create or replace table demographic_data ( age_dec string, marital_status_code string, income_desc string, homeowner_desc string, hh_comp_desc string, household_size_desc string, kid_category_desc string, Household_key number);
Sekarang setelah tabel kita dibuat, kita dapat mulai memikirkan cara memasukkan data ke dalamnya. Untuk ini, kita perlu mengatur file CSV kita. Ini pada dasarnya hanya langkah perantara sehingga Snowflake dapat langsung memuat file dari panggung kami ke tabel kami. Kita bisa menggunakan PUT perintah untuk meletakkan file lokal di panggung kami dan kemudian SALIN KE perintah untuk menginstruksikan Snowflake di mana harus meletakkan data ini.
use database dunnhumby; create or replace stage dunnhumby_stage; PUT file://campaigns_table.csv @dunnhumby.public.dunnhumby_stage; PUT file://campaigns_desc.csv @dunnhumby.public.dunnhumby_stage; PUT file://coupon.csv @dunnhumby.public.dunnhumby_stage; PUT file://coupon_d=redempt.csv @dunnhumby.public.dunnhumby_stage; PUT file://transaction_data.csv @dunnhumby.public.dunnhumby_stage; PUT file://demographics.csv @dunnhumby.public.dunnhumby_stage;
Sebagai pemeriksaan cepat, Anda dapat menjalankan perintah ini untuk memeriksa apa yang ada di area pementasan.
ls @dunnhumby.public.dunnhumby_stage;
Sekarang kita hanya perlu menyalin data ke tabel kita menggunakan kueri di bawah ini. Anda dapat menjalankan ini baik di Snowflake UI atau di baris perintah setelah masuk ke Snowflake.
copy into campaign_table from @dunnhumby.public.dunnhumby_stage/campaigns_table.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into campaign_desc from @dunnhumby.public.dunnhumby_stage/campaign_desc.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into coupon from @dunnhumby.public.dunnhumby_stage/coupon.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into coupon_redempt from @dunnhumby.public.dunnhumby_stage/coupon_redempt.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into transactions from @dunnhumby.public.dunnhumby_stage/transaction_data.csv.gz file_format = ( type = csv
skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’); copy into demographic_data from @dunnhumby.public.dunnhumby_stage/demographics.csv.gz file_format = ( type = csv skip_header=1 error_on_column_count_mismatch = false field_optionally_enclosed_by=’”’);
Ok bagus, dengan sedikit keberuntungan kami memiliki data kami di tabel kami coba pertama. Oh, kalau saja sesederhana itu, seluruh proses ini membutuhkan beberapa kali percobaan untuk memperbaikinya (hati-hati dengan ejaan yang salah). Mudah-mudahan, Anda bisa mengikuti ini dan baik-baik saja. Kami semakin dekat dengan hal-hal menarik tetapi langkah-langkah di atas adalah bagian penting dari proses jadi pastikan Anda memahami setiap langkah ini.
Menulis Pipeline kami di SQL
Pada langkah selanjutnya, kita akan menulis kueri untuk menghasilkan target, fitur, dan akhirnya menghasilkan kumpulan data pelatihan. Salah satu pendekatan untuk membuat kumpulan data untuk pemodelan adalah dengan membaca data ini ke dalam memori dan menggunakan panda untuk membuat fitur baru dan menggabungkan semua bingkai data bersama-sama. Ini biasanya pendekatan yang Anda lihat di Kaggle dan di tutorial online lainnya. Masalah dengan ini adalah bahwa itu tidak terlalu efisien, terutama ketika Anda bekerja dengan kumpulan data berukuran wajar. Untuk alasan ini, adalah ide yang jauh lebih baik untuk mengalihdayakan pekerjaan berat ke sesuatu seperti Snowflake yang menangani kumpulan data besar dengan sangat baik dan kemungkinan akan menghemat banyak waktu Anda. Saya tidak akan menghabiskan banyak waktu untuk menyelami secara spesifik dataset kami di sini karena tidak terlalu penting untuk apa yang saya coba tunjukkan. Namun, secara umum, Anda ingin menghabiskan banyak waktu untuk menjelajahi dan memahami data Anda sebelum memulai pemodelan. Tujuan dari kueri ini adalah untuk melakukan praproses data dan membuat beberapa fitur sederhana yang nantinya dapat kita gunakan dalam model kita.
Definisi Sasaran
Jelas, komponen penting dari pembelajaran mesin yang diawasi adalah menentukan target yang tepat untuk diprediksi. Untuk kasus penggunaan kami, kami akan memprediksi churn dengan menghitung apakah pengguna melakukan kunjungan lagi atau tidak dalam dua minggu setelah minggu cutoff. Pilihan 2 minggu cukup sewenang-wenang dan akan tergantung pada masalah spesifik yang kami coba selesaikan, tetapi mari kita asumsikan bahwa itu baik-baik saja untuk proyek ini. Secara umum, Anda ingin menganalisis pelanggan Anda dengan cermat untuk memahami distribusi kesenjangan antara kunjungan untuk sampai pada definisi churn yang sesuai.
Ide utama di sini adalah bahwa untuk setiap tabel kita ingin memiliki satu baris per rumah tangga_kunci yang berisi nilai untuk setiap fitur kita.
Fitur Kampanye
Fitur Transaksi
Di bawah ini kami membuat beberapa metrik sederhana berdasarkan statistik agregat seperti rata-rata, deviasi maks, dan standar.
Fitur Demografis
Dataset ini memiliki banyak data yang hilang, jadi saya memutuskan untuk menggunakan imputasi di sini. Ada banyak teknik di luar sana untuk data yang hilang dari menjatuhkan data yang hilang, hingga metode imputasi tingkat lanjut. Saya baru saja membuat hidup saya mudah di sini dan mengganti nilai yang hilang dengan mode. Saya tidak akan merekomendasikan mengambil pendekatan ini secara umum karena memahami mengapa data ini hilang sangat penting dalam memutuskan bagaimana menanganinya tetapi untuk tujuan contoh ini, saya akan melanjutkan dan mengambil pendekatan yang mudah. Kami pertama-tama menghitung mode untuk setiap fitur kami dan kemudian menggunakan penggabungan untuk mengganti setiap baris dengan mode jika data hilang.
Data pelatihan
Akhirnya, kami membuat kueri untuk data pelatihan kami dengan menggabungkan tabel utama kami dan berakhir dengan tabel yang berisi target kami, kampanye kami, transaksi, dan fitur demografis yang dapat kami gunakan untuk membangun model.
Sebagai tambahan singkat, bagi mereka yang tertarik untuk mempelajari lebih lanjut tentang fitur dan nuansa Snowflake, saya akan merekomendasikan buku berikut: Buku Masak Kepingan Salju. Saya mulai membaca buku ini dan buku ini penuh dengan informasi yang sangat membantu tentang cara menggunakan Snowflake dan jauh lebih detail daripada yang saya lakukan di sini.
Kode Python untuk ETL
Bagian terakhir yang kami butuhkan untuk ETL ini adalah menulis skrip untuk menjalankannya. Sekarang, ini hanya benar-benar diperlukan jika Anda berencana menjalankan ETL seperti ini secara teratur tetapi ini adalah praktik yang baik dan membuatnya lebih mudah untuk menjalankan ETL saat dan saat dibutuhkan.
Mari kita bahas secara singkat komponen utama kelas EtlTraining kita. Kelas kami mengambil satu input yang merupakan minggu cutoff. Ini karena cara data didefinisikan dalam kumpulan data kami, tetapi biasanya, ini akan dalam format tanggal yang sesuai dengan tanggal batas yang ingin kami pilih untuk menghasilkan data pelatihan.
Kami menginisialisasi daftar kueri kami sehingga kami dapat dengan mudah mengulanginya dan menjalankannya. Kami juga membuat kamus yang berisi parameter kami yang kami berikan ke koneksi Snowflake kami. Di sini kami menggunakan variabel lingkungan yang kami atur di Saturn Cloud. Sini adalah panduan tentang cara melakukannya. Tidak terlalu sulit untuk terhubung ke Snowflake, yang perlu kita lakukan hanyalah menggunakan konektor Snowflake dan memasukkan kamus kredensial kita. Kami menerapkan ini dalam metode koneksi Snowflake dan mengembalikan koneksi ini sebagai atribut.
Untuk membuat kueri ini sedikit lebih mudah dijalankan, saya menyimpan setiap kueri sebagai variabel string python di file ml_query_pipeline.py. Metode execute_etl melakukan persis seperti yang tertulis di kaleng. Kami mengulang setiap kueri, memformatnya, menjalankannya, dan menyelesaikannya dengan menutup koneksi Snowflake.
Untuk menjalankan ETL ini kita cukup mengetikkan perintah di bawah ini ke terminal. (di mana ml_pipeline adalah nama skrip di atas.)
python -m ml_pipeline -w 102 -j ‘train’
Sebagai tambahan singkat, Anda mungkin ingin menjalankan ETL seperti ini secara berkala. Misalnya, jika Anda ingin membuat prediksi harian, maka Anda perlu membuat kumpulan data seperti ini setiap hari untuk diteruskan ke model Anda sehingga Anda dapat mengidentifikasi pelanggan mana yang kemungkinan akan melakukan churn. Saya tidak akan membahas ini secara rinci di sini, tetapi dalam pekerjaan saya, kami menggunakan Airflow untuk mengatur ETL kami, jadi saya akan merekomendasikan untuk memeriksanya jika Anda tertarik. Bahkan, saya baru saja membeli buku 'Pipeline Data dengan Apache Airflow' yang menurut saya bagus dan benar-benar memberikan beberapa contoh dan saran yang solid tentang cara menggunakan aliran udara.
Senja dan Pemodelan
Sekarang kita telah membangun pipa data kita, kita dapat mulai berpikir tentang pemodelan. Tujuan utama lainnya yang saya miliki untuk posting ini adalah untuk menyoroti keuntungan menggunakan Dask sebagai bagian dari proses pengembangan ML dan menunjukkan kepada kalian betapa mudahnya menggunakannya.
Untuk bagian proyek ini, saya juga menggunakan Awan Saturnus yang merupakan alat yang sangat bagus yang saya temukan baru-baru ini yang memungkinkan kita untuk memanfaatkan kekuatan Dask di sekelompok komputer di cloud. Keuntungan utama menggunakan Saturn bagi saya adalah sangat mudah untuk membagikan pekerjaan Anda, sangat mudah untuk meningkatkan komputasi Anda saat dan saat Anda membutuhkannya dan memiliki opsi tingkat gratis. Pengembangan model secara umum adalah kasus penggunaan yang sangat bagus untuk Dask karena kami biasanya ingin melatih banyak model yang berbeda dan melihat mana yang paling berhasil. Semakin cepat kita dapat melakukan ini semakin baik karena kita memiliki lebih banyak waktu untuk fokus pada aspek penting lainnya dari pengembangan model. Mirip dengan Snowflake, Anda hanya perlu mendaftar di sini dan Anda dapat dengan cepat membuat instance lab Jupyter dan mulai bereksperimen dengannya sendiri.
Sekarang, saya menyadari pada titik ini saya telah menyebutkan Dask beberapa kali tetapi tidak pernah benar-benar menjelaskan apa itu. Jadi izinkan saya meluangkan waktu untuk memberi Anda gambaran umum tentang Dask dan mengapa menurut saya ini luar biasa. Sangat sederhana, Dask adalah pustaka python yang memanfaatkan komputasi paralel untuk memungkinkan Anda memproses dan melakukan operasi pada kumpulan data yang sangat besar. Dan, bagian terbaiknya adalah, jika Anda sudah terbiasa dengan Python, maka Dask harus sangat mudah karena sintaksnya sangat mirip.
Grafik di bawah ini menyoroti komponen utama Dask.
Sumber: Dokumentasi Sejenak
Koleksi memungkinkan kita untuk membuat grafik tugas yang kemudian dapat dieksekusi di beberapa komputer. Beberapa dari struktur data ini mungkin terdengar cukup familiar seperti array dan bingkai data dan mereka mirip dengan apa yang akan Anda temukan di python tetapi dengan beberapa perbedaan penting. Misalnya, Anda dapat menganggap bingkai data Dask sebagai sekumpulan bingkai data panda yang dibuat sedemikian rupa sehingga memungkinkan kita melakukan operasi secara paralel.
Beranjak dari koleksi, kami memiliki penjadwal. Setelah kami membuat grafik tugas, penjadwal menangani sisanya untuk kami. Ini mengelola alur kerja dan mengirimkan tugas-tugas ini ke satu mesin atau mendistribusikannya ke seluruh cluster. Mudah-mudahan, itu memberi Anda gambaran yang sangat singkat tentang cara kerja Dask. Untuk info lebih lanjut, saya sarankan memeriksa dokumentasi atau ini Book. Keduanya adalah sumber yang sangat bagus untuk menggali lebih dalam topik ini.
Kode Python untuk Pemodelan
Saat membuat model, saya cenderung memiliki sejumlah kecil algoritma masuk yang akan selalu saya coba terlebih dahulu. Ini biasanya akan memberi saya ide bagus tentang apa yang mungkin cocok untuk masalah spesifik yang saya miliki. Model-model tersebut adalah Logistic Regression, Random Forest dan GradientBoosting. Dalam pengalaman saya, ketika bekerja dengan data tabular, algoritma ini biasanya akan memberi Anda hasil yang cukup bagus. Di bawah ini kami membangun pipa pemodelan sklearn menggunakan 3 model ini. Model persis yang kami gunakan di sini tidak terlalu penting karena pipeline harus bekerja untuk model klasifikasi sklearn apa pun, ini hanya preferensi saya.
Tanpa basa-basi lagi, mari selami kodenya. Untungnya kami mengalihdayakan sebagian besar prapemrosesan kami ke Snowflake sehingga kami tidak perlu dipusingkan dengan data pelatihan kami terlalu banyak di sini, tetapi kami akan menambahkan beberapa langkah tambahan menggunakan pipa sklearn.
Cuplikan kode pertama di bawah ini menunjukkan pipeline saat menggunakan sklearn. Perhatikan bahwa dataset kami adalah bingkai data panda biasa dan langkah-langkah prapemrosesan kami semua dilakukan menggunakan metode sklearn. Tidak ada yang sangat luar biasa terjadi di sini. Kami membaca data kami dari tabel yang dihasilkan oleh Snowflake ETL kami dan meneruskannya ke saluran sklearn. Langkah-langkah pemodelan yang biasa berlaku di sini. Kami membagi dataset menjadi pelatihan dan pengujian dan melakukan beberapa pra-pemrosesan, yaitu menghitung nilai yang hilang menggunakan median, menskalakan data, dan mengkodekan data kategorikal kami. Saya penggemar berat pipa sklearn dan pada dasarnya menggunakannya setiap kali saya mengembangkan model saat ini, mereka benar-benar memfasilitasi kode yang bersih dan ringkas.
Bagaimana kinerja pipeline ini pada kumpulan data dengan sekitar 2 juta baris? Nah, menjalankan model ini tanpa penyetelan hyperparameter membutuhkan waktu sekitar 34 menit. Aduh, agak lambat. Anda dapat membayangkan berapa lama waktu yang dibutuhkan jika kita ingin melakukan segala jenis penyetelan hyperparameter. Oke, jadi tidak ideal tapi mari kita lihat bagaimana Dask menangani tantangannya.
Kode Python ML Dask
Tujuan kami di sini adalah untuk melihat apakah kami dapat mengalahkan pipa sklearn di atas, peringatan spoiler, kami pasti bisa. Hal keren tentang Dask adalah bahwa penghalang untuk masuk ketika Anda sudah terbiasa dengan python cukup rendah. Kita bisa mendapatkan pipeline ini dan berjalan di Dask hanya dengan beberapa perubahan.
Perubahan pertama yang mungkin akan Anda perhatikan adalah bahwa kami memiliki beberapa impor yang berbeda. Salah satu perbedaan utama antara pipeline ini dan yang sebelumnya adalah bahwa kita akan menggunakan bingkai data Dask alih-alih bingkai data pandas untuk melatih model kita. Anda dapat menganggap bingkai data Dask sebagai sekumpulan bingkai data panda di mana kita dapat melakukan perhitungan pada masing-masingnya pada waktu yang sama. Ini adalah inti dari paralelisme Dask dan akan mengurangi waktu pelatihan untuk pipeline ini.
Perhatikan kami menggunakan @ dask.tertunda sebagai dekorator untuk kami beban_pelatihan_data fungsi. Ini menginstruksikan Dask untuk memparalelkan fungsi ini untuk kita.
Kami juga akan mengimpor beberapa metode preprocessing dan pipeline dari Dask dan yang paling penting, kami perlu mengimpor SaturnCluster yang memungkinkan kami membuat cluster untuk melatih model kami. Perbedaan utama lainnya dengan kode ini adalah kami menggunakan dask.bertahan setelah tes kereta kami berpisah. Sebelum titik ini, tidak ada fungsi kami yang benar-benar dihitung karena evaluasi malas Dask. Setelah kami menggunakan metode bertahan, kami memberi tahu Dask untuk mengirim data kami ke pekerja dan menjalankan tugas yang telah kami buat hingga saat ini dan meninggalkan objek ini di cluster.
Akhirnya, kami melatih model kami menggunakan metode tertunda. Sekali lagi, ini memungkinkan kita untuk membuat saluran pipa kita dengan cara yang malas. Pipeline tidak dieksekusi sampai kita mencapai kode ini:
fit_pipelines = dask.compute(*pipelines_)
Kali ini kami hanya membutuhkan waktu sekitar 10 menit untuk menjalankan pipeline ini pada dataset yang sama persis. Itu adalah percepatan dengan faktor 3.4, tidak terlalu buruk. Sekarang, jika kami mau, kami dapat mempercepatnya lebih jauh lagi dengan meningkatkan sumber daya komputasi kami dengan satu sentuhan tombol di Saturnus.
Menerapkan Pipeline kami
Saya sebutkan sebelumnya bahwa Anda mungkin ingin menjalankan pipa seperti ini secara teratur menggunakan sesuatu seperti aliran udara. Kebetulan jika Anda tidak ingin kerumitan awal mengatur semuanya untuk aliran udara Saturn Cloud menawarkan alternatif sederhana dengan Jobs. Pekerjaan memungkinkan kami untuk mengemas kode kami dan menjalankannya secara berkala atau sesuai kebutuhan. Yang perlu Anda lakukan adalah pergi ke proyek yang ada dan klik buat pekerjaan. Setelah kita melakukannya, itu akan terlihat seperti berikut:
Sumber: Saturnus
Dari sini, yang perlu kita lakukan adalah memastikan file python kita di atas ada di direktori pada gambar dan kita bisa memasukkan perintah python kita di atas
python -m ml_pipeline -w 102 -j 'train'
Kita juga dapat mengatur jadwal menggunakan sintaks cron untuk menjalankan ETL setiap hari jika kita mau. Bagi yang tertarik, ini dia Tutorial yang masuk ke semua seluk beluk.
Kesimpulan dan Takeaways
Nah, kami telah mencapai akhir dari proyek kami pada saat ini. Sekarang jelas saya telah meninggalkan beberapa bagian penting dari siklus pengembangan ML seperti penyetelan hyperparameter dan menerapkan model kami, tetapi mungkin saya akan meninggalkannya untuk hari lain. Apakah saya pikir Anda harus mencoba Dask? Saya bukan ahli dengan cara apa pun tetapi dari apa yang saya lihat sejauh ini tampaknya sangat berguna dan saya sangat bersemangat untuk bereksperimen lebih banyak dengannya dan menemukan lebih banyak peluang untuk memasukkannya ke dalam pekerjaan sehari-hari saya sebagai ilmuwan data. Mudah-mudahan, Anda menemukan ini berguna dan Anda juga dapat melihat beberapa keuntungan dari Snowflake dan Dask dan Anda akan mulai bereksperimen dengan mereka sendiri.
Sumber
- Pipeline Data dengan Apache Airflow
- Buku Masak Kepingan Salju
- Ilmu Data dalam Skala Besar dengan Python dan Dask
- Coursera: SQL untuk Ilmu Data
Beberapa posting saya yang lain mungkin menarik bagi Anda
Mari Membangun Saluran Data Streaming
Pemodelan Campuran Gaussian (GMM)
Pendekatan Bayesian untuk Peramalan Deret Waktu
Catatan: Beberapa tautan dalam posting ini adalah tautan afiliasi.
Bio: Daniel Foley adalah mantan Ekonom yang menjadi Ilmuwan Data yang bekerja di industri game seluler.
Original. Diposting ulang dengan izin.
Terkait:
Sumber: https://www.kdnuggets.com/2021/07/building-machine-learning-pipelines-snowflake-dask.html
- "
- &
- 102
- 2021
- mengakses
- Akun
- Tambahan
- Keuntungan
- nasihat
- Bergabung
- algoritma
- Semua
- Amazon
- Apache
- DAERAH
- sekitar
- mobil
- TERBAIK
- Bit
- membangun
- Bangunan
- ikat
- Kampanye
- kasus
- disebabkan
- menantang
- perubahan
- memeriksa
- klasifikasi
- lebih dekat
- awan
- kode
- Pengkodean
- komponen
- menghitung
- komputer
- komputasi
- Coursera
- membuat
- Surat kepercayaan
- pelanggan
- data
- ilmu data
- ilmuwan data
- kumpulan data
- data warehouse
- Basis Data
- hari
- transaksi
- belajar mendalam
- demografis
- rinci
- mengembangkan
- Pengembangan
- MELAKUKAN
- Kepala
- efisiensi
- Insinyur
- Lingkungan Hidup
- eksperimen
- Fitur
- Akhirnya
- akhir
- Pertama
- Fokus
- mengikuti
- format
- Gratis
- penuh
- fungsi
- game
- Industri game
- Umum
- baik
- GPU
- besar
- membimbing
- di sini
- High
- Menyoroti
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- HTTPS
- besar
- ide
- mengenali
- gambar
- Meningkatkan
- industri
- Info
- informasi
- masalah
- IT
- Pekerjaan
- Jobs
- ikut
- melompat
- kunci
- besar
- BELAJAR
- pengetahuan
- Tingkat
- Perpustakaan
- baris
- Daftar
- memuat
- lokal
- Panjang
- Mesin belajar
- Metrik
- juta
- ML
- mobil
- Game seluler
- model
- pindah
- yaitu
- Fitur Baru
- Penawaran
- secara online
- Operasi
- pilihan
- Lainnya
- prestasi
- Cukup
- Posts
- kekuasaan
- Prediksi
- Diproduksi
- produktifitas
- proyek
- publik
- Ular sanca
- Bacaan
- menurunkan
- regresi
- Sumber
- ISTIRAHAT
- Hasil
- Run
- berjalan
- Skala
- skala
- Ilmu
- ilmuwan
- Seri
- set
- pengaturan
- Share
- berbagi
- Sederhana
- kecil
- So
- MEMECAHKAN
- kecepatan
- menghabiskan
- Pengeluaran
- Berputar
- membagi
- SQL
- Tahap
- awal
- mulai
- statistika
- cerita
- Streaming
- target
- uji
- Pikir
- waktu
- puncak
- menyentuh
- Pelatihan
- .
- Transaksi
- percobaan
- tutorial
- ui
- us
- Pengguna
- maya
- Gudang
- minggu
- Apa itu
- dalam
- Kerja
- pekerja
- alur kerja
- bekerja
- penulisan
- X
- tahun