1. Ringkasan
Di lab ini, Anda akan menggunakan Vertex AI untuk menjalankan tugas pelatihan kustom.
Lab ini merupakan bagian dari seri video Prototipe ke Produksi. Anda akan membangun model klasifikasi image menggunakan set data Bunga. Anda dapat menonton video yang disertakan untuk mempelajari lebih lanjut:
.
Yang Anda pelajari
Anda akan mempelajari cara:
- Membuat notebook terkelola Vertex AI Workbench
- Mengonfigurasi dan meluncurkan tugas pelatihan kustom dari UI Vertex AI
- Mengonfigurasi dan meluncurkan tugas pelatihan kustom dengan Vertex AI Python SDK
Total biaya untuk menjalankan lab ini di Google Cloud adalah sekitar $1.
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.
Vertex AI mencakup banyak produk yang berbeda untuk mendukung alur kerja ML secara menyeluruh. Lab ini akan berfokus pada produk yang disorot di bawah: Pelatihan dan Workbench
3. 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 Artifact Registry API
Buka Artifact Registry dan pilih Aktifkan jika belum diaktifkan. Anda akan menggunakannya untuk membuat container tugas pelatihan kustom.
Langkah 3: Aktifkan Vertex AI API
Buka bagian Vertex AI di Cloud Console Anda, lalu klik Aktifkan Vertex AI API.
Langkah 4: Buat instance Vertex AI Workbench
Dari bagian Vertex AI di Cloud Console Anda, klik Workbench:
Aktifkan Notebooks API jika belum diaktifkan.
Setelah diaktifkan, klik NOTEBOOK TERKELOLA:
Kemudian, pilih NOTEBOOK BARU.
Namai notebook Anda, lalu di bagian Izin, pilih Akun layanan
Pilih Setelan Lanjutan.
Di bagian Keamanan, pilih "Aktifkan terminal" jika belum diaktifkan.
Anda dapat membiarkan semua setelan lanjutan lainnya apa adanya.
Selanjutnya, klik Buat. Instance akan memerlukan waktu beberapa menit untuk disediakan.
Setelah instance dibuat, pilih BUKA JUPYTERLAB.
4. Menyimpan kode aplikasi pelatihan dalam container
Anda akan mengirim tugas pelatihan ke Vertex AI dengan menempatkan kode aplikasi pelatihan dalam container Docker dan mengirim container ini ke Google Artifact Registry. Menggunakan pendekatan ini, Anda dapat melatih model yang dibangun dengan framework apa pun.
Untuk memulai, dari menu Peluncur, buka jendela Terminal di instance notebook Anda:
Langkah 1: Buat bucket Cloud Storage
Di tugas pelatihan ini, Anda akan mengekspor model TensorFlow terlatih ke Bucket Cloud Storage. Anda juga akan menyimpan data untuk pelatihan di bucket Cloud Storage.
Dari Terminal Anda, jalankan perintah berikut guna menentukan variabel env untuk project Anda, pastikan untuk mengganti your-cloud-project
dengan ID project Anda:
PROJECT_ID='your-cloud-project'
Selanjutnya, jalankan perintah berikut di Terminal untuk membuat bucket baru dalam project Anda.
BUCKET="gs://${PROJECT_ID}-bucket"
gsutil mb -l us-central1 $BUCKET
Langkah 2: Salin data ke bucket Cloud Storage
Kita perlu memasukkan set data bunga ke Cloud Storage. Untuk tujuan demonstrasi, pertama-tama Anda perlu mendownload set data ke instance Workbench ini, lalu menyalinnya ke bucket.
Download dan untar data.
wget https://storage.googleapis.com/download.tensorflow.org/example_images/flower_photos.tgz
tar xvzf flower_photos.tgz
Lalu, salin ke bucket yang baru saja Anda buat. Kita tambahkan -r karena kita akan menyalin seluruh direktori, dan -m untuk menjalankan penyalinan multipemrosesan, yang akan mempercepat proses.
gsutil -m cp -r flower_photos $BUCKET
Langkah 3: Tulis kode pelatihan
Buat direktori baru bernama flowers
dan cd ke dalamnya:
mkdir flowers
cd flowers
Jalankan perintah berikut guna membuat direktori untuk kode pelatihan dan file Python tempat Anda akan menambahkan kodenya.
mkdir trainer
touch trainer/task.py
Sekarang Anda akan memiliki kode berikut di direktori flowers/
Anda:
+ trainer/
+ task.py
Untuk mengetahui detail selengkapnya tentang cara menyusun kode aplikasi pelatihan, lihat dokumennya.
Selanjutnya, buka file task.py
yang baru saja Anda buat dan salin kode di bawah.
Anda harus mengganti {your-gcs-bucket}
dengan nama bucket Cloud Storage yang baru saja Anda buat.
Melalui alat Cloud Storage FUSE, tugas pelatihan di Pelatihan Vertex AI dapat mengakses data di Cloud Storage sebagai file dalam sistem file lokal. Saat Anda memulai tugas pelatihan kustom, tugas tersebut melihat direktori /gcs
yang berisi semua bucket Cloud Storage Anda sebagai subdirektori. Itulah sebabnya jalur data dalam kode pelatihan dimulai dengan /gcs
.
import tensorflow as tf
import numpy as np
import os
## Replace {your-gcs-bucket} !!
BUCKET_ROOT='/gcs/{your-gcs-bucket}'
# Define variables
NUM_CLASSES = 5
EPOCHS=10
BATCH_SIZE = 32
IMG_HEIGHT = 180
IMG_WIDTH = 180
DATA_DIR = f'{BUCKET_ROOT}/flower_photos'
def create_datasets(data_dir, batch_size):
'''Creates train and validation datasets.'''
train_dataset = tf.keras.utils.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="training",
seed=123,
image_size=(IMG_HEIGHT, IMG_WIDTH),
batch_size=batch_size)
validation_dataset = tf.keras.utils.image_dataset_from_directory(
data_dir,
validation_split=0.2,
subset="validation",
seed=123,
image_size=(IMG_HEIGHT, IMG_WIDTH),
batch_size=batch_size)
train_dataset = train_dataset.cache().shuffle(1000).prefetch(buffer_size=tf.data.AUTOTUNE)
validation_dataset = validation_dataset.cache().prefetch(buffer_size=tf.data.AUTOTUNE)
return train_dataset, validation_dataset
def create_model():
'''Creates model.'''
model = tf.keras.Sequential([
tf.keras.layers.Resizing(IMG_HEIGHT, IMG_WIDTH),
tf.keras.layers.Rescaling(1./255, input_shape=(IMG_HEIGHT, IMG_WIDTH, 3)),
tf.keras.layers.Conv2D(16, 3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Conv2D(32, 3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Conv2D(64, 3, padding='same', activation='relu'),
tf.keras.layers.MaxPooling2D(),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dense(NUM_CLASSES, activation='softmax')
])
return model
# CREATE DATASETS
train_dataset, validation_dataset = create_datasets(DATA_DIR, BATCH_SIZE)
# CREATE/COMPILE MODEL
model = create_model()
model.compile(optimizer=tf.keras.optimizers.Adam(),
loss=tf.keras.losses.SparseCategoricalCrossentropy(),
metrics=['accuracy'])
# TRAIN MODEL
history = model.fit(
train_dataset,
validation_data=validation_dataset,
epochs=EPOCHS
)
# SAVE MODEL
model.save(f'{BUCKET_ROOT}/model_output')
Langkah 4: Buat Dockerfile
Untuk menyimpan kode dalam container, Anda harus membuat Dockerfile. Dalam Dockerfile, Anda akan menyertakan semua perintah yang diperlukan untuk menjalankan image. Tindakan ini akan menginstal semua library yang diperlukan dan menyiapkan titik entri untuk kode pelatihan.
Dari Terminal Anda, buat Dockerfile kosong dalam root direktori bunga Anda:
touch Dockerfile
Sekarang Anda akan memiliki kode berikut di direktori flowers/
Anda:
+ Dockerfile
+ trainer/
+ task.py
Buka Dockerfile dan salin kode berikut ke dalamnya:
FROM gcr.io/deeplearning-platform-release/tf2-gpu.2-8
WORKDIR /
# Copies the trainer code to the docker image.
COPY trainer /trainer
# Sets up the entry point to invoke the trainer.
ENTRYPOINT ["python", "-m", "trainer.task"]
Mari tinjau perintah dalam file ini.
Perintah FROM menentukan image dasar, yang merupakan image induk tempat image yang Anda buat akan dibangun. Sebagai image dasar, Anda akan menggunakan Image Docker GPU Deep Learning Container TensorFlow Enterprise 2.8. Deep Learning Containers di Google Cloud dilengkapi dengan banyak ML umum dan framework data science yang diinstal sebelumnya.
Perintah WORKDIR menentukan direktori pada image tempat petunjuk berikutnya dijalankan.
Perintah COPY menyalin kode pelatih ke image Docker. Perhatikan bahwa dalam contoh ini, kita hanya memiliki satu file phyton dalam direktori pelatih, tetapi untuk contoh yang lebih realistis, Anda mungkin perlu memiliki file tambahan. Mungkin satu file disebut data.py
, yang menangani pra-pemrosesan data, dan file lainnya disebut model.py
, yang hanya memiliki kode model, dll. Untuk kode pelatihan yang lebih kompleks, lihat dokumen Python pada project paket Python.
Jika ingin menambahkan library tambahan, Anda dapat menggunakan perintah RUN untuk menginstal pip (mis.: RUN pip install -r requirements.txt
). Namun, kita tidak memerlukan tambahan apa pun sebagai contoh di sini.
Terakhir, perintah ENTRYPOINT menyiapkan titik entri untuk memanggil pelatih. Inilah yang akan dijalankan saat kita memulai tugas pelatihan. Dalam kasus kita, perintah tersebut menjalankan file task.py
.
Anda dapat mempelajari lebih lanjut penulisan Dockerfile untuk Pelatihan Vertex AI di sini.
Langkah 4: Bangun container
Dari terminal notebook Workbench, jalankan perintah berikut untuk menentukan variabel env untuk project Anda, pastikan untuk mengganti your-cloud-project
dengan ID project Anda:
PROJECT_ID='your-cloud-project'
Buat repositori di Artifact Registry
REPO_NAME='flower-app'
gcloud artifacts repositories create $REPO_NAME --repository-format=docker \
--location=us-central1 --description="Docker repository"
Tentukan variabel dengan URI image container Anda di Google Artifact Registry:
IMAGE_URI=us-central1-docker.pkg.dev/$PROJECT_ID/$REPO_NAME/flower_image:latest
Konfigurasi Docker
gcloud auth configure-docker \
us-central1-docker.pkg.dev
Kemudian, bangun container dengan menjalankan perintah berikut dari root direktori flower
Anda:
docker build ./ -t $IMAGE_URI
Terakhir, kirim ke Artifact Registry:
docker push $IMAGE_URI
Dengan container yang dikirim ke Artifact Registry, sekarang Anda siap untuk memulai tugas pelatihan.
5. Menjalankan tugas pelatihan kustom pada Vertex AI
Lab ini menggunakan pelatihan kustom melalui container kustom di Google Artifact Registry, tetapi Anda juga dapat menjalankan tugas pelatihan dengan Container yang telah dibangun sebelumnya.
Untuk memulai, buka bagian Pelatihan di bagian Vertex pada Konsol Cloud Anda:
Langkah 1: Konfigurasi tugas pelatihan
Klik Buat untuk memasukkan parameter ke tugas pelatihan Anda.
- Di bagian Set data, pilih Tidak ada set data terkelola
- Lalu, pilih Pelatihan kustom (lanjutan) sebagai metode pelatihan Anda dan klik Lanjutkan.
- Pilih Latih model baru, lalu masukkan
flowers-model
(atau apa pun nama model yang Anda inginkan) untuk Nama model - Klik Lanjutkan
Dalam langkah setelan Container, pilih Container kustom:
Di kotak pertama (Image container), masukkan nilai variabel IMAGE_URI
Anda dari bagian sebelumnya. Nilainya harus: us-central1-docker.pkg.dev/{PROJECT_ID}/flower-app/flower_image:latest
, dengan ID project Anda. Biarkan kolom lainnya kosong dan klik Lanjutkan.
Lewati langkah Hyperparameter dengan mengklik Lanjutkan lagi.
Langkah 2: Konfigurasi cluster komputasi
Konfigurasi kumpulan Pekerja 0 sebagai berikut:
Anda akan melewati langkah 6 untuk saat ini dan mengonfigurasi container prediksi di lab berikutnya dalam seri ini.
Klik MULAI PELATIHAN untuk memulai tugas pelatihan. Di bagian Pelatihan konsol, pada tab PIPELINE PELATIHAN, Anda akan melihat tugas yang baru saja Anda luncurkan:
🎉 Selamat! 🎉
Anda telah mempelajari cara menggunakan Vertex AI untuk:
- Meluncurkan tugas pelatihan kustom untuk kode pelatihan yang disediakan dalam container kustom. Anda telah menggunakan model TensorFlow dalam contoh ini, tetapi Anda dapat melatih model yang dibangun dengan framework apa pun menggunakan container kustom atau bawaan.
Untuk mempelajari lebih lanjut berbagai bagian Vertex, lihat dokumentasinya.
6. [Opsional] Menggunakan Vertex AI Python SDK
Bagian sebelumnya menunjukkan cara meluncurkan tugas pelatihan melalui UI. Di bagian ini, Anda akan melihat cara alternatif untuk mengirim tugas pelatihan menggunakan Vertex AI Python SDK.
Kembali ke instance notebook Anda, dan buat notebook TensorFlow 2 dari Peluncur:
Impor Vertex AI SDK.
from google.cloud import aiplatform
Lalu, buat CustomContainerTrainingJob
. Anda harus mengganti {PROJECT_ID}
dalam container_uri
dengan nama project Anda, dan Anda harus mengganti {BUCKET}
dalam staging_bucket
dengan bucket yang Anda buat sebelumnya.
my_job = aiplatform.CustomContainerTrainingJob(display_name='flower-sdk-job',
container_uri='us-central1-docker.pkg.dev/{PROJECT_ID}/flower-app/flower_image:latest',
staging_bucket='gs://{BUCKET}')
Lalu, jalankan tugas.
my_job.run(replica_count=1,
machine_type='n1-standard-8',
accelerator_type='NVIDIA_TESLA_V100',
accelerator_count=1)
Untuk tujuan demonstrasi, tugas ini telah dikonfigurasi untuk menjalankan mesin yang lebih besar dibandingkan dengan bagian sebelumnya. Selain itu, kita menjalankannya dengan GPU. Jika Anda tidak menentukan machine-type
, accelerator_type
, atau accelerator_count
, tugas akan berjalan secara default pada n1-standard-4
.
Di bagian Pelatihan konsol, pada tab TUGAS KUSTOM, Anda akan melihat tugas pelatihan Anda.
7. Pembersihan
Karena notebook terkelola Vertex AI Workbench memiliki fitur penonaktifan tidak ada aktivitas, jangan khawatir untuk menonaktifkan instance-nya. 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.
Untuk menghapus Bucket Penyimpanan, menggunakan menu Navigasi di Konsol Cloud, jelajahi Penyimpanan, pilih bucket Anda, lalu klik Hapus: