Dari Notebook ke Kubeflow Pipelines dengan MiniKF dan Kale

1. Pengantar

Kubeflow adalah toolkit machine learning untuk Kubernetes. Project ini dikhususkan untuk membuat deployment alur kerja machine learning (ML) di Kubernetes dengan mudah, portabel, dan skalabel. Tujuannya adalah menyediakan cara mudah untuk men-deploy sistem open source terbaik untuk ML ke beragam infrastruktur.

Seperti apa deployment Kubeflow?

Deployment Kubeflow adalah:

  • Portabel - Berfungsi di semua cluster Kubernetes, baik di Google Cloud Platform (GCP), secara lokal, atau di seluruh penyedia.
  • Skalabel - Dapat memanfaatkan resource yang berfluktuasi dan hanya dibatasi oleh jumlah resource yang dialokasikan ke cluster Kubernetes.
  • Composable - Disempurnakan dengan pekerja layanan agar dapat berfungsi secara offline atau di jaringan berkualitas rendah.

Solusi ini adalah cara untuk mengatur microservice yang dikaitkan secara longgar sebagai satu unit dan men-deploy-nya ke berbagai lokasi, baik itu laptop atau cloud.

Codelab ini akan memandu Anda dalam membuat deployment Kubeflow Anda sendiri menggunakan MiniKF, dan menjalankan alur kerja Kubeflow Pipelines dari dalam Notebook Jupyter.

Yang akan Anda bangun

Dalam codelab ini, Anda akan membangun pipeline data science yang kompleks dengan Kubeflow Pipelines, tanpa menggunakan SDK atau perintah CLI apa pun. Anda tidak perlu memiliki pengetahuan Kubernetes atau Docker. Setelah selesai, infrastruktur Anda akan berisi:

  • VM MiniKF (Mini Kubeflow) yang otomatis menginstal:
  • Kubernetes (menggunakan Minikube)
  • Kubeflow
  • Kale, alat untuk mengonversi Jupyter Notebooks tujuan umum ke alur kerja Kubeflow Pipelines ( GitHub)
  • Arrikto Rok untuk pembuatan versi dan reproduksi data

Yang akan Anda pelajari

  • Cara menginstal Kubeflow dengan MiniKF
  • Cara mengonversi Notebooks Jupyter ke Pipeline Kubeflow tanpa menggunakan SDK atau perintah CLI apa pun
  • Cara menjalankan Kubeflow Pipelines dari dalam Notebook hanya dengan mengklik tombol
  • Cara membuat versi data secara otomatis di Notebook dan di setiap langkah pipeline

Yang Anda butuhkan

Ini adalah codelab lanjutan yang berfokus pada Kubeflow. Untuk latar belakang lebih lanjut dan pengantar platform ini, lihat dokumentasi Pengantar Kubeflow. Konsep dan blok kode yang tidak-relevan akan dibahas sekilas dan disediakan sehingga Anda cukup menyalin dan menempelkannya.

2. Menyiapkan lingkungan

Menetapkan project ID dan nama cluster GCP

Untuk menemukan project ID Anda, buka Panel beranda GCP Console yang ada di menu tiga garis di kiri atas. Jika layar kosong, klik Ya pada perintah untuk membuat dasbor.

Buka GCP Console

3fdc4329995406a0.pngS

Jika project belum dipilih, klik Select a project:

e8952c0b96067dea.png

Lalu pilih project Anda. Anda hanya boleh memiliki satu:

fe25c1925487142.png

3. Instal MiniKF

Membuat instance Compute

Di GCP Marketplace, telusuri "MiniKF".

Pilih virtual machine MiniKF oleh Arrikto.

d6b423c1911ea85a.png

Klik tombol Launch on Compute Engine dan pilih project Anda.

b5eeba43053db4bd.png

Di folder Configure & Deploy, pilih name untuk instance MiniKF Anda dan biarkan opsi default. Lalu klik tombol Deploy.

dc401e2bb5a884d9.png

Tunggu hingga instance MiniKF Compute selesai.

5228086caadc44c6.pngS

Login ke MiniKF

Setelah VM MiniKF aktif, hubungkan dan login dengan mengklik tombol SSH. Ikuti petunjuk di layar untuk menjalankan perintah minikf, yang akan memulai deployment Minikube, Kubeflow, dan Rok. Prosesnya perlu waktu beberapa menit sampai selesai.

