Vertex ML Metadata を管理する

このガイドでは、Vertex ML Metadata の管理方法について説明します。

始める前に

Google Cloud プロジェクトで初めて Vertex ML Metadata を使用すると、Vertex AI によりプロジェクトのメタデータ ストアが作成されます。

顧客管理の暗号鍵(CMEK)を使用してメタデータを暗号化する場合は、CMEK を使用してメタデータ ストアを作成した後、Vertex ML Metadata を使用してメタデータを追跡または分析する必要があります。プロジェクトのメタデータ ストアは、CMEK を使用するメタデータ ストアの作成の手順で構成します。

アーティファクト管理

アーティファクトを作成する

アーティファクトを作成するには、REST または Vertex AI SDK for Python のいずれかを使用します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 使用するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • METADATA_STORE: アーティファクトが作成されるメタデータ ストア ID。デフォルトのメタデータ ストアの名前は default です。
  • ARTIFACT_ID: 省略可。アーティファクト レコードの ID。アーティファクト ID が指定されていない場合、このアーティファクトの固有識別子が Vertex ML Metadata により作成されます。
  • DISPLAY_NAME: 省略可。アーティファクトのユーザー定義の名前。
  • URI: アーティファクトの保存場所。
  • ARTIFACT_STATE: 省略可。アーティファクトの現在の状態を表す State 列挙型の値。このフィールドは、クライアント アプリケーションが管理します。Vertex ML Metadata は状態遷移の妥当性を確認しません。
  • METADATA_SCHEMA_TITLE: メタデータ フィールドを記述するスキーマのタイトル。スキーマのタイトルは . の形式にする必要があります。名前空間名は 2~20 文字にし、先頭を小文字にします。名前には文字と数字を使用できます。スキーマ名は 2~49 文字にし、先頭は大文字にする必要があります。名前には英字と数字を使用できます。
  • METADATA_SCHEMA_VERSION: 省略可。メタデータ フィールドを記述するスキーマのバージョン。schema_version は、1.0.0、1.0.1 のように、3 つの数字をピリオドで区切った文字列にする必要があります。この形式はバージョンの順序付けや比較に役立ちます。
  • METADATA: 省略可。データセットのタイプなど、アーティファクトを記述するプロパティ。
  • DESCRIPTION: 省略可。人が読める形式の文字列。作成する実行の目的を記述します。
  • LABELS: 省略可。アーティファクトを編成するためのユーザー定義のメタデータ。

HTTP メソッドと URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/artifacts?artifactId=ARTIFACT_ID

リクエストの本文(JSON):

{
  "displayName": "DISPLAY_NAME",
  "uri": "URI",
  "state": "ARTIFACT_STATE",
  "schemaTitle": "METADATA_SCHEMA_TITLE",
  "schemaVersion": "METADATA_SCHEMA_VERSION",
  "metadata": {
    METADATA
  },
  "labels": {"LABEL_1":"LABEL_2"},
  "description": "DESCRIPTION"
}

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/default/artifacts/ARTIFACT_ID",
  "displayName": "Example artifact",
  "uri": "gs://your_bucket_name/artifacts/dataset.csv",
  "etag": "67891011",
  "labels": {
    "test_label": "test_label_value"
  },
  "createTime": "2021-05-18T00:29:24.344Z",
  "updateTime": "2021-05-18T00:29:24.344Z",
  "state": "LIVE",
  "schemaTitle": "system.Dataset",
  "schemaVersion": "0.0.1",
  "metadata": {
    "payload_format": "CSV"
  },
  "description": "Description of the example artifact."
}

Python

Python

from typing import Dict, Optional

from google.cloud.aiplatform.metadata.schema.system import artifact_schema


