Dari Notebook ke Kubeflow Pipelines dengan MiniKF dan Kale

1. Pengantar

Kubeflow adalah toolkit machine learning untuk Kubernetes. Project ini ditujukan untuk menyederhanakan, mempermudah, dan menskalakan deployment alur kerja machine learning (ML) di Kubernetes. Tujuannya adalah menyediakan cara mudah untuk men-deploy sistem open source terbaik untuk ML ke berbagai infrastruktur.

Seperti apa tampilan deployment Kubeflow?

Deployment Kubeflow adalah:

  • Portabel - Berfungsi di cluster Kubernetes mana pun, baik di Google Cloud Platform (GCP), di infrastruktur lokal, maupun di seluruh penyedia.
  • Dapat diskalakan - Dapat memanfaatkan resource yang berfluktuasi dan hanya dibatasi oleh jumlah resource yang dialokasikan ke cluster Kubernetes.
  • Composable - Ditingkatkan dengan pekerja layanan untuk berfungsi secara offline atau di jaringan berkualitas rendah.

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

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

Yang akan Anda bangun

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

  • VM MiniKF (Mini Kubeflow) yang diinstal secara otomatis:
  • Kubernetes (menggunakan Minikube)
  • Kubeflow
  • Kale, alat untuk mengonversi Notebook Jupyter serbaguna menjadi alur kerja Kubeflow Pipelines ( GitHub)
  • Arrikto Rok untuk pembuatan versi data dan reproduksibilitas

Yang akan Anda pelajari

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

Yang Anda butuhkan

Ini adalah codelab tingkat lanjut yang berfokus pada Kubeflow. Untuk mengetahui latar belakang selengkapnya dan pengantar platform, lihat dokumentasi Pengantar Kubeflow. Konsep dan blok kode yang tidak relevan akan dibahas sekilas dan disediakan, jadi Anda cukup menyalin dan menempelkannya.

2. Menyiapkan lingkungan

Tetapkan ID project GCP dan nama cluster Anda

Untuk menemukan project ID Anda, buka panel Beranda Konsol GCP, yang ada di menu hamburger di kiri atas. Jika layar kosong, klik Ya pada perintah untuk membuat dasbor.

Buka GCP Console

3fdc4329995406a0.png

Jika project belum dipilih, klik Select a project:

e8952c0b96067dea.png

Lalu pilih project Anda. Anda hanya boleh memiliki satu:

fe25c1925487142.png

3. Menginstal MiniKF

Membuat instance Compute

Di GCP Marketplace, telusuri "MiniKF".

Pilih virtual machine MiniKF dari Arrikto.

d6b423c1911ea85a.png

Klik tombol Launch on Compute Engine, lalu pilih project Anda.

b5eeba43053db4bd.png

Di jendela Configure & Deploy, pilih nama untuk instance MiniKF Anda dan biarkan opsi default. Kemudian, klik tombol Deploy.

dc401e2bb5a884d9.png

Tunggu hingga instance Compute MiniKF melakukan booting.

5228086caadc44c6.png

Login ke MiniKF

Saat 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.png

Login ke Kubeflow

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

251b0bcdbf6d3c71.png

9d49d899bb0b5bd1.png

Pengguna Chrome akan melihat layar ini:

6258e0f09e46a6c2.png

Pengguna Firefox akan melihat layar ini:

8cff90ce2f0670bd.png

Pengguna Safari akan melihat layar ini:

1c6fd768d71c0a92.png

Login ke Rok

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

a683198ac4ba900d.png

80aad6ba5d298a7e.png

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

4. Menjalankan Pipeline dari dalam Notebook

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

Membuat Server Notebook

Buka link Notebook Servers di dasbor pusat Kubeflow.

4115cac8d8474d73.png

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.png

Klik Launch untuk membuat server notebook.

28c024bcc55cc70a.png

Saat server notebook tersedia, klik Connect untuk terhubung ke server.

2f06041475f45d3.png

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 dan mendownload notebook serta data yang akan Anda gunakan selama sisa lab.

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