774e83c3e96cf7b3.pngS

Login ke Kubeflow

Setelah penginstalan selesai dan semua pod siap, buka dasbor MiniKF. Login ke Kubeflow menggunakan nama pengguna dan sandi MiniKF.

251b0bcdbf6d3c71.pngS

9d49d899bb0b5bd1.pngS

Pengguna Chrome akan melihat layar ini:

6258e0f09e46a6c2.pngS

Pengguna Firefox akan melihat layar ini:

8cff90ce2f0670bd.pngS

Pengguna Safari akan melihat layar ini:

1c6fd768d71c0a92.pngS

Login ke Rok

Setelah login ke Kubeflow, buka menu sebelah kiri dengan mengklik ikon hamburger. Buka Snapshot Store dan login ke Rok menggunakan nama pengguna dan sandi MiniKF.

a683198ac4ba900d.png

80aad6ba5d298a7e.pngS

Selamat! Anda telah berhasil men-deploy MiniKF di GCP. Sekarang Anda dapat membuat Notebooks, menulis kode ML, dan menjalankan Kubeflow Pipelines. Menggunakan Rok untuk pembuatan versi dan reproduksi data.

4. Menjalankan Pipeline dari dalam Notebook Anda

Di bagian ini, Anda akan menjalankan contoh Titanic, kompetisi Kaggle yang memprediksi penumpang mana yang selamat dari bangkai kapal Titanic.

Membuat Server Notebook

Buka link Server Notebook di dasbor pusat Kubeflow.

4115cac8d8474d73.pngS

Klik New Server.

f9303c0a182e47f5.png

Tentukan nama untuk Server Notebook Anda.

a2343f30bc9522ab.png

Pastikan Anda telah memilih gambar ini:

gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop

Tambahkan Volume Data baru yang kosong berukuran 5 GB dan beri nama data.

8544d9b05826b316.pngS

Klik Launch untuk membuat server notebook.

28c024bcc55cc70a.pngS

Saat server notebook tersedia, klik Hubungkan untuk terhubung ke server tersebut.

2f06041475f45d3.pngS

Mendownload data dan notebook

Tab baru akan terbuka dengan halaman landing JupyterLab. Buat Terminal baru di JupyterLab.

2482011174f7bc75.png

Di jendela Terminal, jalankan perintah ini untuk membuka folder data, lalu download notebook dan data yang akan Anda gunakan untuk sisa lab.

cd data/
git clone -b kubecon-workshop https://github.com/kubeflow-kale/examples

Repositori ini berisi serangkaian contoh pilihan dengan data dan Notebooks teranotasi. Buka folder data/examples/titanic-ml-dataset/ di sidebar dan buka titanic_dataset_ml.ipynb notebook.

c85baf68b36c63b2.png

Pelajari kode ML tantangan Titanic

Jalankan notebook langkah demi langkah. Perlu diperhatikan bahwa kode akan gagal karena library tidak ada.

bf2451fd7407e334.png

Kembali ke Terminal dan instal library yang tidak ada.

pip3 install --user seaborn

d90593b21425dd12.png

Mulai ulang kernel notebook dengan mengklik ikon Refresh.

a21f5f563b36ce4d.png

Jalankan sel lagi dengan library yang benar terinstal dan lihat sel tersebut berhasil.

Mengonversi notebook Anda ke Kubeflow Pipeline

Aktifkan Kale dengan mengklik ikon Kubeflow di panel kiri.

3f4f9c93b187b105.pngS

Mempelajari dependensi per sel. Lihat bagaimana beberapa sel dapat menjadi bagian dari satu langkah pipeline, dan bagaimana langkah pipeline mungkin bergantung pada langkah sebelumnya.

15cca32444c1f12e.pngS

Klik tombol Compile and Run.

bde5cef34f00e258.png

Lihat progres snapshot.

9408f46abb2493f5.pngS

Lihat kemajuan Pipeline Run.

9edbde68032f5e4b.pngS

Klik link untuk membuka UI Kubeflow Pipelines dan melihat operasinya.

a81646a22584e1b9.png

Tunggu hingga selesai.

44bee7dc0d24ec21.pngS

d377b6d574a4970.png

Selamat! Anda baru saja menjalankan Kubeflow Pipeline menyeluruh mulai dari notebook Anda.

5. Reproduksi dengan Snapshot Volume

Periksa hasilnya

