Vertex ML Metadata は、事前定義のシステム スキーマに加えて、カスタム スキーマを使用した拡張可能なデータモデルを提供します。カスタム スキーマは、ユーザー定義の MetadataSchema です。カスタム スキーマを使用してメタデータ プロパティの型をチェックし、スキーマごとにリソースをクエリします(たとえば、MyCustomModel
型のすべてのアーティファクトを一覧表示します)。
カスタム スキーマを定義するには、想定されるスキーマを記述する特定の MetadataStore 内に MetadataSchema リソースを作成する必要があります。スキーマ形式は OpenAPI 3.0 仕様{class: external}のサブセットですが、トップレベルのスキーマは object
型にする必要があります。このトップレベルのスキーマ オブジェクトのプロパティとして、OpenAPI 3.0 でサポートされているすべてのデータ型(integer、number、string、boolean、array、object など)がサポートされています。ただし、プロパティ セクションの各フィールドに割り当てることができるデータ型は 1 つだけです。混合型はサポートされていません。最小、最大、複数、文字列形式などの高度なデータ要件もサポートされていません。
独自のカスタム スキーマを登録する方法
カスタム MetadataSchema の作成プロセスは、新しいメタデータ リソースの作成と似ています。次の手順では、サンプルの MetadataSchema を作成する方法を示します。MetadataSchema のスコープは、関連付けられた MetadataStore に限定されます。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- LOCATION_ID: MetadataStore のリージョン。
- PROJECT_ID: プロジェクト ID またはプロジェクト番号。
- METADATA_STORE: MetadataSchema が作成される MetadataStore ID。デフォルトのメタデータ ストアの名前は
default
です。新しい MetadataStore が必要でない限り、デフォルトのストアを使用できます。 - METADATA_SCHEMA_ID: 省略可。MetadataSchema レコードの ID。ID が指定されていない場合、この MetadataSchema の固有識別子が Vertex ML Metadata により作成されます。
- METADATA_SCHEMA_TITLE: メタデータ フィールドを記述するスキーマのタイトル。スキーマのタイトルは
. の形式にする必要があります。名前空間名は 2~20 文字にし、先頭を小文字にします。名前には文字と数字を使用できます。スキーマ名は 2~49 文字にし、先頭は大文字にする必要があります。名前には英字と数字を使用できます。 - METADATA_SCHEMA_VERSION: 省略可。メタデータ フィールドを記述するスキーマのバージョン。
schema_version
は、1.0.0、1.0.1 のように、3 つの数字をピリオドで区切った文字列にする必要があります。この形式はバージョンの順序付けや比較に役立ちます。 - METADATA_SCHEMA_TYPE: 作成されたスキーマが適用されるメタデータ リソースのタイプ。タイプは
ARTIFACT_TYPE
、EXECUTION_TYPE
、またはCONTEXT_TYPE
です。 - METADATA_SCHEMA: 作成する詳細なスキーマ。
- DESCRIPTION: 省略可。人が読める形式の文字列。作成する実行の目的を記述します。
- ARTIFACT_ID: 省略可。アーティファクト レコードの ID。アーティファクト ID が指定されていない場合、このアーティファクトの固有識別子が Vertex ML Metadata により作成されます。
- DISPLAY_NAME: 省略可。アーティファクトのユーザー定義の名前。
HTTP メソッドと URL:
POST https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/metadataSchemas?metadata_schema_id=METADATA_SCHEMA_ID
リクエストの本文(JSON):
{ "schemaVersion": "0.0.1", "schema": "title: test.Experiment\ntype: object", "schemaType": "CONTEXT_TYPE", }
リクエストを送信するには、次のいずれかのオプションを開きます。
出力は次のようになります。METADATA_SCHEMA_ID は、MetadataSchema レコードの ID です。
{ "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/METADATA_STORE/metadataSchemas/METADATA_SCHEMA_ID", "schemaVersion": "0.0.1", "schema": "title: test.Experiment\ntype: object", "schemaType": "CONTEXT_TYPE", "createTime": "2021-04-06T05:24:04.575481815Z" }
schema_title フィールドに名前(demo.Artifact)を指定し、Artifact リソースの schema_version にバージョン(0.0.1)を指定することで、アーティファクトを作成、取得、一覧表示するための後続の呼び出しでこのスキーマを参照できます。メタデータ リソースを作成、取得、一覧表示する方法については、Vertex ML Metadata の追跡をご覧ください。
スキーマをバージョニングする
MetadataSchema のすべてのリソースはバージョニングされます。別のスキーマと schema_title が同じで、schema_version が異なるスキーマを作成できます。別のバージョンの metadataSchema リソースを作成する場合、異なるバージョン番号と変更されたスキーマ コンテンツを指定できます。
次の例では、バージョン 0.0.2 の demo.Artifact スキーマを作成します。
sample_schema_versioned = aip.MetadataSchema()
sample_schema_versioned.schema_type = aip.MetadataSchema.MetadataSchemaType.ARTIFACT_TYPE
sample_schema_versioned.schema ="title: demo.Artifact\ntype: object\nproperties:\n framework:\n type: string\n description: \"The framework type\"\n model_version:\n type: integer\n description: \"The version of the model\""
sample_schema_versioned.schema_version = "0.0.2"
sample_schema_versioned.description = "sample schema 2"
store_client.create_metadata_schema(parent=metadata_store.name, metadata_schema=sample_schema_versioned)
スキーマ内のフィールドは常にオプションとみなされるため、同じ schema_title のバージョン間に下位互換性や上位互換性はありません。schema_title を使用して、分析するリソースのフィルタリングやグループ化を行うことができます。フィルタ関数の使用方法については、Vertex ML Metadata の分析をご覧ください。