Vertex AI Workbench: Membangun model klasifikasi gambar dengan pemelajaran transfer dan eksekutor notebook

1. Ringkasan

Di lab ini, Anda akan mempelajari cara mengonfigurasi dan meluncurkan eksekusi notebook dengan Vertex AI Workbench.

Yang Anda pelajari

Anda akan mempelajari cara:

  • Menggunakan parameter di notebook
  • Mengonfigurasi dan meluncurkan eksekusi notebook dari UI Vertex AI Workbench

Total biaya untuk menjalankan lab ini di Google Cloud adalah sekitar $2.

2. Pengantar Vertex AI

Lab ini menggunakan penawaran produk AI terbaru yang tersedia di Google Cloud. Vertex AI mengintegrasikan penawaran ML di Google Cloud ke dalam pengalaman pengembangan yang lancar. Sebelumnya, model yang dilatih dengan AutoML dan model kustom dapat diakses melalui layanan terpisah. Penawaran baru ini menggabungkan kedua model ini menjadi satu API, beserta produk baru lainnya. Anda juga dapat memigrasikan project yang sudah ada ke Vertex AI. Jika Anda memiliki masukan, harap lihat halaman dukungan.

Vertex AI mencakup banyak produk yang berbeda untuk mendukung alur kerja ML secara menyeluruh. Lab ini akan berfokus pada Vertex AI Workbench.

Vertex AI Workbench membantu pengguna membangun alur kerja end-to-end berbasis notebook dengan cepat melalui integrasi mendalam dengan layanan data (seperti Dataproc, Dataflow, BigQuery, dan Dataplex) serta Vertex AI. Hal ini memungkinkan data scientist untuk terhubung ke layanan data GCP, menganalisis set data, bereksperimen dengan berbagai teknik pemodelan, men-deploy model terlatih ke dalam produksi, dan mengelola MLOps melalui siklus proses model.

3. Ringkasan kasus penggunaan

Di lab ini, Anda akan menggunakan pemelajaran transfer untuk melatih model klasifikasi gambar pada set data DeepWeeds dari Set Data TensorFlow. Anda akan menggunakan TensorFlow Hub untuk bereksperimen dengan vektor fitur yang diekstrak dari berbagai arsitektur model, seperti ResNet50, Inception, dan MobileNet, yang semuanya telah dilatih sebelumnya menggunakan set data tolok ukur ImageNet. Dengan memanfaatkan eksekutor notebook melalui UI Vertex AI Workbench, Anda akan meluncurkan tugas di Vertex AI Training yang menggunakan model terlatih ini dan melatih ulang lapisan terakhir untuk mengenali class dari set data DeepWeeds.

4. Menyiapkan lingkungan Anda

Anda memerlukan project Google Cloud Platform dengan penagihan yang diaktifkan untuk menjalankan codelab ini. Untuk membuat project, ikuti petunjuk di sini.

Langkah 1: Aktifkan Compute Engine API

Buka Compute Engine dan pilih Aktifkan jika belum diaktifkan.

Langkah 2: Aktifkan Vertex AI API

Buka bagian Vertex AI di Cloud Console Anda, lalu klik Aktifkan Vertex AI API.

Dasbor Vertex AI

Langkah 3: Membuat instance Vertex AI Workbench

Dari bagian Vertex AI di Cloud Console Anda, klik Workbench:

Menu Vertex AI

Aktifkan Notebooks API jika belum diaktifkan.

Notebook_api

Setelah diaktifkan, klik NOTEBOOK TERKELOLA:

Notebooks_UI

Kemudian, pilih NOTEBOOK BARU.

new_notebook

Beri nama notebook Anda, lalu klik Setelan Lanjutan.

create_notebook

Di bagian Setelan Lanjutan, aktifkan penonaktifan tidak ada aktivitas dan setel jumlah menit ke 60. Artinya, notebook Anda akan otomatis dinonaktifkan saat tidak digunakan agar tidak menimbulkan biaya tambahan.

idle_timeout

Anda dapat membiarkan semua setelan lanjutan lainnya apa adanya.

Selanjutnya, klik Buat.

Setelah instance dibuat, pilih Buka JupyterLab.

open_jupyterlab

Saat pertama kali menggunakan instance baru, Anda akan diminta untuk mengautentikasi.