Lihat log untuk Hasil langkah pipeline kedua hingga terakhir. Perhatikan bahwa semua prediktor menunjukkan skor 100%. Ilmuwan data berpengalaman akan langsung merasa mencurigakan. Ini merupakan indikasi yang baik bahwa model kita tidak melakukan generalisasi dan justru melakukan overfitting pada set data pelatihan. Hal ini mungkin disebabkan oleh masalah dengan data yang digunakan oleh model.

2a594032c2dd6ff6.pngS

Mereproduksi status sebelumnya

Untungnya, Rok menangani pembuatan versi data dan mereproduksi seluruh lingkungan seperti saat Anda mengklik tombol Compile and Run. Dengan cara ini, Anda memiliki mesin waktu untuk data dan kode Anda. Jadi, mari kita lanjutkan status pipeline sebelum melatih salah satu model dan lihat apa yang terjadi. Lihat langkah randomforest, lalu klik Artifacts.

4f25ca4560711b23.pngS

Ikuti langkah-langkah di Markdown, yaitu lihat snapshot di UI Rok dengan mengklik link yang sesuai.

e533bc781da9355a.png

Salin URL Rok.

d155d19731b5cedd.png

Buka link Server Notebook.

aafeab01f3ef0863.png

Klik New Server.

f2265a64e8f9d094.png

Tempel URL Rok yang Anda salin sebelumnya, lalu klik tombol Autofill.

9ba4d4128a3bdeea.pngS

Tentukan nama untuk notebook Anda.

7685c3bf35fc74b2.pngS

Pastikan Anda telah memilih gambar ini:

gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop

Klik Launch untuk membuat server notebook.

28c024bcc55cc70a.pngS

Saat server notebook tersedia, klik Hubungkan untuk terhubung ke server tersebut.

34955a64ae316de1.pngS

Perhatikan bahwa notebook akan terbuka pada sel yang tepat dari langkah pipeline yang telah Anda munculkan.

a1f7c81f349e0364.png

Di latar belakang, Kale telah melanjutkan status Notebook dengan mengimpor semua library dan memuat variabel dari langkah sebelumnya.

Men-debug status sebelumnya

Tambahkan perintah cetak ke sel ini:

print(acc_random_forest)

Jalankan sel aktif dengan menekan Shift + Return untuk melatih ulang forest acak dan mencetak skor. Jawabannya 100.

e2a8a3b5465fcb5d.png

Sekarang saatnya untuk melihat apakah ada yang aneh dalam data pelatihan. Untuk mempelajari dan memperbaiki masalah ini, tambahkan sel di atas markdown Random Forest dengan memilih sel sebelumnya lalu mengklik ikon plus (+).

d1077f32dff9620f.png

Tambahkan teks berikut dan jalankan sel untuk mencetak set pelatihan.

train_df

2854798ff01aed4e.pngS

Maaf. Kolom dengan label pelatihan ("Survived") secara keliru telah disertakan sebagai fitur input. Model ini telah belajar untuk berfokus pada model "Survived" fitur dan mengabaikan sisanya, sehingga mengotori input. Kolom ini sama persis dengan sasaran model dan tidak ada selama prediksi, sehingga harus dihapus dari set data pelatihan agar model dapat belajar dari fitur lainnya.

Menambahkan perbaikan bug

Untuk menghapus kolom ini, edit sel untuk menambahkan perintah ini:

train_df.drop('Survived', axis=1, inplace=True)
train_df

9e76c16a862b566.pngS

Aktifkan Kale dan pastikan bahwa sel yang menghapus label Survived merupakan bagian dari langkah pipeline featureengineering (harus memiliki warna garis batas yang sama).

Jalankan lagi pipeline dengan mengklik tombol Compile and Run.

Klik link untuk membuka UI Kubeflow Pipelines dan melihat operasinya.

Tunggu hingga langkah results selesai dan lihat log untuk melihat hasil akhir. Anda sekarang memiliki skor prediksi yang realistis!

8c6a9676b49e5be8.pngS

6. Pembersihan

Menghancurkan VM MiniKF

Buka Deployment Manager di Konsol GCP dan hapus deployment minikf-1.

7. Selamat

Selamat, Anda telah berhasil menjalankan alur kerja data science end-to-end menggunakan Kubeflow (MiniKF), Kale, dan Rok.

Apa selanjutnya?

Bergabunglah dengan Komunitas Kubeflow:

Bacaan lebih lanjut