def create_artifact_sample(
    project: str,
    location: str,
    uri: Optional[str] = None,
    artifact_id: Optional[str] = None,
    display_name: Optional[str] = None,
    schema_version: Optional[str] = None,
    description: Optional[str] = None,
    metadata: Optional[Dict] = None,
):
    system_artifact_schema = artifact_schema.Artifact(
        uri=uri,
        artifact_id=artifact_id,
        display_name=display_name,
        schema_version=schema_version,
        description=description,
        metadata=metadata,
    )
    return system_artifact_schema.create(project=project, location=location,)
  • project: 実際のプロジェクト ID。これらの ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
  • location: 利用可能なロケーションの一覧をご覧ください。
  • uri: 省略可。アーティファクト ファイルの Uniform Resource Identifier(ファイルが存在する場合)。実際のアーティファクト ファイルがない場合は空になります。
  • artifact_id: 省略可。アーティファクト レコードの ID。アーティファクト ID が指定されていない場合、このアーティファクトの固有識別子が Vertex ML Metadata により作成されます。
  • display_name: (省略可)アーティファクトのユーザー定義の名前。
  • schema_version: メタデータ フィールドを記述するスキーマのバージョン。
  • description: 省略可。人が読める形式の文字列。作成するアーティファクトの目的を記述します。
  • metadata: アーティファクトを記述するプロパティ(アーティファクト パラメータなど)。

既存のアーティファクトを検索する

アーティファクトは、データセットやモデルなど、ML ワークフローによって使用または生成されるデータを表します。既存のアーティファクトを検索するには、REST または Vertex AI SDK for Python のいずれかを使用します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 使用するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • METADATA_STORE: アーティファクトが作成されるメタデータ ストア ID。デフォルトのメタデータ ストアの名前は default です。
  • PAGE_SIZE: 省略可。返されるアーティファクトの最大数。この値が指定されていない場合は、最大 100 件のレコードが返されます。
  • PAGE_TOKEN: 省略可。前回取得した MetadataService.ListArtifacts 呼び出しのページトークン。次の結果ページを取得するには、このトークンを指定します。
  • FILTER: 結果セットにアーティファクトを含めるために必要な条件を指定します。

HTTP メソッドと URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/artifacts?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN&filter=FILTER

リクエストを送信するには、次のいずれかのオプションを開きます。

出力は次のようになります。ARTIFACT_ID は、アーティファクト レコードの ID です。

{
  "artifacts": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/default/artifacts/ARTIFACT_ID",
      "displayName": "Example artifact",
      "uri": "gs://your_bucket_name/artifacts/dataset.csv",
      "etag": "67891011",
      "createTime": "2021-05-18T00:33:13.833Z",
      "updateTime": "2021-05-18T00:33:13.833Z",
      "state": "LIVE",
      "schemaTitle": "system.Dataset",
      "schemaVersion": "0.0.1",
      "metadata": {
        "payload_format": "CSV"
      },
      "description": "Description of the example artifact."
    },
    {
      "name": "projects/PROJECT_ID/locations/LOCATION/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID",
      "displayName": "Another example artifact",
      "uri": "gs://your_bucket_name/artifacts/dataset-2.csv",
      "etag": "67891012",
      "createTime": "2021-05-18T00:29:24.344Z",
      "updateTime": "2021-05-18T00:29:24.344Z",
      "state": "LIVE",
      "schemaTitle": "system.Dataset",
      "schemaVersion": "0.0.1",
      "metadata": {
        "payload_format": "CSV"
      },
      "description": "Description of the other example artifact."
    }
  ]
}

Python

Python

from typing import Optional

from google.cloud import aiplatform


def list_artifact_sample(
    project: str,
    location: str,
    display_name_filter: Optional[str] = "display_name=\"my_model_*\"",
    create_date_filter: Optional[str] = "create_time>\"2022-06-11\"",
    order_by: Optional[str] = None,
):
    aiplatform.init(project=project, location=location)

    combined_filters = f"{display_name_filter} AND {create_date_filter}"
    return aiplatform.Artifact.list(
        filter=combined_filters,
        order_by=order_by,
    )

  • project: 実際のプロジェクト ID。これらの ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
  • location: 利用可能なロケーションの一覧をご覧ください。
  • display_name_filter: リソースの一覧表示中に表示名に適用されるフィルタ。display_name=\"my_filter\" という形式で指定します。
  • create_date_filter: リソースの一覧表示中に create_date 名に適用されるフィルタ。create_time>\"2022-06-11T12:30:00-08:00\" の形式で指定します。