autentikasi

Vertex AI Workbench memiliki lapisan kompatibilitas komputasi yang memungkinkan Anda meluncurkan kernel untuk TensorFlow, PySpark, R, dll., semuanya dari satu instance notebook. Setelah melakukan autentikasi, Anda dapat memilih jenis notebook yang ingin digunakan dari peluncur.

Untuk lab ini, pilih kernel TensorFlow 2.

tf_kernel

5. Menulis kode pelatihan

Set data DeepWeeds terdiri dari 17.509 gambar yang menangkap delapan spesies gulma berbeda yang berasal dari Australia. Di bagian ini, Anda akan menulis kode untuk melakukan prapemrosesan set data DeepWeeds serta membuat dan melatih model klasifikasi gambar menggunakan vektor fitur yang didownload dari TensorFlow Hub.

Anda harus menyalin cuplikan kode berikut ke dalam sel {i>notebook<i} Anda. Mengeksekusi sel bersifat opsional.

Langkah 1: Download dan lakukan prapemrosesan set data

Pertama, instal set data TensorFlow versi malam untuk memastikan kita mengambil set data DeepWeeds versi terbaru.

!pip install tfds-nightly

Kemudian, impor library yang diperlukan:

import tensorflow as tf
import tensorflow_datasets as tfds
import tensorflow_hub as hub

Download data dari Set Data TensorFlow dan ekstrak jumlah class dan ukuran set data.

data, info = tfds.load(name='deep_weeds', as_supervised=True, with_info=True)
NUM_CLASSES = info.features['label'].num_classes
DATASET_SIZE = info.splits['train'].num_examples

Tentukan fungsi pra-pemrosesan untuk menskalakan data gambar ke 255.

def preprocess_data(image, label):
  image = tf.image.resize(image, (300,300))
  return tf.cast(image, tf.float32) / 255., label

Set data DeepWeeds tidak dilengkapi dengan bagian pelatihan/validasi. Model ini hanya dilengkapi dengan set data pelatihan. Dalam kode di bawah, Anda akan menggunakan 80% data tersebut untuk pelatihan, dan 20% sisanya untuk validasi.

# Create train/validation splits

# Shuffle dataset
dataset = data['train'].shuffle(1000)

train_split = 0.8
val_split = 0.2
train_size = int(train_split * DATASET_SIZE)
val_size = int(val_split * DATASET_SIZE)

train_data = dataset.take(train_size)
train_data  = train_data.map(preprocess_data)
train_data  = train_data.batch(64)

validation_data = dataset.skip(train_size)
validation_data  = validation_data.map(preprocess_data)
validation_data  = validation_data.batch(64)

Langkah 2: Buat model

Setelah membuat set data pelatihan dan validasi, Anda siap membangun model. TensorFlow Hub menyediakan vektor fitur, yang merupakan model terlatih tanpa lapisan klasifikasi teratas. Anda akan membuat ekstraktor fitur dengan menggabungkan model terlatih dengan hub.KerasLayer, yang menggabungkan TensorFlowSavedModel sebagai lapisan Keras. Kemudian, Anda akan menambahkan lapisan klasifikasi dan membuat model dengan Keras Sequential API.

Pertama, tentukan parameter feature_extractor_model, yang merupakan nama vektor fitur TensorFlow Hub yang akan Anda gunakan sebagai dasar untuk model Anda.

feature_extractor_model = "inception_v3"

Selanjutnya, Anda akan menjadikan sel ini sebagai sel parameter, yang akan memungkinkan Anda meneruskan nilai untuk feature_extractor_model saat runtime.

Pertama, pilih sel dan klik {i>property inspector<i} di panel kanan.

property_inspector

Tag adalah cara sederhana untuk menambahkan metadata ke notebook Anda. Ketik "parameters" di kotak Tambahkan Tag, lalu tekan Enter. Kemudian, saat mengonfigurasi eksekusi, Anda akan meneruskan nilai yang berbeda, dalam hal ini model TensorFlow Hub, yang ingin Anda uji. Perhatikan bahwa Anda harus mengetik kata "parameters" (dan bukan kata lain) karena ini adalah bagaimana eksekutor {i>notebook<i} mengetahui sel mana yang harus dijadikan parameter.

add_tag

