Benutzerdefinierte Schemas erstellen und verwenden

Zusätzlich zu den vordefinierten Systemschemas bieten Vertex ML Metadata ein erweiterbares Datenmodell über benutzerdefinierte Schemas. Benutzerdefinierte Schemas sind benutzerdefinierte Metadatenschemas. Verwenden Sie benutzerdefinierte Schemas, um Metadatenattribute zu überprüfen und Ressourcen nach Schema abzufragen. Beispiel: „Alle Artefakte vom Typ MyCustomModel auflisten“.

Wenn Sie ein benutzerdefiniertes Schema definieren möchten, müssen Sie eine MetadataSchema-Ressource innerhalb eines bestimmten MetadataStore erstellen, der das erwartete Schema beschreibt. Das Schemaformat ist eine Teilmenge der OpenAPI 3.0-Spezifikation{class: external}, mit der Einschränkung, dass das übergeordnete Schema vom Typ object sein muss. Alle von OpenAPI 3.0 unterstützten Datentypen (z. B. Ganzzahl, Zahl, String, boolescher Wert, Array, Objekt) werden als Attribute dieses übergeordneten Schemaobjekts unterstützt. Eine Einschränkung besteht darin, dass jedes Feld unter „Attribute“ nur einem Datentyp zugewiesen werden kann. Gemischte Typen werden nicht unterstützt. Erweiterte Datenanforderungen wie Minimum, Maximum, Vielfach und Stringformate werden ebenfalls nicht unterstützt.

Eigene benutzerdefinierte Schemas registrieren

Das Erstellen eines benutzerdefinierten MetadataSchema ähnelt dem Erstellen neuer Metadatenressourcen. In der folgenden Anleitung wird gezeigt, wie Sie ein Beispiel-MetadataSchema erstellen. MetadataSchemas sind nur auf den zugehörigen MetadataStore beschränkt.

REST

Ersetzen Sie dabei folgende Werte für die Anfragedaten:

  • LOCATION_ID: die Region Ihres MetadataStore.
  • PROJECT_ID: die Projekt-ID bzw. Projektnummer.
  • METADATA_STORE: die MetadataStore-ID, in der das MetadataSchema erstellt wird. Der Standardmetadatenspeicher heißt default. Sie können den Standardspeicher verwenden, sofern kein neuer MetadataStore erforderlich ist.
  • METADATA_SCHEMA_ID: (optional) die ID des MetadataSchema-Eintrags. Wenn die ID nicht angegeben wird, erstellt Vertex ML Metadata eine eindeutige Kennung für dieses MetadataSchema.
  • METADATA_SCHEMA_TITLE: der Titel des Schemas, das das Metadatenfeld beschreibt. Der Titel des Schemas muss das Format "." haben. Der Namespace muss mit einem Kleinbuchstaben beginnen, kann Kleinbuchstaben und Ziffern enthalten und kann zwischen 2 und 20 Zeichen lang sein. Der Schemaname muss mit einem Großbuchstaben beginnen, kann Buchstaben und Ziffern enthalten und zwischen 2 und 49 Zeichen lang sein.
  • METADATA_SCHEMA_VERSION: Die Version des Schemas, das das Metadatenfeld beschreibt. schema_version muss ein String mit drei Zahlen sein, die durch Punkte getrennt sind, z. B. 1.0.0, 1.0.1. Dieses Format vereinfacht das Sortieren und Vergleichen von Versionen.
  • METADATA_SCHEMA_TYPE: Der Typ der Metadatenressource, für die das erstellte Schema gilt. Die Typen sind: ARTIFACT_TYPE, EXECUTION_TYPE oder CONTEXT_TYPE.
  • METADATA_SCHEMA: das zu erstellende detaillierte Schema.
  • DESCRIPTION: (Optional) Ein menschenlesbarer String, der den Zweck der zu erstellenden Ausführung beschreibt.
  • ARTIFACT_ID: (Optional) Die ID des Artefakteintrags. Wenn die Artefakt-ID nicht angegeben ist, erstellt Vertex ML-Metadaten eine eindeutige Kennzeichnung für dieses Artefakt.
  • DISPLAY_NAME: (optional) Der benutzerdefinierte Name des Artefakts.

HTTP-Methode und 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-Text anfordern:

{
    "schemaVersion": "0.0.1",
    "schema": "title: test.Experiment\ntype: object",
    "schemaType": "CONTEXT_TYPE",
}

Wenn Sie die Anfrage senden möchten, maximieren Sie eine der folgenden Optionen:

Die Ausgabe sieht in etwa so aus: Sie können METADATA_SCHEMA_ID verwenden, die ID des MetadataSchema-Eintrags.

{
  "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"
}

Nachfolgende Aufrufe zum Erstellen, Abrufen oder Auflisten von Artefakten können dann auf dieses Schema verweisen. Dazu geben Sie den Namen (demo.Artifact) im Feld schema_title und die Version (0.0.1) in der schema_version der Artefaktressource an. Weitere Informationen zum Erstellen, Abrufen oder Auflisten von Metadatenressourcen finden Sie unter Vertex ML-Metadaten verfolgen.

Schemas versionieren

Alle MetadataSchema-Ressourcen sind versioniert. Ein Nutzer kann ein Schema erstellen, das denselben schema_title wie ein anderes Schema, aber eine andere schema_version verwendet. Zum Erstellen einer metadataSchema-Ressource mit einer anderen Version kann ein Nutzer eine andere Versionsnummer und einen geänderten Schemainhalt angeben.

Im folgenden Beispiel wird eine 0.0.2-Version des demo.Artifact-Schemas erstellt:

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)

Felder im Schema werden immer als optional angesehen. Daher gibt es keine Abwärts- oder Aufwärtskompatibilität zwischen Versionen desselben schema_title. Nutzer können weiterhin den schema_title verwenden, um Ressourcen zur Analyse zu filtern und zu gruppieren. Weitere Informationen zur Verwendung von Filterfunktionen finden Sie unter Vertex ML Metadata analysieren.

Nächste Schritte