Menggunakan Metadata Vertex ML dengan Pipeline

1. Ringkasan

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

Yang Anda pelajari

Anda akan mempelajari cara:

  • Gunakan Kubeflow Pipelines SDK untuk membangun pipeline ML yang membuat set data dalam 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 Vertex Pipelines yang dijalankan, 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 pada 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 membangun alur kerja ML yang mencakup pemrosesan data, melatih model, penyesuaian hyperparameter, evaluasi, dan deployment model. Masing-masing langkah ini mungkin memiliki dependensi yang berbeda, yang dapat menjadi berat jika Anda memperlakukan seluruh alur kerja sebagai monolit. Saat mulai menskalakan proses ML, Anda mungkin ingin membagikan alur kerja ML Anda kepada orang lain di tim Anda sehingga mereka dapat menjalankannya dan menyumbangkan kode. Tanpa proses yang dapat diandalkan dan dapat direproduksi, proses ini akan menjadi sulit. Dengan pipeline, setiap langkah dalam proses ML Anda adalah container-nya sendiri. Hal ini memungkinkan Anda mengembangkan langkah secara independen serta melacak input dan output dari setiap langkah dengan cara yang dapat direproduksi. Anda juga dapat menjadwalkan atau memicu pengoperasian pipeline berdasarkan peristiwa lain di lingkungan Cloud, seperti memulai operasi pipeline saat data pelatihan baru tersedia.

Pipeline tl;dr: membantu Anda mengotomatiskan dan mereproduksi alur kerja ML Anda.

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

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

Mengizinkan Cloud Shell

Mengaktifkan Cloud Shell

Dari kanan atas Konsol Cloud, klik tombol di bawah untuk Activate 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 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.

Init Cloud Shell

Mesin virtual ini dimuat dengan semua alat pengembangan yang Anda butuhkan. 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 kita saat ini. Kita akan menggunakannya di berbagai tempat di lab ini. Anda dapat melihatnya dengan menjalankan:

echo $GOOGLE_CLOUD_PROJECT

Mengaktifkan API

Pada langkah selanjutnya, Anda akan melihat di mana layanan ini diperlukan (dan alasannya). Namun, untuk saat ini, jalankan perintah ini agar project Anda dapat mengakses 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 Anda 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, dalam notebook yang dikelola pengguna, klik Notebook Baru:

Buat 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 agar dapat menggunakan Vertex Pipelines:

  • Kubeflow Pipelines: Ini adalah SDK yang akan kita gunakan untuk membangun 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 Anda, 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 perintah 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-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, periksa apakah 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

Sepanjang lab ini, Anda akan mereferensikan project ID Cloud dan bucket yang telah 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, berikut ini akan berfungsi. Jika tidak, Anda harus menyetelnya 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 membangun pipeline adalah menentukan beberapa variabel konstan. PIPELINE_ROOT adalah jalur Cloud Storage tempat artefak yang dibuat oleh pipeline akan ditulis. Kita menggunakan us-central1 sebagai region di sini, tetapi jika Anda menggunakan region yang berbeda saat membuat bucket, perbarui variabel REGION pada 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 Anda telah dicetak. Ini adalah lokasi Cloud Storage tempat artefak dari pipeline Anda akan ditulis. Formatnya adalah 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 untuk berjalan di Vertex Pipelines, di mana kita akan memulai. 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 menggunakan KFP SDK, kita dapat membuat komponen berdasarkan fungsi Python. Kita akan menggunakannya untuk 3 komponen dalam pipeline ini.

Download data BigQuery dan konversi ke CSV

Pertama, kita akan membuat 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 dalam komponen ini:

  • Dekorator @component mengompilasi fungsi ini ke komponen saat pipeline dijalankan. Anda akan menggunakan ini 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 yang menjadi tujuan penulisan 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 Pandas DataFrame, lalu membuat artefak output dari 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 telah dihasilkan sebelumnya dan menggunakannya untuk melatih model pohon keputusan Scikit-learn. Komponen ini mengekspor model Scikit yang dihasilkan, bersama dengan artefak Metrics yang mencakup 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-deploy-nya 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. Layanan ini kemudian men-deploy model 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. Ini menjelaskan bagaimana artefak input dan output mengalir 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"
)

Mulai dua operasi pipeline

Selanjutnya, kita akan memulai dua proses pipeline. Pertama-tama, 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. Operasi pipeline ini akan menggunakan versi set data beans 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 yang lebih besar dari set data yang sama.

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 proses 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 membutuhkan waktu sekitar 10-15 menit per pengoperasian), Anda akan melihat tampilan seperti ini:

Pipeline sklearn selesai

Setelah menyelesaikan dua proses pipeline, Anda siap untuk mempelajari lebih lanjut artefak, metrik, dan silsilah pipeline.

6. Memahami silsilah dan artefak pipeline

Dalam grafik pipeline, Anda akan melihat kotak kecil setelah melakukan setiap langkah. Objek tersebut 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:

Luaskan 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 pada pipeline, kita mencatat metrik tentang akurasi, framework, dan ukuran set data model. Klik artefak metrik untuk melihat detail tersebut:

Metrik model

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

Tampilkan silsilah

Tindakan ini akan membuka tab baru tempat Anda dapat melihat semua artefak yang terhubung ke artefak yang 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, akan berguna untuk memiliki cara untuk membandingkannya berdasarkan berbagai metrik. Di bagian ini kita akan mempelajari dua cara untuk membandingkan lari.

Membandingkan operasi di UI Pipeline

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

Membandingkan operasi

Tindakan ini akan membawa kita ke halaman tempat kita dapat membandingkan parameter dan metrik input untuk setiap operasi yang telah dipilih. Untuk kedua operasi ini, perhatikan berbagai 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 operasi. 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 Anda mencetak DataFrame, Anda akan melihat sesuatu seperti ini:

DataFrame metrik pipeline

Kita hanya menjalankan 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 perintah 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. Membuat kueri 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 mana 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 iterable 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 buat 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 artefak yang Anda coba di sini.

Dengan begitu, kamu sudah menyelesaikan lab!

🎉 Selamat! 🎉

Anda telah mempelajari cara menggunakan Vertex AI untuk:

  • Gunakan Kubeflow Pipelines SDK untuk membangun pipeline ML yang membuat set data dalam 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 Vertex Pipelines yang dijalankan, 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 Anda tidak dikenai biaya, sebaiknya hapus resource yang dibuat di lab ini.

Menghentikan atau menghapus instance Notebooks

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

Hentikan instance

Menghapus endpoint Vertex AI

Untuk menghapus endpoint yang di-deploy, buka bagian Endpoint 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