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
- Project GCP aktif yang izin Pemiliknya Anda miliki
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.
Jika project belum dipilih, klik Select a project:
Lalu pilih project Anda. Anda hanya boleh memiliki satu:
3. Instal MiniKF
Membuat instance Compute
Di GCP Marketplace, telusuri "MiniKF".
Pilih virtual machine MiniKF oleh Arrikto.
Klik tombol Launch on Compute Engine dan pilih project Anda.
Di folder Configure & Deploy, pilih name untuk instance MiniKF Anda dan biarkan opsi default. Lalu klik tombol Deploy.
Tunggu hingga instance MiniKF Compute selesai.
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.
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 sebelah kiri dengan mengklik ikon hamburger. 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 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.
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 Hubungkan untuk terhubung ke server tersebut.
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, 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.
Pelajari kode ML tantangan Titanic
Jalankan notebook langkah demi langkah. Perlu diperhatikan bahwa kode akan gagal karena library tidak ada.
Kembali ke Terminal dan instal library yang tidak ada.
pip3 install --user seaborn
Mulai ulang kernel notebook dengan mengklik ikon Refresh.
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.
Mempelajari dependensi per sel. Lihat bagaimana beberapa sel dapat menjadi bagian dari satu langkah pipeline, dan bagaimana langkah pipeline mungkin bergantung pada langkah sebelumnya.
Klik tombol Compile and Run.
Lihat progres snapshot.
Lihat kemajuan Pipeline Run.
Klik link untuk membuka UI Kubeflow Pipelines dan melihat operasinya.
Tunggu hingga selesai.
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.
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.
Ikuti langkah-langkah di Markdown, yaitu lihat snapshot di UI Rok dengan mengklik link yang sesuai.
Salin URL Rok.
Buka link Server Notebook.
Klik New Server.
Tempel URL Rok yang Anda salin sebelumnya, lalu klik tombol Autofill.
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 Hubungkan untuk terhubung ke server tersebut.
Perhatikan bahwa notebook akan terbuka pada sel yang tepat dari langkah pipeline yang telah Anda munculkan.
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.
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 (+).
Tambahkan teks berikut dan jalankan sel untuk mencetak set pelatihan.
train_df
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
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!
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:
- github.com/kubeflow
- Kubeflow Slack
- kubeflow-discuss@googlegroups.com
- Panggilan komunitas setiap hari Selasa