1. 概要
このラボでは、Vertex ML Metadata を使用して Vertex Pipelines の実行のメタデータを分析する方法について学びます。
学習内容
次の方法を学習します。
- Kubeflow Pipelines SDK を使用して Vertex AI にデータセットを作成し、そのデータセットでカスタムの Scikit-learn モデルをトレーニングしてデプロイする ML パイプラインを構築する
- アーティファクトとメタデータを生成するカスタム パイプライン コンポーネントを作成する
- Cloud コンソールとプログラムの両方で Vertex Pipelines の実行を比較する
- パイプライン生成アーティファクトのリネージを追跡する
- パイプライン実行メタデータをクエリする
このラボを Google Cloud で実行するための総費用は約 $2 です。
2. Vertex AI の概要
このラボでは、Google Cloud で利用できる最新の AI プロダクトを使用します。Vertex AI は Google Cloud 全体の ML サービスを統合してシームレスな開発エクスペリエンスを提供します。以前は、AutoML でトレーニングしたモデルやカスタムモデルには、個別のサービスを介してアクセスする必要がありました。Vertex AI は、これらの個別のサービスを他の新しいプロダクトとともに 1 つの API へと結合します。既存のプロジェクトを Vertex AI に移行することもできます。
Vertex AI には、モデルのトレーニングとデプロイ サービスに加えて、Vertex Pipelines、ML Metadata、Model Monitoring、Feature Store などのさまざまな MLOps プロダクトが含まれています。以下の図ですべての Vertex AI プロダクトを確認できます。
このラボでは、Vertex Pipelines と Vertex ML Metadata について詳しく学習します。
Vertex AI についてのフィードバックは、サポートページからお寄せください。
ML パイプラインはなぜ有用か?
本題に入る前に、なぜパイプラインを使用するのかについて理解しておきましょう。データの処理、モデルのトレーニング、ハイパーパラメータのチューニング、評価、モデルのデプロイを含む ML ワークフローを構築しているとします。これらのステップにはそれぞれ異なる依存関係があり、ワークフロー全体をモノリスとして扱うと、扱いづらくなる場合があります。また、ML プロセスを拡張する際は、チームの他のメンバーがワークフローを実行し、コーディングに参加できるように、ML ワークフローを共有したいところですが、信頼性と再現性のあるプロセスがなければ困難です。パイプラインでは、ML プロセスの各ステップがそれぞれのコンテナとなります。これにより、ステップを独立して開発し、各ステップからの入力と出力を再現可能な方法で追跡できます。また、新しいトレーニング データが利用可能になったらパイプラインの実行を開始するなど、クラウド環境内の他のイベントに基づいてパイプラインの実行をスケジュールまたはトリガーすることもできます。
要約: パイプラインは、ML ワークフローの自動化と再現に役立ちます。
3. クラウド環境の設定
この Codelab を実行するには、課金が有効になっている Google Cloud Platform プロジェクトが必要です。プロジェクトを作成するには、こちらの手順を行ってください。
Cloud Shell の起動
このラボでは、Cloud Shell セッションで作業します。Cloud Shell は、Google のクラウドで実行されている仮想マシンによってホストされるコマンド インタープリタです。このセクションは、パソコンでもローカルで簡単に実行できますが、Cloud Shell を使用することで、誰もが一貫した環境での再現可能な操作性を利用できるようになります。本ラボの後、このセクションをパソコン上で再度実行してみてください。
Cloud Shell をアクティブにする
Cloud コンソールの右上で、下のボタンをクリックして [Cloud Shell をアクティブにする] をクリックします。
Cloud Shell を初めて起動する場合は、その内容を説明する中間画面(スクロールしなければ見えない範囲)が表示されます。その場合は、[続行] をクリックします(今後表示されなくなります)。この中間画面は次のようになります。
Cloud Shell のプロビジョニングと接続に少し時間がかかる程度です。
この仮想マシンには、必要な開発ツールがすべて含まれています。永続的なホーム ディレクトリが 5 GB 用意されており、Google Cloud で稼働するため、ネットワークのパフォーマンスと認証が大幅に向上しています。このコードラボでの作業のほとんどは、ブラウザまたは Chromebook から実行できます。
Cloud Shell に接続すると、すでに認証は完了しており、プロジェクトに各自のプロジェクト ID が設定されていることがわかります。
Cloud Shell で次のコマンドを実行して、認証されたことを確認します。
gcloud auth list
コマンド出力
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
Cloud Shell で次のコマンドを実行して、gcloud コマンドがプロジェクトを認識していることを確認します。
gcloud config list project
コマンド出力
[core] project = <PROJECT_ID>
上記のようになっていない場合は、次のコマンドで設定できます。
gcloud config set project <PROJECT_ID>
コマンド出力
Updated property [core/project].
Cloud Shell には、現在の Cloud プロジェクトの名前が格納されている GOOGLE_CLOUD_PROJECT
など、いくつかの環境変数があります。ラボでは、さまざまな場所でこれを使用します。次を実行すると確認できます。
echo $GOOGLE_CLOUD_PROJECT
API を有効にする
これらのサービスがどこで(なぜ)必要になるかは、後の手順でわかります。とりあえず、次のコマンドを実行して Compute Engine、Container Registry、Vertex AI の各サービスへのアクセス権をプロジェクトに付与します。
gcloud services enable compute.googleapis.com \
containerregistry.googleapis.com \
aiplatform.googleapis.com
成功すると次のようなメッセージが表示されます。
Operation "operations/acf.cc11852d-40af-47ad-9d59-477a12847c9e" finished successfully.
Cloud Storage バケットを作成する
Vertex AI でトレーニング ジョブを実行するには、保存したモデルアセットを保存するストレージ バケットが必要です。これはリージョンのバケットである必要があります。ここでは us-central
を使用していますが、別のリージョンを使用することもできます(その場合はラボ内の該当箇所をすべて置き換えてください)。すでにバケットがある場合は、この手順を省略できます。
Cloud Shell で次のコマンドを実行して、バケットを作成します。
BUCKET_NAME=gs://$GOOGLE_CLOUD_PROJECT-bucket
gsutil mb -l us-central1 $BUCKET_NAME
次に、このバケットへのアクセス権をコンピューティング サービス アカウントに付与します。これにより、このバケットにファイルを書き込むために必要な権限が Vertex Pipelines に付与されます。次のコマンドを実行してこの権限を付与します。
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
Vertex AI Workbench インスタンスを作成する
Cloud Console の [Vertex AI] セクションで [ワークベンチ] をクリックします。
そのページで、[ユーザー管理のノートブック] で [新しいノートブック] をクリックします。
次に、[TensorFlow Enterprise 2.3 (with LTS)] インスタンス タイプを選択します([GPU なし])。
デフォルトのオプションを使用して、[作成] をクリックします。
ノートブックを開く
インスタンスが作成されたら、[JupyterLab を開く] を選択します。
4. Vertex Pipelines の設定
Vertex Pipelines を使用するためには、いくつかのライブラリを追加でインストールする必要があります。
- Kubeflow Pipelines: これはパイプラインの構築に使用する SDK です。Vertex Pipelines は、Kubeflow Pipelines と TFX の両方で構築されたパイプラインの実行をサポートします。
- Vertex AI SDK: この SDK は、Vertex AI API を呼び出すエクスペリエンスを最適化します。これを使用して、Vertex AI でパイプラインを実行します。
Python ノートブックを作成してライブラリをインストールする
まず、ノートブック インスタンスの Launcher メニューから [Python 3] を選択してノートブックを作成します。
このラボで使用する両方のサービスをインストールするために、最初にノートブック セルでユーザーフラグを設定します。
USER_FLAG = "--user"
続いて、ノートブックから次のコードを実行します。
!pip3 install {USER_FLAG} google-cloud-aiplatform==1.7.0
!pip3 install {USER_FLAG} kfp==1.8.9
これらのパッケージをインストールした後、カーネルを再起動する必要があります。
import os
if not os.getenv("IS_TESTING"):
# Automatically restart kernel after installs
import IPython
app = IPython.Application.instance()
app.kernel.do_shutdown(True)
次に、KFP SDK バージョンが正しくインストールされていることを確認します。1.8 以上である必要があります。
!python3 -c "import kfp; print('KFP SDK version: {}'.format(kfp.__version__))"
次に、Vertex AI SDK のバージョンが 1.6.2 以降であることを確認します。
!pip list | grep aiplatform
プロジェクト ID とバケットを設定する
このラボでは、自分の Cloud プロジェクト ID と前に作成したバケットを参照します。次に、これらごとに変数を作成します。
プロジェクト ID がわからない場合は、次のコードを実行して取得できる可能性があります。
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)
それ以外の場合は、こちらで設定します。
if PROJECT_ID == "" or PROJECT_ID is None:
PROJECT_ID = "your-project-id" # @param {type:"string"}
次に、バケット名を格納する変数を作成します。このラボで作成した場合は、以下のようになります。作成していない場合は以下を手動で設定する必要があります。
BUCKET_NAME="gs://" + PROJECT_ID + "-bucket"
ライブラリをインポートする
以下を追加して、この Codelab 全体を通して使用するライブラリをインポートします。
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
定数を定義する
パイプラインを構築する前に行う必要がある最後の作業は、いくつかの定数を定義することです。PIPELINE_ROOT
は、パイプラインによって作成されたアーティファクトが書き込まれる Cloud Storage パスです。ここではリージョンとして us-central1
を使用しますが、バケットの作成時に別のリージョンを使用した場合は、次のコードの REGION
変数を更新します。
PATH=%env PATH
%env PATH={PATH}:/home/jupyter/.local/bin
REGION="us-central1"
PIPELINE_ROOT = f"{BUCKET_NAME}/pipeline_root/"
PIPELINE_ROOT
上のコードを実行すると、パイプラインのルート ディレクトリが表示されます。これは、パイプラインからのアーティファクトが書き込まれる Cloud Storage の場所です。gs://YOUR-BUCKET-NAME/pipeline_root/
の形式になります。
5. カスタム コンポーネントを使用した 3 ステップのパイプラインの作成
このラボでは、パイプライン実行のメタデータを理解することに重点を置いて説明します。そのためには、まず Vertex Pipelines 上で実行するパイプラインが必要です。ここでは、次のカスタム コンポーネントを使用して、3 ステップのパイプラインを定義します。
get_dataframe
: BigQuery テーブルからデータを取得し、Pandas DataFrame に変換するtrain_sklearn_model
: Pandas DataFrame を使用して、Scikit Learn モデルをトレーニングし、指標とともにエクスポートします。deploy_model
: エクスポートされた Scikit Learn モデルを Vertex AI のエンドポイントにデプロイする
このパイプラインでは、UCI ML の Dry beans データセットを使用します。このデータセットは、(2020 年)「Multiclass Classification of Dry Beans Using Computer Vision and Machine Learning Techniques」、Computers and Electronics in Agriculture、174、105507。DOI。
これは表形式のデータセットです。パイプラインでは、このデータセットを使用して、豆をその特徴に基づいて 7 つのタイプに分類する Scikit-learn モデルのトレーニング、評価、デプロイを行います。コーディングを始めましょう。
Python 関数ベースのコンポーネントを作成する
KFP SDK を使用すると、Python の関数に基づくコンポーネントを作成できます。これをこのパイプラインの 3 つのコンポーネントに使用します。
BigQuery データをダウンロードして CSV に変換する
まず、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)
このコンポーネントの内容を詳しく見ていきましょう。
@component
デコレータは、パイプラインの実行時にこの関数をコンポーネントにコンパイルします。カスタム コンポーネントを記述するときには、これを使用します。base_image
パラメータは、このコンポーネントが使用するコンテナ イメージを指定します。- このコンポーネントでは、
packages_to_install
パラメータで指定したいくつかの Python ライブラリを使用します。 output_component_file
パラメータはオプションで、コンパイルされたコンポーネントを書き込む yaml ファイルを指定します。セルの実行後、そのファイルがノートブック インスタンスに書き込まれているのを確認できます。このコンポーネントを他のユーザーと共有したい場合は、生成した yaml ファイルをそのユーザーに送信し、次のコードでそれを読み込んでもらうことができます。
# 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')
- 次に、このコンポーネントは BigQuery Python クライアント ライブラリを使用して、BigQuery から Pandas DataFrame にデータをダウンロードし、そのデータの出力アーティファクトを CSV ファイルとして作成します。これが次のコンポーネントに入力として渡されます。
Scikit-learn モデルをトレーニングするためのコンポーネントを作成する
このコンポーネントでは、前に生成した CSV を使用して、Scikit-learn のディシジョン ツリーモデルをトレーニングします。このコンポーネントは、結果の Scikit モデルと、モデルの精度、フレームワーク、トレーニングに使用したデータセットのサイズを含む Metrics
アーティファクトをエクスポートします。
@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")
モデルを Vertex AI にアップロードしてデプロイするコンポーネントを定義する
最後に、前のステップのトレーニング済みモデルを取得して Vertex AI にアップロードし、エンドポイントにデプロイします。
@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
ここでは、Vertex AI SDK と予測用のビルド済みコンテナを使用してモデルをアップロードします。その後、モデルをエンドポイントにデプロイし、モデル リソースとエンドポイント リソースの両方に URI を返します。この Codelab の後半では、このデータをアーティファクトとして返すことの意味について詳しく説明します。
パイプラインを定義してコンパイルする
3 つのコンポーネントを定義したので、次にパイプライン定義を作成します。ここでは、入力アーティファクトと出力アーティファクトがステップ間でどのように流れるかを説明します。
@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
)
次のコードで、パイプラインの実行に使用する JSON ファイルを生成します。
compiler.Compiler().compile(
pipeline_func=pipeline, package_path="mlmd_pipeline.json"
)
2 つのパイプライン実行を開始する
次に、パイプラインを 2 回実行します。まず、パイプライン ジョブ ID に使用するタイムスタンプを定義しましょう。
from datetime import datetime
TIMESTAMP = datetime.now().strftime("%Y%m%d%H%M%S")
パイプラインは実行時に 1 つのパラメータ、つまりトレーニング データに使用する bq_table
を受け取ることに注意してください。このパイプライン実行では、Beans データセットの小さいバージョンを使用します。
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,
)
次に、同じデータセットのより大きなバージョンを使用して、別のパイプライン実行を作成します。
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,
)
最後に、両方の実行のパイプライン実行を開始します。実行ごとに出力を確認できるように、これを 2 つの別々のノートブック セルで行うことをおすすめします。
run1.submit()
次に、2 回目の実行を開始します。
run2.submit()
このセルを実行すると、Vertex AI コンソールに各パイプラインを表示するためのリンクが表示されます。そのリンクを開いて、パイプラインの詳細を確認します。
完了すると(このパイプラインの実行ごとに約 10 ~ 15 分かかります)、次のように表示されます。
2 つのパイプライン実行が完了したので、パイプライン アーティファクト、指標、リネージを詳しく確認できるようになりました。
6. パイプライン アーティファクトとリネージについて
パイプライン グラフでは、各ステップの後に小さなボックスが表示されます。これらはアーティファクト、つまりパイプライン ステップから生成された出力です。アーティファクトには多くの種類があります。このパイプラインには、データセット、指標、モデル、エンドポイントのアーティファクトがあります。UI の上部にある [Expand Artifacts] スライダーをクリックすると、それぞれの詳細が表示されます。
アーティファクトをクリックすると、その URI などの詳細情報が表示されます。たとえば、vertex_endpoint アーティファクトをクリックすると、Vertex AI コンソールでデプロイされたエンドポイントを見つける URI が表示されます。
Metrics
アーティファクトを使用すると、特定のパイプライン ステップに関連付けられたカスタム指標を渡すことができます。パイプラインの sklearn_train
コンポーネントでは、モデルの精度、フレームワーク、データセット サイズに関する指標をログに記録しました。指標アーティファクトをクリックすると、詳細が表示されます。
すべてのアーティファクトにはリネージがあります。リネージは、接続している他のアーティファクトを表しています。パイプラインの vertex_endpoint アーティファクトをもう一度クリックし、[リネージを表示] ボタンをクリックします。
新しいタブが開き、選択したアーティファクトに接続されているすべてのアーティファクトが表示されます。リネージグラフは次のようになります。
このエンドポイントに関連付けられているモデル、指標、データセットが表示されます。なぜこれが有用なのでしょうか複数のエンドポイントにモデルをデプロイしている場合や、調査しているエンドポイントにデプロイされたモデルのトレーニングに使用される特定のデータセットを把握する必要がある場合などは、リネージグラフは、ML システムの他の部分のコンテキストで各アーティファクトを理解するのに役立ちます。また、この Codelab で後ほど説明するように、リネージにプログラムでアクセスすることもできます。
7. パイプライン実行の比較
1 つのパイプラインが、異なる入力パラメータ、新しいデータ、またはチームのメンバーによって複数回実行される可能性があります。パイプラインの実行を追跡するには、さまざまな指標に基づいてそれらを比較する方法があると便利です。このセクションでは、実行を比較する 2 つの方法について説明します。
Pipelines UI での実行の比較
Cloud コンソールで、パイプライン ダッシュボードに移動します。実行したすべてのパイプライン実行の概要を確認できます。最後の 2 つの実行を確認し、上部の [比較] ボタンをクリックします。
すると、選択した各実行の入力パラメータと指標を比較できるページが表示されます。この 2 つの実行で、BigQuery テーブル、データセット サイズ、精度値が異なることに注意してください。
この UI 機能を使用して、2 つ以上の実行を比較したり、異なるパイプラインから実行したりできます。
Vertex AI SDK での実行の比較
多くのパイプラインの実行では、これらの比較指標をプログラムで取得して、指標の詳細を深く掘り下げて可視化する方法が欲しい場合があります。
aiplatform.get_pipeline_df()
メソッドを使用して、実行メタデータにアクセスできます。ここでは、同じパイプラインの最後の 2 つの実行のメタデータを取得し、Pandas DataFrame に読み込みます。ここでの pipeline
パラメータは、パイプライン定義でパイプラインに付けた名前を参照します。
df = aiplatform.get_pipeline_df(pipeline="mlmd-pipeline")
df
DataFrame を出力すると、次のように表示されます。
ここではパイプラインを 2 回実行しただけですが、実行回数が増えると指標の数がどれだけ増えるかは想像に難くありません。次に、matplotlib を使用してカスタムの可視化を作成し、モデルの精度とトレーニングに使用されるデータの量の関係を確認します。
ノートブックの新しいセルで、次のコマンドを実行します。
plt.plot(df["metric.dataset_size"], df["metric.accuracy"],label="Accuracy")
plt.title("Accuracy and dataset size")
plt.legend(loc=4)
plt.show()
次のように表示されます。
8. パイプライン指標のクエリ
すべてのパイプライン指標の DataFrame を取得するだけでなく、ML システムで作成されたアーティファクトをプログラムでクエリすることもできます。そこからカスタム ダッシュボードを作成したり、組織内の他の人に特定のアーティファクトの詳細を取得させたりすることができます。
すべてのモデル アーティファクトの取得
この方法でアーティファクトをクエリするには、MetadataServiceClient
を作成します。
API_ENDPOINT = "{}-aiplatform.googleapis.com".format(REGION)
metadata_client = aiplatform_v1.MetadataServiceClient(
client_options={
"api_endpoint": API_ENDPOINT
}
)
次に、そのエンドポイントに list_artifacts
リクエストを行い、レスポンスに含めるアーティファクトを示すフィルタを渡します。まず、プロジェクト内のモデルであるアーティファクトをすべて取得します。これを行うには、ノートブックで次のコマンドを実行します。
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)
結果の model_artifacts
レスポンスには、プロジェクト内の各モデル アーティファクトのイテラブル オブジェクトと、各モデルに関連付けられたメタデータが含まれます。
オブジェクトのフィルタリングと DataFrame の表示
結果のアーティファクト クエリを簡単に可視化できれば便利です。次に、2021 年 8 月 10 日以降に作成された、LIVE
状態のすべてのアーティファクトを取得しましょう。このリクエストの実行後、Pandas DataFrame に結果を表示します。まず、次のリクエストを実行します。
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)
次に、結果を 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
次のように表示されます。
ここで試したものだけでなく、他の条件に基づいてアーティファクトをフィルタすることもできます。
これでラボは終了です。
お疲れさまでした
Vertex AI を使って次のことを行う方法を学びました。
- Kubeflow Pipelines SDK を使用して Vertex AI にデータセットを作成し、そのデータセットでカスタムの Scikit-learn モデルをトレーニングしてデプロイする ML パイプラインを構築する
- アーティファクトとメタデータを生成するカスタム パイプライン コンポーネントを作成する
- Cloud コンソールとプログラムの両方で Vertex Pipelines の実行を比較する
- パイプライン生成アーティファクトのリネージを追跡する
- パイプライン実行メタデータをクエリする
Vertex のさまざまな部分の説明については、ドキュメントをご覧ください。
9. クリーンアップ
料金が発生しないようにするため、このラボで作成したリソースを削除することをおすすめします。
Notebooks インスタンスを停止または削除する
このラボで作成したノートブックを引き続き使用する場合は、未使用時にオフにすることをおすすめします。Cloud コンソールの Notebooks UI で、ノートブックを選択して [停止] を選択します。インスタンスを完全に削除する場合は、[削除] を選択します。
Vertex AI エンドポイントを削除する
デプロイしたエンドポイントを削除するには、Vertex AI コンソールの [エンドポイント] セクションに移動し、削除アイコンをクリックします。
Cloud Storage バケットの削除
ストレージ バケットを削除するには、Cloud コンソールのナビゲーション メニューで [ストレージ] に移動してバケットを選択し、[削除] をクリックします。