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 menggunakan resource yang berfluktuasi dan hanya dibatasi oleh jumlah resource yang dialokasikan ke cluster Kubernetes.
- Composable - Memungkinkan Anda mengonfigurasi langkah-langkah independen ke dalam alur kerja ML yang lengkap, dengan memilih dari sekumpulan framework dan library ML yang telah diseleksi.
Kubeflow memberi Anda kemampuan untuk mengatur microservice yang dikaitkan secara longgar sebagai satu unit dan men-deploy-nya ke berbagai lokasi, termasuk di laptop, lokal, atau di cloud.
Codelab ini memandu Anda dalam membuat deployment Kubeflow sendiri menggunakan MiniKF, lalu menjalankan alur kerja Kubeflow Pipelines dengan penyesuaian hyperparameter untuk melatih dan menyalurkan model. Anda melakukan semua itu dari dalam {i>Notebook <i}Jupyter.
Yang akan Anda bangun
Dalam codelab ini, Anda akan membangun pipeline data science yang kompleks dengan penyesuaian hyperparameter di 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 dengan penyesuaian hyperparameter 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
Menyiapkan project GCP
Ikuti langkah-langkah di bawah ini 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 ini. 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 selama 12 bulan dengan kredit $300, perhatikan bahwa Anda tidak dapat menjalankan penginstalan GCP MiniKF secara default, karena paket gratis tidak menawarkan resource yang cukup. Anda harus mengupgrade 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.
Buka 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. Instal MiniKF
Membuat instance Compute yang menyertakan MiniKF
Di GCP Marketplace, telusuri "MiniKF".
Pilih virtual machine MiniKF oleh Arrikto:
Klik tombol PELUNCURAN dan pilih project Anda:
Di folder Configure & Deploy jendela, pilih name dan zone untuk instance MiniKF Anda dan biarkan opsi default. Lalu klik tombol Deploy:
Tunggu hingga instance MiniKF Compute selesai 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 sudah 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. 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 kemampuan reproduksi data.
4. Menjalankan pipeline dari dalam notebook
Selama bagian ini, Anda akan menjalankan contoh Dog Breed Identification, sebuah project di Codelab AI Nanodegree. Dengan mempertimbangkan gambar, model akhir akan memberikan perkiraan jenis anjingnya.
Membuat server notebook di cluster Kubeflow
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 baru yang kosong berukuran 5 GB lalu 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 berikut untuk membuka folder data, lalu download notebook dan data yang akan Anda gunakan untuk sisa lab:
cd data/ git clone https://github.com/kubeflow-kale/kale
Repositori yang di-clone berisi serangkaian contoh hasil seleksi dengan data dan notebook yang telah dianotasi.
Di sidebar, buka folder data/kale/examples/dog-breed-classification/
lalu buka notebook dog-breed.ipynb
.
Mempelajari kode ML dalam contoh Identifikasi Jenis
Untuk saat ini, jangan jalankan sel yang mendownload set data, karena Anda akan menggunakan beberapa set data lebih kecil yang disertakan dalam repositori yang baru saja di-clone. Jika Anda menjalankan contoh ini dengan kecepatan Anda sendiri dari rumah, jangan ragu untuk mengunduh {i>dataset<i}.
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 setiap library yang Anda instal selama pengembangan akan menemukan jalannya ke pipeline Anda, berkat teknologi pembuatan snapshot Rok dan Kale yang memasang volume snapshot tersebut ke dalam langkah pipeline.
Jalankan sel berikutnya untuk menginstal library yang tidak ada:
Mulai ulang kernel notebook dengan mengklik ikon Restart:
Jalankan sel imports
lagi dengan library yang benar terinstal dan lihat sel tersebut berhasil.
Mengonversi notebook Anda ke pipeline di Kubeflow Pipelines
Aktifkan Kale dengan mengklik ikon Kubeflow di panel kiri notebook:
Aktifkan Kale dengan mengklik penggeser di Kale Deployment Panel:
Pelajari dependensi per sel di dalam notebook. Lihat bagaimana beberapa sel notebook dapat menjadi bagian dari satu langkah pipeline, seperti yang ditunjukkan oleh batang warna di sebelah kiri sel, dan bagaimana langkah pipeline mungkin bergantung pada langkah sebelumnya, seperti yang ditunjukkan oleh label bergantung pada di atas sel. Misalnya, gambar di bawah ini menunjukkan beberapa sel yang merupakan bagian dari langkah pipeline yang sama. Keduanya 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 mengubahnya menjadi pipeline Kubeflow Pipelines. Selain itu, karena Kale terintegrasi dengan Rok untuk mengambil snapshot volume data notebook saat ini, Anda dapat melihat progres snapshot tersebut. 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 Anda akan berjalan di lingkungan yang sama tempat Anda mengembangkan kode, tanpa perlu membangun image Docker baru.
Pipeline dikompilasi dan diupload ke Kubeflow Pipelines. Sekarang, klik link untuk membuka UI Kubeflow Pipelines dan lihat cara menjalankannya.
UI Kubeflow Pipelines akan terbuka di tab baru. Tunggu hingga operasi selesai.
Selamat! Anda baru saja menjalankan pipeline end-to-end di Kubeflow Pipelines, dimulai dari notebook Anda.
5. Pemelajaran transfer dengan penyesuaian hyperparameter
Periksa hasilnya
Lihat log langkah cnn-from-scratch. (Klik langkah dalam grafik di UI Kubeflow Pipelines, lalu klik tab Logs.) Pada langkah ini, Anda melatih jaringan neural konvolusional (CNN) dari awal. Perhatikan bahwa model yang dilatih memiliki akurasi yang sangat rendah dan, selain itu, langkah ini membutuhkan waktu yang lama untuk diselesaikan.
Lihat log langkah cnn-vgg16. Pada langkah ini, Anda menggunakan pemelajaran transfer pada model VGG-16 terlatih—jaringan neural yang dilatih oleh Visual Geometry Group (VGG). Akurasinya jauh lebih tinggi daripada model sebelumnya, tetapi kita masih bisa melakukan lebih baik lagi.
Sekarang, lihat log langkah cnn-resnet50. Pada langkah ini, Anda telah menggunakan pemelajaran transfer di model ResNet-50 yang telah dilatih sebelumnya. Akurasinya jauh lebih tinggi. Oleh karena itu, model ini akan Anda gunakan untuk bagian selanjutnya dari 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/
). Dalam 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 Set up Katib Job untuk mengonfigurasi Katib:
Tentukan ruang penelusuran untuk setiap parameter, dan tentukan sasaran:
Klik tombol Compile and Run Katib Job:
Lihat perkembangan eksperimen Katib:
Klik Lihat untuk melihat eksperimen Katib:
Klik Done untuk melihat operasi di Kubeflow Pipelines (KFP):
Di halaman eksperimen Katib, Anda akan melihat uji coba baru:
Di UI KFP Anda akan melihat operasi baru:
Mari kita uraikan apa yang baru saja terjadi. Sebelumnya, Kale menghasilkan pipeline yang dijalankan dari notebook dan sekarang membuat beberapa operasi pipeline, yang masing-masing diberi kombinasi argumen yang berbeda.
Katib adalah komponen Kubeflow untuk menjalankan tugas penyesuaian hyperparameter tujuan umum. Katib tidak mengetahui apa pun tentang pekerjaan yang sedang dijalankannya (disebut uji coba dalam jargon Katib). Kale hanya berfokus pada ruang penelusuran, algoritma pengoptimalan, dan sasarannya. Katib mendukung pengoperasian Tugas sederhana (yaitu Pod) sebagai uji coba, tetapi Kale menerapkan shim agar uji coba benar-benar menjalankan pipeline di Kubeflow Pipelines, lalu mengumpulkan metrik dari proses pipeline tersebut.
Saat eksperimen Katib menghasilkan uji coba, Anda akan melihat lebih banyak uji coba di UI Katib:
Dan perintah lainnya yang dijalankan di UI KFP:
Saat 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 tombol itu dan Anda akan melihat hasil terbaik dan parameter yang memunculkannya:
6. Pembersihan
Menghancurkan VM MiniKF
Buka Deployment Manager di Konsol GCP dan 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?
Bergabunglah dengan Komunitas Kubeflow:
- github.com/kubeflow
- Kubeflow Slack
- kubeflow-discuss@googlegroups.com
- Panggilan komunitas mingguan, Slack, dan detail komunitas lainnya