既存のアーティファクトを削除する

アーティファクトを削除するには、REST または Vertex AI SDK for Python のいずれかを使用します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 使用するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • METADATA_STORE: アーティファクトが作成されるメタデータ ストア ID。デフォルトのメタデータ ストアの名前は default です。
  • ARTIFACT_ID: 削除するアーティファクト レコードの ID。

HTTP メソッドと URL:

DELETE https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID

リクエストを送信するには、次のいずれかのオプションを開きます。

出力は次のようになります。レスポンスの OPERATION_ID を使用して、オペレーションのステータスを取得できます。

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/artifacts/ARTIFACT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeleteOperationMetadata",
    "genericMetadata": {
      "createTime": "2021-07-21T20:05:30.179713Z",
      "updateTime": "2021-07-21T20:05:30.179713Z"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Python

Python

from google.cloud import aiplatform


def delete_artifact_sample(
    artifact_id: str,
    project: str,
    location: str,
):
    artifact = aiplatform.Artifact.get(
        resource_id=artifact_id, project=project, location=location
    )
    artifact.delete()

アーティファクトをパージする

フィルタ条件に基づいて複数のアーティファクトを削除するには、次の操作を行います。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 使用するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • METADATA_STORE: アーティファクトが作成されるメタデータ ストア ID。デフォルトのメタデータ ストアの名前は default です。
  • FILTER: 削除するアーティファクトに必要な条件を指定します。例:
    • 表示名に example を含むすべてのアーティファクトをフィルタする場合: "display_name = \"*example*\""
    • 2020-11-19T11:30:00-04:00 より前に作成されたすべてのアーティファクトをフィルタする場合: "create_time < \"2020-11-19T11:30:00-04:00\""
  • FORCE: 実際のパージを実行するかどうかを示します。このフラグを false に設定すると、削除対象のアーティファクト名のサンプルが返されます。

HTTP メソッドと URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/artifacts:purge

リクエストの本文(JSON):

{
  "filter": "FILTER",
  "force": FORCE
}

リクエストを送信するには、次のいずれかのオプションを開きます。

出力は次のようになります。レスポンスの OPERATION_ID からオペレーションのステータスを取得できます。

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.PurgeArtifactsMetadata",
    "genericMetadata": {
      "createTime": "2021-07-21T21:02:33.757991Z",
      "updateTime": "2021-07-21T21:02:33.757991Z"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.PurgeArtifactsResponse",
    "purgeCount": "15"
  }
}

実行管理

実行の作成

実行は、ML ワークフローのステップを表します。実行を作成するには、REST または Vertex AI SDK for Python のいずれかを使用します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 使用するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • METADATA_STORE: 実行が作成されたメタデータ ストア ID。デフォルトのメタデータ ストアの名前は default です。
  • EXECUTION_ID: 実行レコードの ID。実行 ID が指定されていない場合、この実行の固有識別子が Vertex ML Metadata により作成されます。
  • DISPLAY_NAME: 実行の表示名。このフィールドには、最大 128 文字の Unicode 文字を使用できます。
  • EXECUTION_STATE: 省略可。実行の現在の状態を表す State 列挙型の値。このフィールドは、クライアント アプリケーションが管理します。Vertex ML Metadata は状態遷移の妥当性を確認しません。
  • METADATA_SCHEMA_TITLE: メタデータ フィールドを記述するスキーマのタイトル。スキーマのタイトルは . の形式にする必要があります。名前空間名は 2~20 文字にし、先頭を小文字にします。名前には文字と数字を使用できます。スキーマ名は 2~49 文字にし、先頭は大文字にする必要があります。名前には英字と数字を使用できます。
  • METADATA_SCHEMA_VERSION: 省略可。メタデータ フィールドを記述するスキーマのバージョン。schema_version は、1.0.0、1.0.1 のように、3 つの数字をピリオドで区切った文字列にする必要があります。この形式はバージョンの順序付けや比較に役立ちます。
  • METADATA: 省略可。実行を記述するプロパティ(実行のパラメータなど)。
  • DESCRIPTION: 省略可。人が読める形式の文字列。作成する実行の目的を記述します。
  • LABELS: 省略可。実行を編成するためのユーザー定義のメタデータ。

