Creazione e utilizzo di schemi personalizzati

Oltre agli schemi di sistema predefiniti, Vertex ML Metadata fornisce un modello dei dati estendibile tramite schemi personalizzati. Gli schemi personalizzati sono MetadataSchemas definiti dall'utente. Utilizza gli schemi personalizzati per eseguire il controllo del tipo delle proprietà dei metadati e per eseguire query sulle risorse in base allo schema, ad esempio "elenca tutti gli elementi di tipo MyCustomModel".

Per definire uno schema personalizzato, devi creare una risorsa MetadataSchema all'interno di un MetadataStore specifico che descriva lo schema previsto. Il formato dello schema è un sottoinsieme della specifica OpenAPI 3.0{class: external}, con la limitazione che lo schema di primo livello deve essere di tipo object. Tutti i tipi di dati supportati da OpenAPI 3.0 (ad es. intero, numero, stringa, booleano, array, oggetto) sono supportati come proprietà di questo oggetto schema di primo livello. Una limitazione è che ogni campo nella sezione delle proprietà può essere assegnato a un solo tipo di dati. I tipi misti non sono supportati. Inoltre, non sono supportati requisiti dei dati avanzati come Minimo, Massimo, Moltiplicatori e formati di stringa.

Come registrare i tuoi schemi personalizzati

La procedura per creare uno schema di metadati personalizzato è simile alla creazione di nuove risorse di metadati. Le istruzioni riportate di seguito mostrano come creare un MetadataSchema di esempio. Gli schemi di metadati hanno come ambito solo il corrispondente MetadataStore.

REST

Prima di utilizzare i dati della richiesta, apporta le seguenti sostituzioni:

  • LOCATION_ID: la regione del tuo MetadataStore.
  • PROJECT_ID: il numero o l'ID progetto.
  • METADATA_STORE: l'ID del repository dei metadati in cui viene creato MetadataSchema. L'archivio dei metadati predefinito si chiama default. A meno che non sia necessario un nuovo MetadataStore, puoi utilizzare quello predefinito.
  • METADATA_SCHEMA_ID: (Facoltativo) L'ID del record MetadataSchema. Se l'ID non è specificato, Vertex ML Metadata crea un identificatore univoco per questo MetadataSchema.
  • METADATA_SCHEMA_TITLE: il titolo dello schema che descrive il campo dei metadati. Il titolo dello schema deve soddisfare il formato ".". Lo spazio dei nomi deve iniziare con una lettera minuscola, può contenere caratteri minuscoli e numeri e può essere lungo da due a venti caratteri. Il nome dello schema deve iniziare con una lettera maiuscola, può includere lettere e numeri e può avere una lunghezza compresa tra due e quaranta caratteri.
  • METADATA_SCHEMA_VERSION: (facoltativo) la versione dello schema che descrive il campo dei metadati. schema_version deve essere una stringa di tre numeri separati da punti, ad esempio 1.0.0, 1.0.1. Questo formato consente di ordinare e confrontare le versioni.
  • METADATA_SCHEMA_TYPE: il tipo di risorsa di metadati a cui si applica lo schema creato. I tipi sono: ARTIFACT_TYPE, EXECUTION_TYPE o CONTEXT_TYPE.
  • METADATA_SCHEMA: lo schema dettagliato da creare.
  • DESCRIPTION: (facoltativo) una stringa leggibile che descrive lo scopo dell'esecuzione da creare.
  • ARTIFACT_ID: (facoltativo) l'ID del record dell'elemento. Se l'ID artefatto non è specificato, Vertex ML Metadata crea un identificatore univoco per questo artefatto.
  • DISPLAY_NAME: (Facoltativo) il nome definito dall'utente dell'elemento.

Metodo HTTP e 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

Corpo JSON della richiesta:

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

Per inviare la richiesta, espandi una di queste opzioni:

Dovresti vedere un output simile al seguente. Puoi utilizzareMETADATA_SCHEMA_ID è l'ID del record MetadataSchema.

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

Le chiamate successive per creare, recuperare o elencare gli elementi possono fare riferimento a questo schema specificando il nome (demo.Artifact) nel campo schema_title e la versione (0.0.1) in schema_version della risorsa Artifact. Per ulteriori informazioni su come creare, recuperare o elencare le risorse di metadati, consulta Monitorare i metadati di Vertex ML.

Esegui il controllo delle versioni degli schemi

Tutte le risorse MetadataSchema sono versionate. Un utente può creare uno schema che utilizza lo stesso schema_title di un altro schema, ma una schema_version diversa. Per creare una risorsa metadataSchema con una versione diversa, un utente può fornire un numero di versione diverso e contenuti dello schema modificati.

L'esempio seguente crea una versione 0.0.2 dello schema 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)

I campi nello schema sono sempre considerati facoltativi, pertanto non esiste alcuna compatibilità con le versioni precedenti o successive tra le versioni dello stesso schema_title. Gli utenti possono comunque utilizzare schema_title per filtrare e raggruppare le risorse per l'analisi. Per ulteriori informazioni su come utilizzare le funzioni di filtro, consulta Analisi dei metadati di Vertex ML.

Passaggi successivi