Dari Notebook ke Kubeflow Pipelines dengan HP Tuning: Perjalanan Data Science

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

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:

99b103929d928576.pngS

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.

3fdc4329995406a0.pngS

Jika project belum dipilih, klik Select a project:

e8952c0b96067dea.png

Pilih project Anda. Anda hanya boleh memiliki satu:

fe25c1925487142.png

3. Instal MiniKF

Membuat instance Compute yang menyertakan MiniKF

Di GCP Marketplace, telusuri "MiniKF".

Pilih virtual machine MiniKF oleh Arrikto:

d6b423c1911ea85a.png

Klik tombol PELUNCURAN dan pilih project Anda:

7d07439db939b61c.pngS

Di folder Configure & Deploy jendela, pilih name dan zone untuk instance MiniKF Anda dan biarkan opsi default. Lalu klik tombol Deploy:

7d5f7d17a80a1930.pngS

Tunggu hingga instance MiniKF Compute selesai melakukan booting:

5228086caadc44c6.pngS

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

Login ke Kubeflow

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

251b0bcdbf6d3c71.pngS

9d49d899bb0b5bd1.pngS

Pengguna Chrome akan melihat layar ini:

6258e0f09e46a6c2.pngS

Pengguna Firefox akan melihat layar ini:

8cff90ce2f0670bd.pngS

Pengguna Safari akan melihat layar ini:

1c6fd768d71c0a92.pngS

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.

16171f35a935a9af.pngS

80aad6ba5d298a7e.pngS

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.

60825e935fd0f39b.pngS

Klik New Server.

f9303c0a182e47f5.png

Tentukan nama untuk server notebook Anda.

a2343f30bc9522ab.png

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.

8544d9b05826b316.pngS

Klik Launch untuk membuat server notebook.

28c024bcc55cc70a.pngS

Saat server notebook tersedia, klik Hubungkan untuk terhubung ke server tersebut.

52f1f8234988ceaa.pngS

Mendownload data dan notebook

Tab baru akan terbuka dengan halaman landing JupyterLab. Buat terminal baru di JupyterLab.

ab9ac96f1a1f0d09.png

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.

2bc436465522f65b.png

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:

5e2b97ab2512f139.pngS

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:

c483da77943a6f01.png

Mulai ulang kernel notebook dengan mengklik ikon Restart:

376b5203209c2c91.pngS

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:

7b96241f2ab6c389.pngS

Aktifkan Kale dengan mengklik penggeser di Kale Deployment Panel:

804cfbf9d76b7e23.png

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.

fcd0fb351cdfb359.png

Klik tombol Compile and Run:

18f2f6f0e12393d5.pngS

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.

de1b88af76df1a9a.png

Pipeline dikompilasi dan diupload ke Kubeflow Pipelines. Sekarang, klik link untuk membuka UI Kubeflow Pipelines dan lihat cara menjalankannya.

e0b467e2e7034b5d.png

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

21a9d54a57f3e20c.pngS

39e6fa39516d2773.pngS

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.

62bf0835e9896c67.png

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.

2b45072da65e20ae.pngS

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.

a1dc84ea48a87820.png

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:

87b9f6c98dc1823e.pngS

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

a518eba74d341139.png

Kemudian klik Set up Katib Job untuk mengonfigurasi Katib:

f4e34fff6a93aa60.png

Tentukan ruang penelusuran untuk setiap parameter, dan tentukan sasaran:

cfc6b7bcdc685a02.png

Klik tombol Compile and Run Katib Job:

f9c1ab0a6a3c5e8d.png

Lihat perkembangan eksperimen Katib:

f3514011876564db.png

Klik Lihat untuk melihat eksperimen Katib:

ab2f5a5edd48e8dc.png

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

410a843b6f044a4b.pngS

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

a511dca519580133.png

Di UI KFP Anda akan melihat operasi baru:

43dd34ee2b75018d.pngS

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:

3e854d3d4bb766c.pngS

Dan perintah lainnya yang dijalankan di UI KFP:

ffd30dcefa739962.png

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

9096ae9caa77e42a.pngS

Dan semua proses di UI KFP:

7acc64dfee4f35a3.pngS

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

95b092180d71dc80.pngS

Klik tombol itu dan Anda akan melihat hasil terbaik dan parameter yang memunculkannya:

3b0ce47e548e5afb.pngS

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:

Bacaan lebih lanjut