HTTP メソッドと URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions?executionId=EXECUTION_ID

リクエストの本文(JSON):

{
  "displayName": "DISPLAY_NAME",
  "state": "EXECUTION_STATE",
  "schemaTitle": "METADATA_SCHEMA_TITLE",
  "schemaVersion": "METADATA_SCHEMA_VERSION",
  "metadata": {
    METADATA
  },
  "labels": {"LABEL_1":"LABEL_2"},
  "description": "DESCRIPTION"

}

リクエストを送信するには、次のいずれかのオプションを開きます。

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID",
  "displayName": "Example Execution",
  "etag": "67891011",
  "labels": {
    "test_label": "test_label_value"
  },
  "createTime": "2021-05-18T00:04:49.659Z",
  "updateTime": "2021-05-18T00:04:49.659Z",
  "schemaTitle": "system.Run",
  "schemaVersion": "0.0.1",
  "metadata": {},
  "description": "Description of the example execution."
}

Python

Python

from typing import Any, Dict, List, Optional

from google.cloud import aiplatform
from google.cloud.aiplatform.metadata.schema.system import execution_schema


def create_execution_sample(
    display_name: str,
    input_artifacts: List[aiplatform.Artifact],
    output_artifacts: List[aiplatform.Artifact],
    project: str,
    location: str,
    execution_id: Optional[str] = None,
    metadata: Optional[Dict[str, Any]] = None,
    schema_version: Optional[str] = None,
    description: Optional[str] = None,
):
    aiplatform.init(project=project, location=location)

    with execution_schema.ContainerExecution(
        display_name=display_name,
        execution_id=execution_id,
        metadata=metadata,
        schema_version=schema_version,
        description=description,
    ).create() as execution:
        execution.assign_input_artifacts(input_artifacts)
        execution.assign_output_artifacts(output_artifacts)
        return execution
  • display_name: 実行の表示名。このフィールドには、最大 128 文字の Unicode 文字を使用できます。
  • input_artifacts: 入力アーティファクトを表す aiplatform.Artifact の 1 つ以上のインスタンスを含むリスト。
  • output_artifacts: 出力アーティファクトを表す aiplatform.Artifact の 1 つ以上のインスタンスを含むリスト。
  • project: 実際のプロジェクト ID。これらの ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
  • location: 利用可能なロケーションの一覧をご覧ください。
  • execution_id: 実行レコードの ID。実行 ID が指定されていない場合、この実行の固有識別子が Vertex ML Metadata により作成されます。
  • metadata: 実行のパラメータなど、実行を記述するプロパティ。
  • schema_version: メタデータ フィールドを記述するスキーマのバージョン。
  • description: 省略可。人が読める形式の文字列。作成する実行の目的を記述します。

既存の実行を検索する

既存の実行を検索するには、REST または Vertex AI SDK for Python のいずれかを使用します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 使用するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • METADATA_STORE: 実行が作成されたメタデータ ストア ID。デフォルトのメタデータ ストアの名前は default です。
  • PAGE_SIZE: 省略可。返されるアーティファクトの最大数。この値が指定されていない場合は、最大 100 件のレコードが返されます。
  • PAGE_TOKEN: 省略可。前回取得した MetadataService.ListArtifacts 呼び出しのページトークン。次の結果ページを取得するには、このトークンを指定します。
  • FILTER: 結果セットに実行を含めるために必要な条件を指定します。

HTTP メソッドと URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN&filter=FILTER

リクエストを送信するには、次のいずれかのオプションを開きます。

出力は次のようになります。EXECUTION_ID は、実行レコードの ID です。