Anda dapat menutup inspector properti dengan mengklik ikon roda gigi ganda lagi.

Buat sel baru dan tentukan tf_hub_uri, tempat Anda akan menggunakan interpolasi string untuk mengganti nama model terlatih yang ingin digunakan sebagai model dasar untuk eksekusi notebook tertentu. Secara default, Anda telah menetapkan feature_extractor_model ke "inception_v3", tetapi nilai valid lainnya adalah "resnet_v2_50" atau "mobilenet_v1_100_224". Anda dapat menjelajahi opsi tambahan di katalog TensorFlow Hub.

tf_hub_uri = f"https://tfhub.dev/google/imagenet/{feature_extractor_model}/feature_vector/5"

Selanjutnya, buat ekstraktor fitur menggunakan hub.KerasLayer dan meneruskan tf_hub_uri yang Anda tentukan di atas. Tetapkan argumen trainable=False untuk membekukan variabel sehingga pelatihan hanya mengubah lapisan pengklasifikasi baru yang akan Anda tambahkan di bagian atas.

feature_extractor_layer = hub.KerasLayer(
    tf_hub_uri,
    trainable=False)

Untuk menyelesaikan model, gabungkan lapisan ekstraktor fitur dalam model tf.keras.Sequential dan tambahkan lapisan terhubung sepenuhnya untuk klasifikasi. Jumlah unit di head klasifikasi ini harus sama dengan jumlah class dalam set data:

model = tf.keras.Sequential([
  feature_extractor_layer,
  tf.keras.layers.Dense(units=NUM_CLASSES)
])

Terakhir, kompilasi dan sesuaikan model.

model.compile(
  optimizer=tf.keras.optimizers.Adam(),
  loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
  metrics=['acc'])

model.fit(train_data, validation_data=validation_data, epochs=3)

6. Menjalankan notebook

Klik ikon Executor di bagian atas notebook.

eksekutor

Langkah 1: Konfigurasi tugas pelatihan

Beri nama eksekusi dan berikan bucket penyimpanan dalam project Anda.

executor_config

Tetapkan Jenis mesin ke 4 CPU, 15 GB RAM.

Dan tambahkan 1 GPU NVIDIA.

Tetapkan lingkungan ke TensorFlow Enterprise 2.6 (GPU).

Pilih Eksekusi satu kali.

Langkah 2: Konfigurasikan parameter

Klik drop-down OPSI LANJUTAN untuk menetapkan parameter. Di kotak, ketik feature_extractor_model=resnet_v2_50. Tindakan ini akan mengganti inception_v3, nilai default yang Anda tetapkan untuk parameter ini di notebook, dengan resnet_v2_50.

advanced_options

Anda dapat mencentang kotak use default service account.

Lalu klik KIRIM

Langkah 3: Periksa hasil

Di tab Executions di UI Konsol, Anda dapat melihat status eksekusi notebook.

executions_UI

Jika mengklik nama execution, Anda akan diarahkan ke tugas Vertex AI Training tempat notebook Anda dijalankan.

vertex_training

Setelah tugas selesai, Anda dapat melihat notebook output dengan mengklik LIHAT HASIL.

view_result

Di notebook output, Anda akan melihat bahwa nilai untuk feature_extractor_model ditimpa oleh nilai yang Anda teruskan saat runtime.

param_cells

🎉 Selamat! 🎉

Anda telah mempelajari cara menggunakan Vertex AI Workbench untuk:

  • Menggunakan parameter di notebook
  • Mengonfigurasi dan meluncurkan eksekusi notebook dari UI Vertex AI Workbench

Untuk mempelajari lebih lanjut berbagai bagian Vertex AI, lihat dokumentasinya.

7. Pembersihan

Secara default, notebook terkelola akan otomatis dinonaktifkan setelah 180 menit tidak ada aktivitas. Jika Anda ingin menonaktifkan instance secara manual, klik tombol Hentikan di bagian Vertex AI Workbench pada konsol. Jika Anda ingin menghapus notebook secara keseluruhan, klik tombol Hapus.

hapus

Untuk menghapus Bucket Penyimpanan menggunakan menu Navigasi di Cloud Console, jelajahi Penyimpanan, pilih bucket Anda, lalu klik Hapus:

Hapus penyimpanan