Dengan Vertex AI Pipelines, Anda dapat mengorkestrasi alur kerja machine learning (ML) dengan cara serverless. Sebelum Vertex AI Pipelines dapat mengorkestrasikan alur kerja ML, Anda harus mendeskripsikan alur kerja sebagai pipeline. Pipeline ML adalah alur kerja ML portabel dan skalabel yang didasarkan pada container dan layanan Google Cloud.
Panduan ini menjelaskan cara mulai membangun pipeline ML.
SDK pipeline mana yang harus saya gunakan?
Vertex AI Pipelines dapat menjalankan pipeline yang dibuat menggunakan salah satu SDK berikut:
Kubeflow Pipelines SDK v1.8 atau yang lebih baru (v2 direkomendasikan)
TensorFlow Extended v0.30.0 atau yang lebih baru
Jika menggunakan TensorFlow dalam alur kerja ML yang memproses data terstruktur atau data teks berukuran terabyte, sebaiknya Anda membangun pipeline menggunakan TFX.
- Untuk mempelajari lebih lanjut cara membangun pipeline TFX, ikuti tutorial memulai TFX.
- Untuk mempelajari lebih lanjut cara menggunakan Vertex AI Pipelines guna menjalankan pipeline TFX, ikuti tutorial TFX di Google Cloud.
Untuk kasus penggunaan lainnya, sebaiknya Anda membangun pipeline menggunakan Kubeflow Pipelines SDK. Dengan membangun pipeline menggunakan Kubeflow Pipelines SDK, Anda dapat mengimplementasikan alur kerja dengan membangun komponen kustom atau menggunakan kembali komponen bawaan, seperti Google Cloud Pipeline Components. Google Cloud Pipeline Components mempermudah penggunaan layanan Vertex AI seperti AutoML di pipeline Anda.
Panduan ini menjelaskan cara membangun pipeline menggunakan Kubeflow Pipelines SDK.
Sebelum memulai
Sebelum Anda membangun dan menjalankan pipeline, gunakan petunjuk berikut untuk menyiapkan project Google Cloud dan lingkungan pengembangan Anda.
Agar project Google Cloud Anda siap menjalankan pipeline ML, ikuti petunjuk dalam panduan untuk mengonfigurasi project Google Cloud.
Untuk membangun pipeline menggunakan Kubeflow Pipelines SDK, instal Kubeflow Pipelines SDK v1.8 atau yang lebih baru.
Untuk menggunakan klien Python Vertex AI di pipeline Anda, instal library klien Vertex AI v1.7 atau yang lebih baru.
Untuk menggunakan layanan Vertex AI di pipeline Anda, instal Google Cloud Pipeline Components SDK.
Mulai membangun pipeline
Untuk mengorkestrasi alur kerja ML di Vertex AI Pipelines, Anda harus menjelaskan terlebih dahulu alur kerja Anda sebagai pipeline. Contoh berikut menunjukkan cara menggunakan Google Cloud Pipeline Components dengan Vertex AI untuk membuat set data, melatih model menggunakan AutoML, dan men-deploy model terlatih untuk prediksi.
Sebelum menjalankan contoh kode berikut, Anda harus menyiapkan autentikasi.
Cara menyiapkan autentikasi
Untuk menyiapkan autentikasi, Anda harus membuat kunci akun layanan dan menetapkan variabel lingkungan untuk jalur ke kunci akun layanan.
-
Membuat akun layanan:
-
Di konsol Google Cloud, buka halaman Buat akun layanan.
- Di kolom Nama akun layanan, masukkan nama.
- Opsional: Di kolom Deskripsi akun layanan, masukkan deskripsi.
- Klik Buat.
- Klik kolom Pilih peran. Di bagian Semua peran, pilih Vertex AI > Pengguna Vertex AI.
-
Klik Selesai untuk membuat akun layanan.
Jangan tutup jendela browser Anda. Anda akan menggunakannya pada langkah berikutnya.
-
-
Membuat kunci akun layanan untuk autentikasi:
- Di konsol Google Cloud, klik alamat email untuk akun layanan yang telah dibuat.
- Klik Kunci.
- Klik Tambahkan kunci, lalu Buat kunci baru.
- Klik Buat. File kunci JSON akan didownload ke komputer Anda.
- Klik Tutup.
- Beri akun layanan baru Anda akses ke akun layanan yang digunakan untuk menjalankan pipeline.
- Klik untuk kembali ke daftar akun layanan.
Klik nama akun layanan yang Anda gunakan untuk menjalankan pipeline. Halaman Detail akun layanan akan muncul.
Jika Anda mengikuti petunjuk dalam panduan mengonfigurasi project untuk Vertex AI Pipelines, akun layanan ini sama dengan yang Anda buat di bagian Konfigurasikan akun layanan dengan izin terperinci. Jika tidak, Vertex AI akan menggunakan akun layanan default Compute Engine untuk menjalankan pipeline. Akun layanan default Compute Engine diberi nama seperti berikut:
PROJECT_NUMBER-compute@developer.gserviceaccount.com
- Klik tab Izin.
- Klik Berikan akses. Panel Tambahkan akun utama akan muncul.
- Di kotak Akun utama baru, masukkan alamat email untuk akun layanan yang Anda buat di langkah sebelumnya.
- Di menu drop-down Peran, pilih Akun layanan > Pengguna akun layanan.
- Klik Simpan
-
Tetapkan variabel lingkungan GOOGLE_APPLICATION_CREDENTIALS ke jalur file JSON yang berisi kunci akun layanan Anda. Variabel ini hanya berlaku untuk sesi shell Anda saat ini. Jadi, jika Anda membuka sesi baru, tetapkan variabel kembali.
Contoh: Linux atau macOS
Ganti [PATH] dengan jalur file JSON yang berisi kunci akun layanan Anda.
export GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Contoh:
export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/service-account-file.json"
Contoh: Windows
Ganti [PATH] dengan jalur file JSON yang berisi kunci akun layanan Anda, dan [FILE_NAME] dengan nama file.
Dengan PowerShell:
$env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
Contoh:
$env:GOOGLE_APPLICATION_CREDENTIALS="C:\Users\username\Downloads\[FILE_NAME].json"
Dengan command prompt:
set GOOGLE_APPLICATION_CREDENTIALS=[PATH]
Menentukan alur kerja Anda menggunakan paket Kubeflow Pipelines DSL
Paket kfp.dsl
berisi bahasa khusus domain (DSL) yang dapat
Anda gunakan untuk menentukan dan berinteraksi dengan pipeline dan komponen.
Komponen pipeline Kubeflow adalah fungsi factory yang membuat langkah-langkah
pipeline. Setiap komponen menjelaskan input, output, dan implementasi komponen. Misalnya, dalam contoh kode di bawah, ds_op
adalah komponen.
Komponen digunakan untuk membuat langkah-langkah pipeline. Saat pipeline berjalan, langkah-langkah dieksekusi saat data yang menjadi dependensinya tersedia. Misalnya, komponen pelatihan dapat mengambil file CSV sebagai input dan menggunakannya untuk melatih model.
import kfp
from google.cloud import aiplatform
from google_cloud_pipeline_components.v1.dataset import ImageDatasetCreateOp
from google_cloud_pipeline_components.v1.automl.training_job import AutoMLImageTrainingJobRunOp
from google_cloud_pipeline_components.v1.endpoint import EndpointCreateOp, ModelDeployOp
project_id = PROJECT_ID
pipeline_root_path = PIPELINE_ROOT
# Define the workflow of the pipeline.
@kfp.dsl.pipeline(
name="automl-image-training-v2",
pipeline_root=pipeline_root_path)
def pipeline(project_id: str):
# The first step of your workflow is a dataset generator.
# This step takes a Google Cloud Pipeline Component, providing the necessary
# input arguments, and uses the Python variable `ds_op` to define its
# output. Note that here the `ds_op` only stores the definition of the
# output but not the actual returned object from the execution. The value
# of the object is not accessible at the dsl.pipeline level, and can only be
# retrieved by providing it as the input to a downstream component.
ds_op = ImageDatasetCreateOp(
project=project_id,
display_name="flowers",
gcs_source="gs://cloud-samples-data/vision/automl_classification/flowers/all_data_v2.csv",
import_schema_uri=aiplatform.schema.dataset.ioformat.image.single_label_classification,
)
# The second step is a model training component. It takes the dataset
# outputted from the first step, supplies it as an input argument to the
# component (see `dataset=ds_op.outputs["dataset"]`), and will put its
# outputs into `training_job_run_op`.
training_job_run_op = AutoMLImageTrainingJobRunOp(
project=project_id,
display_name="train-iris-automl-mbsdk-1",
prediction_type="classification",
model_type="CLOUD",
dataset=ds_op.outputs["dataset"],
model_display_name="iris-classification-model-mbsdk",
training_fraction_split=0.6,
validation_fraction_split=0.2,
test_fraction_split=0.2,
budget_milli_node_hours=8000,
)
# The third and fourth step are for deploying the model.
create_endpoint_op = EndpointCreateOp(
project=project_id,
display_name = "create-endpoint",
)
model_deploy_op = ModelDeployOp(
model=training_job_run_op.outputs["model"],
endpoint=create_endpoint_op.outputs['endpoint'],
automatic_resources_min_replica_count=1,
automatic_resources_max_replica_count=1,
)
Ganti kode berikut:
- PROJECT_ID: Project Google Cloud tempat pipeline ini berjalan.
PIPELINE_ROOT_PATH: Menentukan Cloud Storage URI yang dapat diakses oleh akun layanan pipeline. Artefak operasi pipeline disimpan di dalam root pipeline.
Root pipeline dapat ditetapkan sebagai argumen anotasi
@kfp.dsl.pipeline
pada fungsi pipeline, atau dapat ditetapkan saat Anda memanggilcreate_run_from_job_spec
untuk membuat operasi pipeline.
Mengompilasi pipeline Anda menjadi file YAML
Setelah alur kerja pipeline ditentukan, Anda dapat melanjutkan mengompilasi pipeline ke dalam format YAML. File YAML mencakup semua informasi untuk menjalankan pipeline di Vertex AI Pipelines.
from kfp import compiler
compiler.Compiler().compile(
pipeline_func=pipeline,
package_path='image_classif_pipeline.yaml'
)
Mengirimkan operasi pipeline Anda
Setelah alur kerja pipeline dikompilasi ke dalam format YAML, Anda dapat menggunakan klien Python Vertex AI untuk mengirimkan dan menjalankan pipeline.
import google.cloud.aiplatform as aip
# Before initializing, make sure to set the GOOGLE_APPLICATION_CREDENTIALS
# environment variable to the path of your service account.
aip.init(
project=project_id,
location=PROJECT_REGION,
)
# Prepare the pipeline job
job = aip.PipelineJob(
display_name="automl-image-training-v2",
template_path="image_classif_pipeline.yaml",
pipeline_root=pipeline_root_path,
parameter_values={
'project_id': project_id
}
)
job.submit()
Ganti kode berikut:
- PROJECT_REGION: Region tempat pipeline ini berjalan.
Dalam contoh sebelumnya:
- Pipeline Kubeflow didefinisikan sebagai fungsi Python.
Fungsi ini dianotasi dengan dekorator
@kfp.dsl.pipeline
, yang menentukan nama pipeline dan jalur root. Jalur root pipeline adalah lokasi tempat artefak pipeline disimpan. - Langkah-langkah alur kerja pipeline dibuat menggunakan Google Cloud Pipeline Components. Dengan menggunakan output komponen
sebagai input komponen lain, Anda menentukan alur kerja pipeline sebagai
grafik. Misalnya:
training_job_run_op
bergantung pada outputdataset
darids_op
. - Anda mengompilasi pipeline menggunakan
kfp.compiler.Compiler
. - Anda membuat pipeline yang dijalankan di Vertex AI Pipelines menggunakan klien Python Vertex AI. Saat menjalankan pipeline, Anda dapat mengganti nama pipeline dan jalur root pipeline. Operasi pipeline dapat dikelompokkan menggunakan nama pipeline. Mengganti nama pipeline dapat membantu Anda membedakan antara operasi pipeline produksi dan eksperimental.
Untuk mempelajari lebih lanjut cara membangun pipeline, baca bagian membangun pipeline Kubeflow, serta ikuti contoh dan tutorial.
Menguji pipeline secara lokal (opsional)
Setelah menentukan pipeline dan komponen, Anda dapat menguji kode komponen dengan mengeksekusi kode di lingkungan penulisan lokal Anda. Dengan menjalankan pipeline atau komponen secara lokal, Anda dapat mengidentifikasi dan melakukan debug potensi masalah sebelum membuat pipeline run di remote lain, seperti Vertex AI Pipelines. Untuk mengetahui informasi selengkapnya tentang yang menjalankan pipeline dan komponen secara lokal, lihat Eksekusi lokal dalam dokumentasi KFP.
Halaman ini menunjukkan cara menetapkan dan menjalankan pipeline yang terdiri dari dua tugas.
Menyiapkan lingkungan lokal Anda
Instal versi minor terbaru dari Kubeflow Pipelines (KFP) SDK v2:
pip install --upgrade kfp>=2,<3
Opsional: Instal Docker.
Gunakan contoh kode berikut untuk menentukan pipeline sederhana:
from kfp import dsl # Define a component to add two numbers. @dsl.component def add(a: int, b: int) -> int: return a + b # Define a simple pipeline using the component. @dsl.pipeline def addition_pipeline(x: int, y: int, z: int) -> int: task1 = add(a=x, b=y) task2 = add(a=task1.output, b=z) return task2.output
Memanggil eksekusi lokal
Inisialisasi sesi lokal menggunakan fungsi local.init()
. Saat Anda menggunakan
local.init()
, KFP SDK mengeksekusi pipeline dan komponen Anda secara lokal saat
Anda menyebutnya.
Saat menggunakan local.init()
, Anda harus menentukan jenis runner. Jenis runner
menunjukkan bagaimana KFP harus
menjalankan setiap tugas.
Gunakan contoh berikut untuk menentukan jenis runner DockerRunner
guna menjalankan setiap tugas dalam container. Untuk mengetahui informasi selengkapnya tentang pelari lokal yang didukung
oleh KFP, lihat Local runner
dalam dokumentasi KFP.
from kfp import local
local.init(runner=local.DockerRunner())
pipeline_task = addition_pipeline(x=1, y=2, z=3)
Gunakan kode berikut untuk melihat output tugas pipeline setelah eksekusi lokal:
print(f'Result: {pipeline_task.output}')
Membangun pipeline Kubeflow
Gunakan proses berikut untuk membangun pipeline.
Desain pipeline Anda sebagai serangkaian komponen. Untuk mendorong penggunaan kembali, setiap komponen harus memiliki satu tanggung jawab. Jika memungkinkan, desain pipeline Anda untuk menggunakan kembali komponen yang telah terbukti seperti Google Cloud Pipeline Components.
Buat komponen kustom apa pun yang diperlukan untuk mengimplementasikan alur kerja ML Anda menggunakan Kubeflow Pipelines SDK. Komponen adalah kumpulan kode mandiri yang melakukan langkah dalam alur kerja ML Anda. Gunakan opsi berikut untuk membuat komponen pipeline.
Kemas kode komponen Anda sebagai image container. Dengan opsi ini, Anda dapat menyertakan kode dalam pipeline yang ditulis dalam bahasa apa pun yang dapat dikemas sebagai image container.
Implementasikan kode komponen Anda sebagai fungsi Python mandiri dan gunakan Kubeflow Pipelines SDK untuk mengemas fungsi Anda sebagai komponen. Opsi ini mempermudah pembuatan komponen berbasis Python.
Bangun pipeline Anda sebagai fungsi Python.
Pelajari lebih lanjut cara menentukan pipeline sebagai fungsi Python.
Gunakan compiler Kubeflow Pipelines SDK untuk mengompilasi pipeline.
from kfp import compiler compiler.Compiler().compile( pipeline_func=PIPELINE_FUNCTION, package_path=PIPELINE_PACKAGE_PATH)
Ganti kode berikut:
- PIPELINE_FUNCTION: Nama fungsi pipeline Anda.
- PIPELINE_PACKAGE_PATH: Jalur menuju tempat penyimpanan pipeline yang dikompilasi.
Jalankan pipeline menggunakan Konsol Google Cloud atau Python.
Mengakses resource Google Cloud di pipeline
Jika Anda tidak menentukan akun layanan saat menjalankan pipeline, Vertex AI Pipelines akan menggunakan akun layanan default Compute Engine untuk menjalankan pipeline Anda. Vertex AI Pipelines juga menggunakan akun layanan yang dijalankan pipeline untuk mengizinkan pipeline mengakses resource Google Cloud. Akun layanan default Compute Engine memiliki peran Project Editor secara default. Hal ini dapat memberi pipeline Anda akses berlebihan ke resource Google Cloud di project Google Cloud.
Pelajari lebih lanjut cara menggunakan Identity and Access Management untuk membuat akun layanan dan mengelola akses yang diberikan ke akun layanan.
Memastikan pipeline selalu terbaru
Klien SDK dan image container yang Anda gunakan untuk membangun dan menjalankan pipeline diupdate secara berkala ke versi baru untuk mem-patch kerentanan keamanan dan menambahkan fungsi baru. Agar pipeline Anda selalu diupdate dengan versi terbaru, sebaiknya lakukan hal berikut:
Tinjau kebijakan dukungan framework Vertex AI dan Daftar framework yang didukung.
Berlangganan ke catatan rilis Vertex AI dan feed RSS PyPi.org untuk SDK yang Anda gunakan (Kubeflow Pipelines SDK, Google Cloud Pipeline Components SDK, atau TensorFlow Extended SDK) untuk terus mengetahui rilis baru.
Jika memiliki template atau definisi pipeline yang merujuk ke container dengan kerentanan keamanan, Anda harus melakukan hal berikut:
Instal SDK versi terbaru yang di-patch.
Bangun ulang dan kompilasi ulang template atau definisi pipeline Anda.
Upload ulang template atau definisi ke Artifact Registry atau Cloud Storage.
Langkah berikutnya
- Baca pengantar Vertex AI Pipelines untuk mempelajari lebih lanjut cara mengorkestrasi alur kerja ML.
- Pelajari cara menjalankan pipeline.
- Memvisualisasikan dan menganalisis hasil operasi pipeline Anda.