{
  "executions": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID",
      "displayName": "Example execution 1",
      "etag": "67891011",
      "createTime": "2021-05-18T00:06:56.177Z",
      "updateTime": "2021-05-18T00:06:56.177Z",
      "schemaTitle": "system.Run",
      "schemaVersion": "0.0.1",
      "metadata": {},
      "description": "Description of the example execution."
    },
    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID",
      "displayName": "Example execution 2",
      "etag": "67891011",
      "createTime": "2021-05-18T00:04:49.659Z",
      "updateTime": "2021-05-18T00:04:49.659Z",
      "schemaTitle": "system.Run",
      "schemaVersion": "0.0.1",
      "metadata": {},
      "description": "Description of the example execution."
    }
  ]
}

Python

Python

from google.cloud import aiplatform


def get_execution_sample(
    execution_id: str,
    project: str,
    location: str,
):
    execution = aiplatform.Execution.get(
        resource_id=execution_id, project=project, location=location
    )

    return execution

既存の実行を削除する

実行を削除するには、REST または Vertex AI SDK for Python のいずれかを使用します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 使用するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • METADATA_STORE: 実行が作成されたメタデータ ストア ID。デフォルトのメタデータ ストアの名前は default です。
  • EXECUTION_ID: 削除する実行レコードの ID。

HTTP メソッドと URL:

DELETE https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID

リクエストを送信するには、次のいずれかのオプションを開きます。

出力は次のようになります。レスポンスの OPERATION_ID を使用して、オペレーションのステータスを取得できます。

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions/EXECUTION_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeleteOperationMetadata",
    "genericMetadata": {
      "createTime": "2021-07-21T20:05:30.179713Z",
      "updateTime": "2021-07-21T20:05:30.179713Z"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Python

Python

from google.cloud import aiplatform


def delete_execution_sample(
    execution_id: str,
    project: str,
    location: str,
):
    execution = aiplatform.Execution.get(
        resource_id=execution_id, project=project, location=location
    )
    execution.delete()

実行をパージする

フィルタに基づいて複数の実行を削除するには、次の操作を行います。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 使用するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • METADATA_STORE: 実行が作成されたメタデータ ストア ID。デフォルトのメタデータ ストアの名前は default です。
  • FILTER: 削除する実行に必要な条件を指定します。例:
    • 表示名に example を含むすべての実行をフィルタする場合: "display_name = \"*example*\""
    • 2020-11-19T11:30:00-04:00 より前に作成されたすべての実行をフィルタする場合: "create_time < \"2020-11-19T11:30:00-04:00\""
  • FORCE: 実際のパージを実行するかどうかを示します。このフラグを false に設定すると、削除対象のアーティファクト名のサンプルが返されます。

HTTP メソッドと URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/executions:purge

リクエストの本文(JSON):

{
  "filter": "FILTER",
  "force": FORCE
}

リクエストを送信するには、次のいずれかのオプションを開きます。

出力は次のようになります。レスポンスの OPERATION_ID からオペレーションのステータスを取得できます。

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.PurgeExecutionsMetadata",
    "genericMetadata": {
      "createTime": "2021-07-21T21:02:45.757991Z",
      "updateTime": "2021-07-21T21:02:45.757991Z"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.PurgeExecutionsResponse",
    "purgeCount": "2"
  }
}

コンテキスト管理

コンテキストを作成する

