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 menggunakan resource yang berfluktuasi dan hanya dibatasi oleh jumlah resource yang dialokasikan ke cluster Kubernetes.
- Dapat disusun - Memungkinkan Anda mengonfigurasi langkah-langkah independen ke dalam alur kerja ML lengkap, dengan memilih dari serangkaian framework dan library ML yang telah dikurasi.
Kubeflow memungkinkan Anda mengatur microservice yang terhubung secara longgar sebagai satu unit dan men-deploy-nya ke berbagai lokasi, termasuk di laptop, lokal, atau di cloud.
Codelab ini memandu Anda membuat deployment Kubeflow sendiri menggunakan MiniKF, lalu menjalankan alur kerja Kubeflow Pipelines dengan penyesuaian hyperparameter untuk melatih dan menayangkan model. Anda melakukan semua itu dari dalam Jupyter Notebook.
Yang akan Anda bangun
Dalam codelab ini, Anda akan membangun pipeline ilmu data yang kompleks dengan penyesuaian hyperparameter di 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 dengan penyesuaian hyperparameter 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
Siapkan project GCP Anda
Ikuti langkah-langkah di bawah untuk membuat project GCP atau mengonfigurasi project GCP yang ada. Jika Anda berencana menggunakan project GCP yang sudah ada, pastikan project tersebut memenuhi persyaratan minimum yang dijelaskan di bawah. Langkah pertama adalah membuka resource manager di GCP Console.
Buat project baru atau pilih project yang sudah ada:

Periksa persyaratan minimum berikut:
- Pastikan Anda memiliki peran pemilik untuk project tersebut.
- Pastikan penagihan diaktifkan untuk project Anda.
- Jika Anda menggunakan Paket Gratis GCP atau periode uji coba 12 bulan dengan kredit $300, perhatikan bahwa Anda tidak dapat menjalankan penginstalan MiniKF GCP default, karena paket gratis tidak menawarkan resource yang memadai. Anda harus melakukan upgrade ke akun berbayar.
Untuk mendapatkan bantuan lebih lanjut terkait penyiapan project GCP, lihat dokumentasi GCP.
Setelah menyiapkan project GCP, langsung buka petunjuk untuk menginstal MiniKF.
Membuka project GCP yang telah dialokasikan sebelumnya
Untuk membuka project GCP yang telah dialokasikan sebelumnya, klik tombol di bawah untuk membuka GCP Console dan membuka panel Beranda, 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:

Pilih project Anda. Anda hanya boleh memiliki satu:

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

Klik tombol LUNCURKAN dan pilih project Anda:

Di jendela Configure & Deploy, pilih name dan zone untuk instance MiniKF Anda, lalu 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. Klik Snapshots 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, menjalankan Kubeflow Pipelines, dan menggunakan Rok untuk pembuatan versi dan reproduksibilitas data.
4. Menjalankan pipeline dari dalam notebook
Di bagian ini, Anda akan menjalankan contoh Identifikasi Ras, sebuah project dalam Nanodegree AI Udacity. Dengan diberi gambar, model akhir akan memberikan perkiraan ras tersebut.
Membuat server notebook di cluster Kubeflow Anda
Buka link Notebooks di dasbor pusat Kubeflow.

Klik New Server.

Tentukan nama untuk server notebook Anda.

Pastikan Anda telah memilih image Docker berikut (Perhatikan bahwa tag image mungkin berbeda):
gcr.io/arrikto/jupyter-kale:f20978e
Tambahkan volume data kosong baru berukuran 5 GB dan beri nama data.

Klik Launch untuk membuat server notebook.

Saat server notebook tersedia, klik Connect 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 dan mendownload notebook serta data yang akan Anda gunakan selama sisa lab:
cd data/ git clone https://github.com/kubeflow-kale/kale
Repositori yang di-clone berisi serangkaian contoh pilihan dengan data dan notebook yang dianotasi.
Di sidebar, buka folder data/kale/examples/dog-breed-classification/ dan buka notebook dog-breed.ipynb.

Mempelajari kode ML contoh Identifikasi Ras
Untuk saat ini, jangan jalankan sel yang mendownload set data, karena Anda akan menggunakan beberapa set data yang lebih kecil yang disertakan dalam repositori yang baru saja Anda clone. Jika Anda menjalankan contoh ini sendiri di rumah, silakan download set data.
Jalankan sel imports untuk mengimpor semua library yang diperlukan. Perhatikan bahwa kode gagal karena library tidak ada:

Biasanya, Anda harus membuat image Docker baru agar dapat menjalankan Notebook ini sebagai pipeline Kubeflow, untuk menyertakan library yang baru diinstal. Untungnya, Rok dan Kale memastikan bahwa library apa pun yang Anda instal selama pengembangan akan masuk ke pipeline Anda, berkat teknologi snapshot Rok dan Kale yang memasang volume yang di-snapshot tersebut ke dalam langkah-langkah pipeline.
Jalankan sel berikutnya untuk menginstal library yang belum ada:

Mulai ulang kernel notebook dengan mengklik ikon Restart:

Jalankan sel imports lagi dengan library yang benar telah diinstal dan lihat apakah berhasil.
Mengonversi notebook menjadi pipeline di Kubeflow Pipelines
Aktifkan Kale dengan mengklik ikon Kubeflow di panel kiri notebook:

Aktifkan Kale dengan mengklik penggeser di Panel Deployment Kale:

Jelajahi dependensi per sel dalam notebook. Lihat cara beberapa sel notebook dapat menjadi bagian dari satu langkah pipeline, seperti yang ditunjukkan oleh batang warna di sebelah kiri sel, dan cara langkah pipeline dapat bergantung pada langkah sebelumnya, seperti yang ditunjukkan oleh label bergantung pada di atas sel. Misalnya, gambar di bawah menunjukkan beberapa sel yang merupakan bagian dari langkah pipeline yang sama. Kolom ini memiliki warna merah yang sama dan bergantung pada langkah pipeline sebelumnya.

Klik tombol Compile and Run:

Sekarang Kale mengambil alih dan membangun notebook Anda, dengan mengonversinya menjadi pipeline Kubeflow Pipelines. Selain itu, karena Kale terintegrasi dengan Rok untuk mengambil snapshot volume data notebook saat ini, Anda dapat melihat progres snapshot. 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, dan pipeline akan berjalan di lingkungan yang sama tempat Anda mengembangkan kode, tanpa perlu membuat image Docker baru.

Pipeline dikompilasi dan diupload ke Kubeflow Pipelines. Sekarang klik link untuk membuka UI Kubeflow Pipelines dan melihat operasi.

UI Kubeflow Pipelines akan terbuka di tab baru. Tunggu hingga proses selesai.


Selamat! Anda baru saja menjalankan pipeline end-to-end di Kubeflow Pipelines, mulai dari notebook Anda.
5. Transfer learning dengan penyesuaian hyperparameter
Periksa hasilnya
Lihat log langkah cnn-from-scratch. (Klik langkah dalam grafik di UI Kubeflow Pipelines, lalu klik tab Logs.) Ini adalah langkah saat Anda melatih jaringan neural konvolusional (CNN) dari awal. Perhatikan bahwa model terlatih memiliki akurasi yang sangat rendah dan, selain itu, langkah ini memerlukan waktu yang lama untuk diselesaikan.

Lihat log cnn-vgg16 step. Pada langkah ini, Anda menggunakan transfer learning pada model VGG-16 terlatih—jaringan saraf yang dilatih oleh Visual Geometry Group (VGG). Akurasi model ini jauh lebih tinggi daripada model sebelumnya, tetapi kita masih bisa melakukannya dengan lebih baik.

Sekarang, lihat log langkah cnn-resnet50. Pada langkah ini, Anda menggunakan transfer learning pada model ResNet-50 terlatih. Akurasi jauh lebih tinggi. Oleh karena itu, model ini adalah model yang akan Anda gunakan untuk langkah-langkah selanjutnya dalam codelab ini.

Penyesuaian hyperparameter
Kembali ke server notebook di UI Kubeflow, lalu buka notebook bernama dog-breed-katib.ipynb (di jalur data/kale/examples/dog-breed-classification/). Di notebook ini, Anda akan menjalankan beberapa eksperimen penyesuaian hyperparameter pada model ResNet-50, menggunakan Katib. Perhatikan bahwa Anda memiliki satu sel di awal notebook untuk mendeklarasikan parameter:

Di panel kiri notebook, aktifkan HP Tuning with Katib untuk menjalankan penyesuaian hyperparameter:

Kemudian, klik Siapkan Tugas Katib untuk mengonfigurasi Katib:

Tentukan ruang penelusuran untuk setiap parameter, dan tentukan sasaran:

Klik tombol Compile and Run Katib Job:

Lihat progres eksperimen Katib:

Klik Lihat untuk melihat eksperimen Katib:

Klik Selesai untuk melihat operasi di Kubeflow Pipelines (KFP):

Di halaman eksperimen Katib, Anda akan melihat uji coba baru:

Di UI KFP, Anda akan melihat run baru:

Mari kita bedah apa yang baru saja terjadi. Sebelumnya, Kale menghasilkan eksekusi pipeline dari notebook dan sekarang membuat beberapa eksekusi pipeline, dengan masing-masing eksekusi diisi dengan kombinasi argumen yang berbeda.
Katib adalah komponen Kubeflow untuk menjalankan tugas penyesuaian hyperparameter tujuan umum. Katib tidak mengetahui apa pun tentang tugas yang sedang dijalankannya (disebut uji coba dalam jargon Katib). Yang penting bagi Kale adalah ruang penelusuran, algoritma pengoptimalan, dan sasaran. Katib mendukung menjalankan Job sederhana (yaitu, Pod) sebagai uji coba, tetapi Kale menerapkan shim agar uji coba benar-benar menjalankan pipeline di Kubeflow Pipelines, lalu mengumpulkan metrik dari eksekusi pipeline.
Saat eksperimen Katib menghasilkan uji coba, Anda akan melihat lebih banyak uji coba di UI Katib:

Dan lebih banyak lagi yang berjalan di UI KFP:

Setelah eksperimen Katib selesai, Anda dapat melihat semua uji coba di UI Katib:

Dan semua proses di UI KFP:

Jika kembali ke Notebook, Anda akan melihat tombol info tepat di samping eksperimen Katib di dalam panel Kale:

Klik, dan Anda akan melihat hasil terbaik serta parameter yang menghasilkannya:

6. Pembersihan
Hancurkan VM MiniKF
Buka Deployment Manager di GCP Console, lalu hapus deployment minikf-on-gcp.
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 mingguan, Slack, dan detail komunitas lainnya