Repositori ini berisi serangkaian contoh pilihan dengan data dan Notebook yang dianotasi. Arahkan kursor ke folder data/examples/titanic-ml-dataset/ di sidebar, lalu buka notebook titanic_dataset_ml.ipynb.

c85baf68b36c63b2.png

Mempelajari kode ML tantangan Titanic

Jalankan notebook langkah demi langkah. Perhatikan bahwa kode gagal karena tidak ada library.

bf2451fd7407e334.png

Kembali ke Terminal dan instal library yang belum ada.

pip3 install --user seaborn

d90593b21425dd12.png

Mulai ulang kernel notebook dengan mengklik ikon Muat Ulang.

a21f5f563b36ce4d.png

Jalankan sel lagi dengan library yang benar telah diinstal dan lihat keberhasilannya.

Mengonversi notebook menjadi Kubeflow Pipeline

Aktifkan Kale dengan mengklik ikon Kubeflow di panel kiri.

3f4f9c93b187b105.png

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

15cca32444c1f12e.png

Klik tombol Compile and Run.

bde5cef34f00e258.png

Pantau progres snapshot.

9408f46abb2493f5.png

Amati progres Run Pipeline.

9edbde68032f5e4b.png

Klik link untuk membuka UI Kubeflow Pipelines dan melihat prosesnya.

a81646a22584e1b9.png

Tunggu hingga selesai.

44bee7dc0d24ec21.png

d377b6d574a4970.png

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

5. Reproduksibilitas dengan Snapshot Volume

Periksa hasilnya

Lihat log untuk langkah pipeline kedua dari terakhir Results. Perhatikan bahwa semua prediktor menunjukkan skor 100%. Data scientist yang berpengalaman akan langsung menganggap hal ini mencurigakan. Hal ini merupakan indikasi yang baik bahwa model kita tidak melakukan generalisasi dan malah melakukan overfitting pada set data pelatihan. Hal ini kemungkinan disebabkan oleh masalah pada data yang digunakan oleh model.

2a594032c2dd6ff6.png

Mereproduksi status sebelumnya

Untungnya, Rok menangani pembuatan versi data dan mereproduksi seluruh lingkungan seperti saat Anda mengklik tombol Compile and Run. Dengan begitu, 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.png

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

e533bc781da9355a.png

Salin URL Rok.

d155d19731b5cedd.png

Buka link Notebook Servers.

aafeab01f3ef0863.png

Klik New Server.

f2265a64e8f9d094.png

Tempelkan URL Rok yang Anda salin sebelumnya, lalu klik tombol Isi Otomatis.

9ba4d4128a3bdeea.png

Tentukan nama untuk notebook Anda.

7685c3bf35fc74b2.png

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.png

Saat server notebook tersedia, klik Connect untuk terhubung ke server.

34955a64ae316de1.png

Perhatikan bahwa notebook terbuka di sel yang tepat dari langkah pipeline yang telah Anda buat.

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 random forest dan mencetak skor. Nilainya adalah 100.

e2a8a3b5465fcb5d.png

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

d1077f32dff9620f.png

Tambahkan teks berikut dan jalankan sel untuk mencetak set pelatihan.

train_df

2854798ff01aed4e.png

Maaf. Kolom dengan label pelatihan ("Survived") keliru disertakan sebagai fitur input. Model telah mempelajari cara berfokus pada fitur "Survived" dan mengabaikan fitur lainnya, sehingga mencemari input. Kolom ini sama persis dengan tujuan model dan tidak ada selama prediksi, sehingga perlu 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.png

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

Jalankan kembali pipeline dengan mengklik tombol Compile and Run.

Klik link untuk membuka UI Kubeflow Pipelines dan melihat prosesnya.

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

8c6a9676b49e5be8.png

6. Pembersihan

Hancurkan VM MiniKF

Buka Deployment Manager di GCP Console, lalu 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?

Bergabung dengan Komunitas Kubeflow:

Bacaan lebih lanjut