コンテキストを使用すると、アーティファクトと実行の複数のセットをグループ化できます。コンテキストを作成するには、REST または Vertex AI SDK for Python のいずれかを使用します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 使用するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • METADATA_STORE: 実行が作成されたメタデータ ストア ID。デフォルトのメタデータ ストアの名前は default です。
  • CONTEXT_ID: 省略可。コンテキスト レコードの ID。コンテキスト ID が指定されていない場合、このコンテキストの固有識別子が Vertex ML Metadata により作成されます。
  • DISPLAY_NAME: コンテキストの表示名。このフィールドには、最大 128 文字の Unicode 文字を使用できます。
  • PARENT_CONTEXT: 親コンテキストのリソース名を指定します。1 つのコンテキストに指定できる親コンテキストは 10 個までです。
  • METADATA_SCHEMA_TITLE: メタデータ フィールドを記述するスキーマのタイトル。スキーマのタイトルは . の形式にする必要があります。名前空間名は 2~20 文字にし、先頭を小文字にします。名前には文字と数字を使用できます。スキーマ名は 2~49 文字にし、先頭は大文字にする必要があります。名前には英字と数字を使用できます。
  • METADATA_SCHEMA_VERSION: 省略可。メタデータ フィールドを記述するスキーマのバージョン。schema_version は、1.0.0、1.0.1 のように、3 つの数字をピリオドで区切った文字列にする必要があります。この形式はバージョンの順序付けや比較に役立ちます。
  • METADATA: コンテキストを記述するプロパティ(コンテキスト パラメータなど)。
  • DESCRIPTION: 省略可。人が読める形式の文字列。作成する実行の目的を記述します。
  • LABELS: 省略可。コンテキストを編成するためのユーザー定義のメタデータ。

HTTP メソッドと URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts?contextId=CONTEXT_ID

リクエストの本文(JSON):

{
  "displayName": "DISPLAY_NAME:",
  "parentContexts": [
    "PARENT_CONTEXT_1",
    "PARENT_CONTEXT_2"
  ],
  "schemaTitle": "METADATA_SCHEMA_TITLE",
  "schemaVersion": "METADATA_SCHEMA_VERSION",
  "metadata": {
    METADATA
  },
  "labels": {"LABEL_1":"LABEL_2"},
  "description": "DESCRIPTION"

}

リクエストを送信するには、次のいずれかのオプションを開きます。

出力は次のようになります。CONTEXT_ID は、コンテキスト レコードの ID です。

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT_ID",
  "displayName": "Example context:",
  "etag": "67891011",
  "labels": {
    "test_label": "test_label_value"
  },
  "createTime": "2021-05-18T01:52:51.642Z",
  "updateTime": "2021-05-18T01:52:51.642Z",
  "schemaTitle": "system.Experiment",
  "schemaVersion": "0.0.1",
  "metadata": {},
  "description": "Description of the example context."
}

Python

Python

from typing import Any, Dict, Optional

from google.cloud import aiplatform
from google.cloud.aiplatform.metadata.schema.system import context_schema


def create_context_sample(
    display_name: str,
    project: str,
    location: str,
    context_id: Optional[str] = None,
    metadata: Optional[Dict[str, Any]] = None,
    schema_version: Optional[str] = None,
    description: Optional[str] = None,
):
    aiplatform.init(project=project, location=location)

    return context_schema.Experiment(
        display_name=display_name,
        context_id=context_id,
        metadata=metadata,
        schema_version=schema_version,
        description=description,
    ).create()
  • display_name: コンテキストの表示名。このフィールドには、最大 128 文字の Unicode 文字を使用できます。
  • project: 実際のプロジェクト ID。これらの ID は、Google Cloud コンソールの [ようこそ] ページで確認できます。
  • location: 利用可能なロケーションの一覧をご覧ください。
  • context_id: 省略可。コンテキスト レコードの ID。
  • metadata: コンテキストを記述するプロパティ(コンテキスト パラメータなど)。
  • schema_version: メタデータ フィールドを記述するスキーマのバージョン。
  • description: 省略可。人が読める形式の文字列。作成するコンテキストの目的を記述します。

既存のコンテキストを検索する

既存のコンテキストを検索するには、REST または Vertex AI SDK for Python のいずれかを使用します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 使用するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • METADATA_STORE: コンテキストが作成されたメタデータ ストア ID。デフォルトのメタデータ ストアの名前は default です。
  • PAGE_SIZE: 省略可。返されるアーティファクトの最大数。この値が指定されていない場合は、最大 100 件のレコードが返されます。
  • PAGE_TOKEN: 省略可。前回取得した MetadataService.ListArtifacts 呼び出しのページトークン。次の結果ページを取得するには、このトークンを指定します。
  • FILTER: 結果セットにコンテキストを含めるために必要な条件を指定します。

