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
- Project GCP aktif yang izin Pemiliknya Anda miliki
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.

Jika project belum dipilih, klik Select a project:

Lalu pilih project Anda. Anda hanya boleh memiliki satu:

3. Menginstal MiniKF
Membuat instance Compute
Di GCP Marketplace, telusuri "MiniKF".
Pilih virtual machine MiniKF dari Arrikto.

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

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

Tunggu hingga instance Compute MiniKF melakukan booting.

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.

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


Pengguna Chrome akan melihat layar ini:

Pengguna Firefox akan melihat layar ini:

Pengguna Safari akan melihat layar ini:

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.


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.

Klik New Server.

Tentukan nama untuk Server Notebook Anda.

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.

Klik Launch untuk membuat server notebook.

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

Mendownload data dan notebook
Tab baru akan terbuka dengan halaman landing JupyterLab. Buat Terminal baru di JupyterLab.

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.

Mempelajari kode ML tantangan Titanic
Jalankan notebook langkah demi langkah. Perhatikan bahwa kode gagal karena tidak ada library.

Kembali ke Terminal dan instal library yang belum ada.
pip3 install --user seaborn

Mulai ulang kernel notebook dengan mengklik ikon Muat Ulang.

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.

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

Klik tombol Compile and Run.

Pantau progres snapshot.

Amati progres Run Pipeline.

Klik link untuk membuka UI Kubeflow Pipelines dan melihat prosesnya.

Tunggu hingga selesai.


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.

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.

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

Salin URL Rok.

Buka link Notebook Servers.

Klik New Server.

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

Tentukan nama untuk notebook Anda.

Pastikan Anda telah memilih gambar ini:
gcr.io/arrikto-public/tensorflow-1.14.0-notebook-cpu:kubecon-workshop
Klik Launch untuk membuat server notebook.

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

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

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.

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 (+).

Tambahkan teks berikut dan jalankan sel untuk mencetak set pelatihan.
train_df

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

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.

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:
- github.com/kubeflow
- Kubeflow Slack
- kubeflow-discuss@googlegroups.com
- Panggilan komunitas pada hari Selasa
