Vertex AI Workbench: Membuat 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 Vertex AI Workbench UI

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

2. Pengantar AI Vertex

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 keduanya menjadi satu API, bersama dengan produk baru lainnya. Anda juga dapat memigrasikan project yang ada ke Vertex AI. Jika Anda memiliki masukan, 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 dengan cepat membuat alur kerja berbasis notebook secara menyeluruh melalui integrasi mendalam dengan layanan data (seperti Dataproc, Dataflow, BigQuery, dan Dataplex) serta Vertex AI. Dengan demikian, data scientist dapat 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 di set data DeepWeeds dari Set Data TensorFlow. Anda akan menggunakanTensorFlow Hub untuk bereksperimen dengan vektor fitur yang diekstrak dari arsitektur model berbeda, sepertiResNet50, Awal, danMobileNet, semua telah dilatih diSet data tolok ukur ImageNet data. Dengan memanfaatkan eksekutor notebook melalui UI Vertex AI Workbench, Anda akan meluncurkan tugas pada Vertex AI Training yang menggunakan model terlatih ini dan melatih kembali lapisan terakhir untuk mengenali class dari set data DeepWeeds.

4. Menyiapkan lingkungan Anda

Anda memerlukan project Google Cloud Platform dengan penagihan 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 Cloud Console Anda, lalu klik Aktifkan Vertex AI API.

Dasbor Vertex AI

Langkah 3: Buat instance Workbench Vertex AI

Dari bagian Vertex AI di Cloud Console, klik Workbench:

Menu Vertex AI

Aktifkan Notebooks API jika belum diaktifkan.

Notebook_api

Setelah diaktifkan, klik KELOLA CATATAN TERKELOLA:

Notebook_UI

Kemudian, pilih Notebook BARU.

buku_baru_baru

Beri nama pada notebook Anda, lalu klik Setelan Lanjutan.

buat_catatancatatan

Di bagian Setelan Lanjutan, aktifkan penonaktifan saat tidak ada aktivitas dan tetapkan jumlah menit ke 60. Artinya, notebook Anda akan otomatis dinonaktifkan saat tidak digunakan sehingga tidak menimbulkan biaya yang tidak perlu.

waktu tidak ada aktivitas

Anda dapat membiarkan semua setelan lanjutan lainnya seperti apa adanya.

Selanjutnya, klik Buat.

Setelah instance dibuat, pilih Buka JupyterLab.

buka_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 mengautentikasi, Anda akan dapat memilih jenis notebook yang ingin digunakan dari peluncur.

Untuk lab ini, pilih kernel TensorFlow 2.

tf_kernel

5. Tulis 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 pra-proses 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 notebook. Mengeksekusi sel bersifat opsional.

Langkah 1: Download dan pra-proses set data

Impor library yang diperlukan terlebih dahulu:

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

Download data dari TensorFlow Dataset 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 prapemrosesan untuk menskalakan data gambar sebesar 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 pemisahan kereta/validasi. Set data ini hanya dilengkapi dengan set data pelatihan. Pada 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 untuk membuat 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 TensorFlow savedModel 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 membuat sel ini menjadi sel parameter, yang memungkinkan Anda meneruskan nilai untuk feature_extractor_model pada runtime.

Pertama, pilih sel dan klik pemeriksa properti di panel kanan.

properti_pemeriksa

Tag adalah cara sederhana untuk menambahkan metadata ke buku catatan Anda. Ketik "parameters" dalam kotak Tambahkan Tag dan tekan Enter. Nanti saat mengonfigurasi eksekusi, Anda akan meneruskan nilai yang berbeda, dalam hal ini model TensorFlow Hub, yang ingin diuji. Perhatikan bahwa Anda harus mengetik kata "parameters" (dan bukan kata lain) karena ini adalah cara eksekutor notebook mengetahui sel mana yang akan diparameterisasi.

tambahkan_tag

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

Buat sel baru dan tentukan tf_hub_uri, tempat Anda akan menggunakan interpolasi string untuk mengganti nama model terlatih yang ingin Anda gunakan 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 mempelajari 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 teruskan 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 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 dalam 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=20)

6. Jalankan notebook

Klik ikon Executor di bagian atas notebook.

eksekutor

Langkah 1: Konfigurasikan tugas pelatihan

Beri nama eksekusi Anda dan berikan bucket penyimpanan dalam project Anda.

eksekutor_konfigurasi

Setel Jenis mesin ke 4 CPU, RAM 15 GB.

Dan tambahkan 1 GPU NVIDIA.

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

opsi_lanjutan

Anda dapat mencentang kotak use default service account.

Kemudian, klik KIRIM

Langkah 3: Periksa hasilnya

Pada tab Eksekusi di UI Konsol, Anda dapat melihat status eksekusi notebook Anda.

UI_eksekusi

Jika mengklik nama eksekusi, Anda akan diarahkan ke tugas Pelatihan Vertex AI tempat notebook Anda dijalankan.

pelatihan_verteks

Saat tugas selesai, Anda akan 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_cell

🎉 Selamat! 🎉

Anda telah mempelajari cara menggunakan Vertex AI Workbench untuk:

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

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

7. Pembersihan

Secara default, notebook terkelola akan dimatikan secara otomatis setelah 180 menit tidak aktif. Jika Anda ingin menonaktifkan instance secara manual, klik tombol Stop di bagian Vertex AI Workbench konsol. Jika Anda ingin menghapus keseluruhan catatan, klik tombol Hapus.

hapus

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

Hapus penyimpanan