Menggunakan Metadata Vertex ML dengan Pipeline

1. Ringkasan

Di lab ini, Anda akan mempelajari cara menganalisis metadata dari operasi Vertex Pipelines dengan Vertex ML Metadata.

Yang Anda pelajari

Anda akan mempelajari cara:

  • Gunakan Kubeflow Pipelines SDK untuk membuat pipeline ML yang membuat set data di Vertex AI, serta melatih dan men-deploy model Scikit-learn kustom pada set data tersebut
  • Menulis komponen pipeline kustom yang menghasilkan artefak dan metadata
  • Membandingkan operasi Vertex Pipelines, baik di Cloud Console maupun secara terprogram
  • Melacak silsilah untuk artefak yang dihasilkan pipeline
  • Kueri metadata operasi pipeline

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.

Selain layanan deployment dan pelatihan model, Vertex AI juga mencakup berbagai produk MLOps, termasuk Vertex Pipelines, ML Metadata, Model Monitoring, Feature Store, dan banyak lagi. Anda dapat melihat semua penawaran produk Vertex AI dalam diagram di bawah.

Ringkasan produk Vertex

Lab ini berfokus pada Vertex Pipelines dan Vertex ML Metadata.

Jika Anda memiliki masukan tentang Vertex AI, lihat halaman dukungan.

Mengapa pipeline ML berguna?

Sebelum kita membahas lebih jauh, mari kita pahami terlebih dahulu mengapa Anda ingin menggunakan pipeline. Bayangkan Anda sedang membuat alur kerja ML yang mencakup pemrosesan data, pelatihan model, penyesuaian hyperparameter, evaluasi, dan deployment model. Setiap langkah ini mungkin memiliki dependensi yang berbeda, yang mungkin menjadi tidak praktis jika Anda memperlakukan seluruh alur kerja sebagai monolit. Saat mulai menskalakan proses ML, Anda mungkin ingin membagikan alur kerja ML kepada orang lain di tim Anda agar mereka dapat menjalankannya dan berkontribusi pada kode. Tanpa proses yang andal dan dapat direproduksi, hal ini dapat menjadi sulit. Dengan pipeline, setiap langkah dalam proses ML Anda adalah penampung tersendiri. Hal ini memungkinkan Anda mengembangkan langkah-langkah secara independen dan melacak input dan output dari setiap langkah dengan cara yang dapat direproduksi. Anda juga dapat menjadwalkan atau memicu operasi pipeline berdasarkan peristiwa lain di lingkungan Cloud, seperti memulai operasi pipeline saat data pelatihan baru tersedia.

Ringkasan: pipeline membantu Anda mengotomatiskan dan mereproduksi alur kerja ML.

3. Penyiapan lingkungan cloud

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

Mulai Cloud Shell

Dalam lab ini, Anda akan bekerja di sesi Cloud Shell, yang merupakan penafsir perintah yang dihosting oleh virtual machine yang berjalan di cloud Google. Anda juga dapat menjalankan bagian ini secara lokal di komputer Anda sendiri dengan mudah, tetapi menggunakan Cloud Shell memberi semua orang akses ke pengalaman yang dapat direproduksi dalam lingkungan yang konsisten. Setelah lab, Anda dapat mencoba kembali bagian ini di komputer Anda sendiri.

Mengizinkan cloud shell

Mengaktifkan Cloud Shell

Dari kanan atas Cloud Console, klik tombol di bawah untuk Mengaktifkan Cloud Shell:

Mengaktifkan Cloud Shell

Jika belum pernah memulai Cloud Shell, Anda akan melihat layar perantara (di paruh bawah) yang menjelaskan apa itu Cloud Shell. Jika memang demikian, klik Lanjutkan (dan Anda tidak akan pernah melihatnya lagi). Berikut tampilan layar sekali-tampil tersebut:

Penyiapan Cloud Shell

Perlu waktu beberapa saat untuk penyediaan dan terhubung ke Cloud Shell.