HTTP メソッドと URL:

GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts?pageSize=PAGE_SIZE&pageToken=PAGE_TOKEN&filter=FILTER

リクエストを送信するには、次のいずれかのオプションを開きます。

出力は次のようになります。CONTEXT_ID は、コンテキスト レコードの ID です。

{
  "contexts": [
    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT_ID",
      "displayName": "Experiment 1",
      "etag": "67891011",
      "createTime": "2021-05-18T22:36:02.153Z",
      "updateTime": "2021-05-18T22:36:02.153Z",
      "parentContexts": [],
      "schemaTitle": "system.Experiment",
      "schemaVersion": "0.0.1",
      "metadata": {}
    },
    {
      "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT_ID",
      "displayName": "Pipeline run 1",
      "etag": "67891011",
      "createTime": "2021-05-18T22:35:02.600Z",
      "updateTime": "2021-05-18T22:35:02.600Z",
      "parentContexts": [],
      "schemaTitle": "system.PipelineRun",
      "schemaVersion": "0.0.1",
      "metadata": {}
    }
  ]
}

Python

Python

from google.cloud import aiplatform


def get_context_sample(
    context_id: str,
    project: str,
    location: str,
):
    context = aiplatform.Context.get(
        resource_id=context_id, project=project, location=location)
    return context

既存のコンテキストを削除する

コンテキストを削除するには、REST または Vertex AI SDK for Python のいずれかを使用します。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 使用するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • METADATA_STORE: コンテキストが作成されたメタデータ ストア ID。デフォルトのメタデータ ストアの名前は default です。
  • CONTEXT_ID: 省略可。コンテキスト レコードの ID。

HTTP メソッドと URL:

DELETE https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT_ID

リクエストを送信するには、次のいずれかのオプションを開きます。

出力は次のようになります。レスポンスの OPERATION_ID を使用して、オペレーションのステータスを取得できます。

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts/CONTEXT_ID/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.DeleteOperationMetadata",
    "genericMetadata": {
      "createTime": "2021-07-21T20:05:30.179713Z",
      "updateTime": "2021-07-21T20:05:30.179713Z"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.protobuf.Empty"
  }
}

Python

Python

from google.cloud import aiplatform


def delete_context_sample(
    context_id: str,
    project: str,
    location: str,
):
    context = aiplatform.Context.get(
        resource_id=context_id, project=project, location=location
    )
    context.delete()

コンテキストをパージする

フィルタ条件に基づいて複数のコンテキストを削除するには、次の操作を行います。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION_ID: 使用するリージョン。
  • PROJECT_ID: 実際のプロジェクト ID
  • METADATA_STORE: コンテキストが作成されたメタデータ ストア ID。デフォルトのメタデータ ストアの名前は default です。
  • FILTER: コンテキストの削除に必要な条件を指定します。例:
    • 表示名に example を含むすべてのコンテキストをフィルタする場合: "display_name = \"*example*\""
    • 2020-11-19T11:30:00-04:00 より前に作成されたすべてのコンテキストをフィルタする場合: "create_time < \"2020-11-19T11:30:00-04:00\""
  • FORCE: 実際のパージを実行するかどうかを示します。このフラグを false に設定すると、削除対象のコンテキスト名のサンプルが返されます。

HTTP メソッドと URL:

POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/contexts:purge

リクエストの本文(JSON):

{
  "filter": "FILTER",
  "force": FORCE
}

リクエストを送信するには、次のいずれかのオプションを開きます。

出力は次のようになります。レスポンスの OPERATION_ID からオペレーションのステータスを取得できます。

{
  "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/operations/OPERATION_ID",
  "metadata": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.PurgeContextsMetadata",
    "genericMetadata": {
      "createTime": "2021-07-21T21:02:40.757991Z",
      "updateTime": "2021-07-21T21:02:40.757991Z"
    }
  },
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.cloud.aiplatform.v1.PurgeContextsResponse",
    "purgeCount": "5"
  }
}

次のステップ