Inisialisasi Cloud Shell

Virtual machine ini berisi semua alat pengembangan yang Anda perlukan. Layanan ini menawarkan direktori beranda tetap sebesar 5 GB dan beroperasi di Google Cloud, sehingga sangat meningkatkan performa dan autentikasi jaringan. Sebagian besar pekerjaan Anda dalam codelab ini dapat dilakukan hanya dengan browser atau Chromebook.

Setelah terhubung ke Cloud Shell, Anda akan melihat bahwa Anda sudah diautentikasi dan project sudah ditetapkan ke project ID Anda.

Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa Anda telah diautentikasi:

gcloud auth list

Output perintah

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`

Jalankan perintah berikut di Cloud Shell untuk mengonfirmasi bahwa perintah gcloud mengetahui project Anda:

gcloud config list project

Output perintah

[core]
project = <PROJECT_ID>

Jika tidak, Anda dapat menyetelnya dengan perintah ini:

gcloud config set project <PROJECT_ID>

Output perintah

Updated property [core/project].

Cloud Shell memiliki beberapa variabel lingkungan, termasuk GOOGLE_CLOUD_PROJECT yang berisi nama project Cloud saat ini. Kita akan menggunakannya di berbagai tempat selama lab ini. Anda dapat melihatnya dengan menjalankan:

echo $GOOGLE_CLOUD_PROJECT

Mengaktifkan API

Pada langkah-langkah berikutnya, Anda akan melihat tempat layanan ini diperlukan (dan alasannya), tetapi untuk saat ini, jalankan perintah ini untuk memberi project Anda akses ke layanan Compute Engine, Container Registry, dan Vertex AI:

gcloud services enable compute.googleapis.com         \
                       containerregistry.googleapis.com  \
                       aiplatform.googleapis.com

Perintah di atas akan menampilkan pesan seperti berikut yang menandakan bahwa proses berhasil:

Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.

Membuat Bucket Cloud Storage

Untuk menjalankan tugas pelatihan pada Vertex AI, kita memerlukan bucket penyimpanan untuk menyimpan aset model tersimpan. Bucket harus bersifat regional. Kita menggunakan us-central di sini, tetapi Anda dapat menggunakan region lain (cukup ganti di seluruh lab ini). Jika sudah memiliki bucket, Anda dapat melewati langkah ini.

Jalankan perintah berikut di terminal Cloud Shell untuk membuat bucket:

BUCKET_NAME=gs://$GOOGLE_CLOUD_PROJECT-bucket
gsutil mb -l us-central1 $BUCKET_NAME

Selanjutnya, kita akan memberi akun layanan komputasi akses ke bucket ini. Tindakan ini akan memastikan bahwa Vertex Pipelines memiliki izin yang diperlukan untuk menulis file ke bucket ini. Jalankan perintah berikut untuk menambahkan izin ini:

gcloud projects describe $GOOGLE_CLOUD_PROJECT > project-info.txt
PROJECT_NUM=$(cat project-info.txt | sed -nre 's:.*projectNumber\: (.*):\1:p')
SVC_ACCOUNT="${PROJECT_NUM//\'/}-compute@developer.gserviceaccount.com"
gcloud projects add-iam-policy-binding $GOOGLE_CLOUD_PROJECT --member serviceAccount:$SVC_ACCOUNT --role roles/storage.objectAdmin

Membuat instance Vertex AI Workbench

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

Menu Vertex AI

Dari sana, di bagian notebook yang dikelola pengguna, klik Notebook Baru:

Membuat notebook baru

Kemudian, pilih jenis instance TensorFlow Enterprise 2.3 (with LTS) tanpa GPU:

Instance TFE

Gunakan opsi default, lalu klik Create.

Buka Notebook Anda

Setelah instance dibuat, pilih Open JupyterLab:

Buka Notebook

4. Penyiapan Vertex Pipelines

Ada beberapa library tambahan yang perlu kita instal untuk menggunakan Vertex Pipelines:

  • Kubeflow Pipelines: Ini adalah SDK yang akan kita gunakan untuk mem-build pipeline. Vertex Pipelines mendukung pipeline yang berjalan yang dibangun dengan Kubeflow Pipelines atau TFX.
  • Vertex AI SDK: SDK ini mengoptimalkan pengalaman untuk memanggil Vertex AI API. Kita akan menggunakannya untuk menjalankan pipeline di Vertex AI.

Membuat notebook Python dan menginstal library

Pertama, dari menu Peluncur di instance Notebook, buat notebook dengan memilih Python 3:

Membuat notebook Python3

Untuk menginstal kedua layanan yang akan kita gunakan di lab ini, pertama-tama tetapkan flag pengguna dalam sel notebook:

USER_FLAG = "--user"

Kemudian, jalankan kode berikut dari notebook Anda:

!pip3 install {USER_FLAG} google-cloud-aiplatform==1.7.0
!pip3 install {USER_FLAG} kfp==1.8.9

Setelah menginstal paket ini, Anda harus memulai ulang kernel:

import os

if not os.getenv("IS_TESTING"):
    # Automatically restart kernel after installs
    import IPython

    app = IPython.Application.instance()
    app.kernel.do_shutdown(True)

Selanjutnya, pastikan Anda telah menginstal versi KFP SDK dengan benar. Seharusnya >=1,8:

!python3 -c "import kfp; print('KFP SDK version: {}'.format(kfp.__version__))"

Kemudian, konfirmasi bahwa versi Vertex AI SDK Anda adalah >= 1.6.2:

!pip list | grep aiplatform

Menetapkan project ID dan bucket

Selama lab ini, Anda akan mereferensikan project ID Cloud dan bucket yang Anda buat sebelumnya. Selanjutnya, kita akan membuat variabel untuk setiap variabel tersebut.

Jika tidak mengetahui project ID, Anda mungkin bisa mendapatkannya dengan menjalankan perintah berikut:

import os
PROJECT_ID = ""

# Get your Google Cloud project ID from gcloud
if not os.getenv("IS_TESTING"):
    shell_output=!gcloud config list --format 'value(core.project)' 2>/dev/null
    PROJECT_ID = shell_output[0]
    print("Project ID: ", PROJECT_ID)

Jika tidak, tetapkan di sini:

if PROJECT_ID == "" or PROJECT_ID is None:
    PROJECT_ID = "your-project-id"  # @param {type:"string"}

Kemudian, buat variabel untuk menyimpan nama bucket Anda. Jika Anda membuatnya di lab ini, hal berikut akan berfungsi. Jika tidak, Anda harus menetapkannya secara manual:

BUCKET_NAME="gs://" + PROJECT_ID + "-bucket"

Mengimpor library

Tambahkan kode berikut untuk mengimpor library yang akan kita gunakan di seluruh codelab ini:

import matplotlib.pyplot as plt
import pandas as pd

from kfp.v2 import compiler, dsl
from kfp.v2.dsl import pipeline, component, Artifact, Dataset, Input, Metrics, Model, Output, InputPath, OutputPath

from google.cloud import aiplatform

# We'll use this namespace for metadata querying
from google.cloud import aiplatform_v1

Menentukan konstanta

Hal terakhir yang perlu kita lakukan sebelum mem-build pipeline adalah menentukan beberapa variabel konstan. PIPELINE_ROOT adalah jalur Cloud Storage tempat artefak yang dibuat oleh pipeline kita akan ditulis. Kita menggunakan us-central1 sebagai region di sini, tetapi jika Anda menggunakan region yang berbeda saat membuat bucket, perbarui variabel REGION dalam kode di bawah:

PATH=%env PATH
%env PATH={PATH}:/home/jupyter/.local/bin
REGION="us-central1"

PIPELINE_ROOT = f"{BUCKET_NAME}/pipeline_root/"
PIPELINE_ROOT

Setelah menjalankan kode di atas, Anda akan melihat direktori root untuk pipeline dicetak. Ini adalah lokasi Cloud Storage tempat artefak dari pipeline Anda akan ditulis. URL tersebut akan ditampilkan dalam format gs://YOUR-BUCKET-NAME/pipeline_root/

5. Membuat pipeline 3 langkah dengan komponen kustom

Fokus lab ini adalah memahami metadata dari operasi pipeline. Untuk melakukannya, kita memerlukan pipeline yang akan dijalankan di Vertex Pipelines, yang akan menjadi titik awal kita. Di sini, kita akan menentukan pipeline 3 langkah dengan komponen kustom berikut:

  • get_dataframe: Mengambil data dari tabel BigQuery dan mengonversinya menjadi DataFrame Pandas
  • train_sklearn_model: Menggunakan Pandas DataFrame untuk melatih dan mengekspor model Scikit Learn, beserta beberapa metrik
  • deploy_model: Men-deploy model Scikit Learn yang diekspor ke endpoint di Vertex AI

Dalam pipeline ini, kita akan menggunakan set data Kacang kering Machine Learning UCI, dari: KOKLU, M. dan OZKAN, I.A., (2020), "Multiclass Classification of Dry Beans Using Computer Vision and Machine Learning Techniques." upayaIn Computers and Electronics in Agriculture, 174, 105507. DOI.

Ini adalah set data tabulasi, dan dalam pipeline kita, kita akan menggunakan set data untuk melatih, mengevaluasi, dan men-deploy model Scikit-learn yang mengklasifikasikan bean menjadi salah satu dari 7 jenis berdasarkan karakteristiknya. Mari kita mulai coding.

Membuat komponen berbasis fungsi Python

Dengan KFP SDK, kita dapat membuat komponen berdasarkan fungsi Python. Kita akan menggunakannya untuk 3 komponen dalam pipeline ini.

Mendownload data BigQuery dan mengonversinya ke CSV

Pertama, kita akan mem-build komponen get_dataframe:

@component(
    packages_to_install=["google-cloud-bigquery", "pandas", "pyarrow", "db-dtypes"],
    base_image="python:3.9",
    output_component_file="create_dataset.yaml"
)
def get_dataframe(
    bq_table: str,
    output_data_path: OutputPath("Dataset")
):
    from google.cloud import bigquery
    import pandas as pd
    import os

    project_number = os.environ["CLOUD_ML_PROJECT_ID"]
    bqclient = bigquery.Client(project=project_number)
    table = bigquery.TableReference.from_string(
        bq_table
    )
    rows = bqclient.list_rows(
        table
    )
    dataframe = rows.to_dataframe(
        create_bqstorage_client=True,
    )
    dataframe = dataframe.sample(frac=1, random_state=2)
    dataframe.to_csv(output_data_path)

Mari kita lihat lebih dekat apa yang terjadi di komponen ini:

  • Dekorator @component mengompilasi fungsi ini ke komponen saat pipeline dijalankan. Anda akan menggunakannya setiap kali menulis komponen kustom.
  • Parameter base_image menentukan image container yang akan digunakan komponen ini.
  • Komponen ini akan menggunakan beberapa library Python, yang kita tentukan melalui parameter packages_to_install.
  • Parameter output_component_file bersifat opsional, dan menentukan file yaml untuk menulis komponen yang dikompilasi. Setelah menjalankan sel, Anda akan melihat file tersebut ditulis ke instance notebook. Jika ingin membagikan komponen ini kepada seseorang, Anda dapat mengirimkan file yaml yang dihasilkan dan meminta mereka memuatnya dengan kode berikut:
# This is optional, it shows how to load a component from a yaml file
# dataset_component = kfp.components.load_component_from_file('./create_dataset.yaml')
  • Selanjutnya, komponen ini menggunakan library klien Python BigQuery untuk mendownload data dari BigQuery ke DataFrame Pandas, lalu membuat artefak output data tersebut sebagai file CSV. Ini akan diteruskan sebagai input ke komponen berikutnya

Membuat komponen untuk melatih model Scikit-learn

Dalam komponen ini, kita akan mengambil CSV yang dibuat sebelumnya dan menggunakannya untuk melatih model hierarki keputusan Scikit-learn. Komponen ini mengekspor model Scikit yang dihasilkan, beserta artefak Metrics yang menyertakan akurasi, framework, dan ukuran set data model yang digunakan untuk melatihnya:

@component(
    packages_to_install=["sklearn", "pandas", "joblib", "db-dtypes"],
    base_image="python:3.9",
    output_component_file="beans_model_component.yaml",
)
def sklearn_train(
    dataset: Input[Dataset],
    metrics: Output[Metrics],
    model: Output[Model]
):
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.metrics import roc_curve
    from sklearn.model_selection import train_test_split
    from joblib import dump

    import pandas as pd
    df = pd.read_csv(dataset.path)
    labels = df.pop("Class").tolist()
    data = df.values.tolist()
    x_train, x_test, y_train, y_test = train_test_split(data, labels)

    skmodel = DecisionTreeClassifier()
    skmodel.fit(x_train,y_train)
    score = skmodel.score(x_test,y_test)
    print('accuracy is:',score)

    metrics.log_metric("accuracy",(score * 100.0))
    metrics.log_metric("framework", "Scikit Learn")
    metrics.log_metric("dataset_size", len(df))
    dump(skmodel, model.path + ".joblib")

Menentukan komponen untuk mengupload dan men-deploy model ke Vertex AI

Terakhir, komponen terakhir kita akan mengambil model terlatih dari langkah sebelumnya, menguploadnya ke Vertex AI, dan men-deploynya ke endpoint:

@component(
    packages_to_install=["google-cloud-aiplatform"],
    base_image="python:3.9",
    output_component_file="beans_deploy_component.yaml",
)
def deploy_model(
    model: Input[Model],
    project: str,
    region: str,
    vertex_endpoint: Output[Artifact],
    vertex_model: Output[Model]
):
    from google.cloud import aiplatform

    aiplatform.init(project=project, location=region)

    deployed_model = aiplatform.Model.upload(
        display_name="beans-model-pipeline",
        artifact_uri = model.uri.replace("model", ""),
        serving_container_image_uri="us-docker.pkg.dev/vertex-ai/prediction/sklearn-cpu.0-24:latest"
    )
    endpoint = deployed_model.deploy(machine_type="n1-standard-4")

    # Save data to the output params
    vertex_endpoint.uri = endpoint.resource_name
    vertex_model.uri = deployed_model.resource_name

Di sini, kita menggunakan Vertex AI SDK untuk mengupload model menggunakan container yang telah dibangun sebelumnya untuk prediksi. Kemudian, model akan di-deploy ke endpoint dan menampilkan URI ke resource model dan endpoint. Nanti dalam codelab ini, Anda akan mempelajari lebih lanjut arti menampilkan data ini sebagai artefak.

Menentukan dan mengompilasi pipeline

Setelah menentukan tiga komponen, selanjutnya kita akan membuat definisi pipeline. Diagram ini menjelaskan alur artefak input dan output di antara langkah-langkah:

@pipeline(
    # Default pipeline root. You can override it when submitting the pipeline.
    pipeline_root=PIPELINE_ROOT,
    # A name for the pipeline.
    name="mlmd-pipeline",
)
def pipeline(
    bq_table: str = "",
    output_data_path: str = "data.csv",
    project: str = PROJECT_ID,
    region: str = REGION
):
    dataset_task = get_dataframe(bq_table)

    model_task = sklearn_train(
        dataset_task.output
    )

    deploy_task = deploy_model(
        model=model_task.outputs["model"],
        project=project,
        region=region
    )

Berikut ini akan menghasilkan file JSON yang akan Anda gunakan untuk menjalankan pipeline:

compiler.Compiler().compile(
    pipeline_func=pipeline, package_path="mlmd_pipeline.json"
)

Memulai dua operasi pipeline

Selanjutnya, kita akan memulai dua operasi pipeline. Pertama, mari kita tentukan stempel waktu yang akan digunakan untuk ID tugas pipeline:

from datetime import datetime

TIMESTAMP = datetime.now().strftime("%Y%m%d%H%M%S")

Perlu diingat bahwa pipeline mengambil satu parameter saat kita menjalankannya: bq_table yang ingin kita gunakan untuk data pelatihan. Pengoperasian pipeline ini akan menggunakan set data beans versi yang lebih kecil:

run1 = aiplatform.PipelineJob(
    display_name="mlmd-pipeline",
    template_path="mlmd_pipeline.json",
    job_id="mlmd-pipeline-small-{0}".format(TIMESTAMP),
    parameter_values={"bq_table": "sara-vertex-demos.beans_demo.small_dataset"},
    enable_caching=True,
)

Selanjutnya, buat operasi pipeline lain menggunakan versi set data yang sama yang lebih besar.

run2 = aiplatform.PipelineJob(
    display_name="mlmd-pipeline",
    template_path="mlmd_pipeline.json",
    job_id="mlmd-pipeline-large-{0}".format(TIMESTAMP),
    parameter_values={"bq_table": "sara-vertex-demos.beans_demo.large_dataset"},
    enable_caching=True,
)

Terakhir, mulai eksekusi pipeline untuk kedua operasi. Sebaiknya lakukan ini di dua sel {i>notebook<i} terpisah sehingga Anda dapat melihat {i>output<i} untuk setiap {i>run<i}.

run1.submit()

Kemudian, mulai operasi kedua:

run2.submit()

Setelah menjalankan sel ini, Anda akan melihat link untuk melihat setiap pipeline di konsol Vertex AI. Buka link tersebut untuk melihat detail selengkapnya tentang pipeline Anda:

URL operasi pipeline

Setelah selesai (pipeline ini memerlukan waktu sekitar 10-15 menit per operasi), Anda akan melihat tampilan seperti ini:

Pipeline sklearn selesai

Setelah memiliki dua operasi pipeline yang telah selesai, Anda siap untuk mempelajari lebih lanjut artefak, metrik, dan silsilah pipeline.

6. Memahami artefak dan silsilah pipeline

Dalam grafik pipeline, Anda akan melihat kotak kecil setelah setiap langkah. Ini adalah artefak, atau output yang dihasilkan dari langkah pipeline. Ada banyak jenis artefak. Dalam pipeline khusus ini, kita memiliki set data, metrik, model, dan artefak endpoint. Klik penggeser Luaskan Artefak di bagian atas UI untuk melihat detail selengkapnya tentang setiap artefak:

Memperluas artefak

Mengklik artefak akan menampilkan detail selengkapnya, termasuk URI-nya. Misalnya, mengklik artefak vertex_endpoint akan menampilkan URI tempat Anda dapat menemukan endpoint yang di-deploy tersebut di konsol Vertex AI:

Detail artefak endpoint

Artefak Metrics memungkinkan Anda meneruskan metrik kustom yang terkait dengan langkah pipeline tertentu. Di komponen sklearn_train pipeline, kita mencatat metrik tentang akurasi, framework, dan ukuran set data model. Klik artefak metrik untuk melihat detail tersebut:

Metrik model

Setiap artefak memiliki Lini Masa, yang menjelaskan artefak lain yang terhubung dengannya. Klik artefak vertex_endpoint pipeline Anda lagi, lalu klik tombol View Lineage:

Menampilkan garis keturunan

Tindakan ini akan membuka tab baru tempat Anda dapat melihat semua artefak yang terhubung ke artefak yang telah Anda pilih. Grafik silsilah Anda akan terlihat seperti ini:

Grafik silsilah endpoint

Hal ini menunjukkan model, metrik, dan set data yang terkait dengan endpoint ini. Mengapa hal ini bermanfaat? Anda mungkin memiliki model yang di-deploy ke beberapa endpoint, atau perlu mengetahui set data tertentu yang digunakan untuk melatih model yang di-deploy ke endpoint yang Anda lihat. Grafik silsilah membantu Anda memahami setiap artefak dalam konteks sistem ML Anda lainnya. Anda juga dapat mengakses silsilah secara terprogram, seperti yang akan kita lihat nanti dalam codelab ini.

7. Membandingkan operasi pipeline

Kemungkinannya adalah pipeline tunggal akan dijalankan beberapa kali, mungkin dengan parameter input yang berbeda, data baru, atau oleh orang di seluruh tim Anda. Untuk melacak operasi pipeline, sebaiknya Anda memiliki cara untuk membandingkannya menurut berbagai metrik. Di bagian ini, kita akan mempelajari dua cara untuk membandingkan operasi.

Membandingkan operasi di UI Pipelines

Di Konsol Cloud, buka dasbor Pipeline. Halaman ini memberikan ringkasan tentang setiap proses pipeline yang telah Anda jalankan. Periksa dua operasi terakhir, lalu klik tombol Compare di bagian atas:

Membandingkan operasi

Tindakan ini akan mengarahkan kita ke halaman tempat kita dapat membandingkan parameter dan metrik input untuk setiap proses yang telah dipilih. Untuk kedua operasi ini, perhatikan perbedaan tabel BigQuery, ukuran set data, dan nilai akurasi:

Metrik perbandingan

Anda dapat menggunakan fungsi UI ini untuk membandingkan lebih dari dua operasi, dan bahkan beroperasi dari pipeline yang berbeda.

Membandingkan operasi dengan Vertex AI SDK

Dengan banyaknya eksekusi pipeline, Anda mungkin menginginkan cara untuk mendapatkan metrik perbandingan ini secara terprogram untuk menggali lebih dalam detail metrik dan membuat visualisasi.

Anda dapat menggunakan metode aiplatform.get_pipeline_df() untuk mengakses metadata run. Di sini, kita akan mendapatkan metadata untuk dua operasi terakhir dari pipeline yang sama dan memuatnya ke dalam DataFrame Pandas. Parameter pipeline di sini mengacu pada nama yang kita berikan pada pipeline dalam definisi pipeline:

df = aiplatform.get_pipeline_df(pipeline="mlmd-pipeline")
df

Saat mencetak DataFrame, Anda akan melihat tampilan seperti ini:

DataFrame metrik pipeline

Kita hanya mengeksekusi pipeline dua kali di sini, tetapi Anda dapat membayangkan berapa banyak metrik yang akan Anda miliki dengan lebih banyak eksekusi. Selanjutnya, kita akan membuat visualisasi kustom dengan matplotlib untuk melihat hubungan antara akurasi model dan jumlah data yang digunakan untuk pelatihan.

Jalankan kode berikut di sel notebook baru:

plt.plot(df["metric.dataset_size"], df["metric.accuracy"],label="Accuracy")
plt.title("Accuracy and dataset size")
plt.legend(loc=4)
plt.show()

Anda akan melihat sesuatu seperti ini:

Grafik metadata Matplotlib

8. Mengkueri metrik pipeline

Selain mendapatkan DataFrame dari semua metrik pipeline, Anda mungkin ingin secara terprogram mengkueri artefak yang dibuat dalam sistem ML Anda. Dari sana, Anda dapat membuat dasbor kustom atau mengizinkan orang lain di organisasi Anda mendapatkan detail tentang artefak tertentu.

Mendapatkan semua artefak Model

Untuk membuat kueri artefak dengan cara ini, kita akan membuat MetadataServiceClient:

API_ENDPOINT = "{}-aiplatform.googleapis.com".format(REGION)
metadata_client = aiplatform_v1.MetadataServiceClient(
  client_options={
      "api_endpoint": API_ENDPOINT
  }
)

Selanjutnya, kita akan membuat permintaan list_artifacts ke endpoint tersebut dan meneruskan filter yang menunjukkan artefak yang kita inginkan dalam respons. Pertama, mari kita dapatkan semua artefak dalam project kita yang merupakan model. Untuk melakukannya, jalankan perintah berikut di notebook Anda:

MODEL_FILTER="schema_title = \"system.Model\""
artifact_request = aiplatform_v1.ListArtifactsRequest(
    parent="projects/{0}/locations/{1}/metadataStores/default".format(PROJECT_ID, REGION),
    filter=MODEL_FILTER
)
model_artifacts = metadata_client.list_artifacts(artifact_request)

Respons model_artifacts yang dihasilkan berisi objek yang dapat di-iterasi untuk setiap artefak model dalam project Anda, beserta metadata terkait untuk setiap model.

Memfilter objek dan menampilkannya dalam DataFrame

Akan sangat berguna jika kita dapat lebih mudah memvisualisasikan kueri artefak yang dihasilkan. Selanjutnya, mari kita dapatkan semua artefak yang dibuat setelah 10 Agustus 2021 dengan status LIVE. Setelah menjalankan permintaan ini, kita akan menampilkan hasilnya dalam DataFrame Pandas. Pertama, jalankan permintaan:

LIVE_FILTER = "create_time > \"2021-08-10T00:00:00-00:00\" AND state = LIVE"
artifact_req = {
    "parent": "projects/{0}/locations/{1}/metadataStores/default".format(PROJECT_ID, REGION),
    "filter": LIVE_FILTER
}
live_artifacts = metadata_client.list_artifacts(artifact_req)

Kemudian, tampilkan hasilnya dalam DataFrame:

data = {'uri': [], 'createTime': [], 'type': []}

for i in live_artifacts:
    data['uri'].append(i.uri)
    data['createTime'].append(i.create_time)
    data['type'].append(i.schema_title)

df = pd.DataFrame.from_dict(data)
df

Anda akan melihat sesuatu seperti ini:

Bingkai data artefak yang difilter

Anda juga dapat memfilter artefak berdasarkan kriteria lain selain yang Anda coba di sini.

Dengan demikian, Anda telah menyelesaikan lab ini.

🎉 Selamat! 🎉

Anda telah mempelajari cara menggunakan Vertex AI untuk:

  • Gunakan Kubeflow Pipelines SDK untuk membuat pipeline ML yang membuat set data di Vertex AI, serta melatih dan men-deploy model Scikit-learn kustom pada set data tersebut
  • Menulis komponen pipeline kustom yang menghasilkan artefak dan metadata
  • Membandingkan operasi Vertex Pipelines, baik di Cloud Console maupun secara terprogram
  • Melacak silsilah untuk artefak yang dihasilkan pipeline
  • Kueri metadata operasi pipeline

Untuk mempelajari lebih lanjut berbagai bagian Vertex, lihat dokumentasinya.

9. Pembersihan

Agar tidak dikenai biaya, sebaiknya hapus resource yang dibuat selama lab ini.

Menghentikan atau menghapus instance Notebook

Jika Anda ingin terus menggunakan notebook yang dibuat di lab ini, sebaiknya nonaktifkan notebook saat tidak digunakan. Dari UI Notebook di Cloud Console, pilih notebook, lalu pilih Stop. Jika Anda ingin menghapus instance secara keseluruhan, pilih Hapus:

Hentikan instance

Menghapus endpoint Vertex AI

Untuk menghapus endpoint yang Anda deploy, buka bagian Endpoints di konsol Vertex AI, lalu klik ikon hapus:

Menghapus endpoint

Menghapus bucket Cloud Storage

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

Hapus penyimpanan