Crear y utilizar esquemas personalizados

Además de los esquemas de sistema predefinidos, Vertex ML Metadata proporciona un modelo de datos extensible mediante esquemas personalizados. Los esquemas personalizados son MetadataSchemas definidos por el usuario. Usa esquemas personalizados para comprobar el tipo de las propiedades de metadatos y para consultar recursos por esquema. Por ejemplo, "lista todos los artefactos de tipo MyCustomModel".

Para definir un esquema personalizado, debes crear un recurso MetadataSchema en un MetadataStore específico que describa el esquema esperado. El formato del esquema es un subconjunto de la especificación OpenAPI 3.0{class: external}, con la restricción de que el esquema de nivel superior debe ser de tipo object. Se admiten todos los tipos de datos compatibles con OpenAPI 3.0 (por ejemplo, entero, número, cadena, booleano, matriz y objeto) como propiedades de este objeto de esquema de nivel superior. Una restricción es que cada campo de la sección de propiedades solo se puede asignar a un tipo de datos. No se admiten tipos mixtos. Tampoco se admiten requisitos de datos avanzados, como mínimo, máximo, múltiplos y formatos de cadena.

Cómo registrar tus propios esquemas personalizados

El proceso para crear un MetadataSchema personalizado es similar al que se sigue para crear recursos de metadatos. En las siguientes instrucciones se muestra cómo crear un ejemplo de MetadataSchema. Los MetadataSchemas solo se aplican a su MetadataStore asociado.

REST

Antes de usar los datos de la solicitud, haz las siguientes sustituciones:

  • LOCATION_ID: la región de tu MetadataStore.
  • PROJECT_ID: tu ID de proyecto o número.
  • METADATA_STORE: ID del almacén de metadatos en el que se crea MetadataSchema. El almacén de metadatos predeterminado se llama default. A menos que se requiera un nuevo MetadataStore, puedes usar el almacén predeterminado.
  • METADATA_SCHEMA_ID: (opcional) ID del registro MetadataSchema. Si no se especifica el ID, Vertex ML Metadata crea un identificador único para este MetadataSchema.
  • METADATA_SCHEMA_TITLE: el título del esquema que describe el campo de metadatos. El título del esquema debe tener el formato `.`. El espacio de nombres debe empezar por una letra minúscula, puede contener caracteres en minúscula y números, y puede tener entre dos y veinte caracteres. El nombre del esquema debe empezar por una letra mayúscula, puede incluir letras y números, y puede tener entre dos y cuarenta y nueve caracteres.
  • METADATA_SCHEMA_VERSION: (opcional) Versión del esquema que describe el campo de metadatos. schema_version debe ser una cadena de tres números separados por puntos. Por ejemplo, 1.0.0 o 1.0.1. Este formato ayuda a ordenar y comparar versiones.
  • METADATA_SCHEMA_TYPE: el tipo de recurso de metadatos al que se aplica el esquema creado. Los tipos son ARTIFACT_TYPE, EXECUTION_TYPE o CONTEXT_TYPE.
  • METADATA_SCHEMA: el esquema detallado que se va a crear.
  • DESCRIPTION: (Opcional) Cadena legible por humanos que describe el propósito de la ejecución que se va a crear.
  • ARTIFACT_ID: (Opcional) El ID del registro del artefacto. Si no se especifica el ID del artefacto, Vertex ML Metadata crea un identificador único para este artefacto.
  • DISPLAY_NAME: (Opcional) Nombre del artefacto definido por el usuario.

Método HTTP y 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

Cuerpo JSON de la solicitud:

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

Para enviar tu solicitud, despliega una de estas opciones:

Debería ver un resultado similar al siguiente. Puedes usar el METADATA_SCHEMA_ID es el ID del registro 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"
}

En las llamadas posteriores para crear, obtener o enumerar artefactos, se puede hacer referencia a este esquema especificando el nombre (demo.Artifact) en el campo schema_title y la versión (0.0.1) en el campo schema_version del recurso Artifact. Para obtener más información sobre cómo crear, obtener o enumerar recursos de metadatos, consulta Monitorizar metadatos de Vertex ML.

Gestionar versiones de los esquemas

Todos los recursos MetadataSchema tienen versiones. Un usuario puede crear un esquema que use el mismo schema_title que otro esquema, pero con un schema_version diferente. Para crear un recurso metadataSchema con una versión diferente, un usuario puede proporcionar un número de versión diferente y contenido de esquema modificado.

En el siguiente ejemplo se crea la versión 0.0.2 del esquema 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)

Los campos del esquema siempre se consideran opcionales, por lo que no hay compatibilidad con versiones anteriores o posteriores entre versiones del mismo schema_title. Los usuarios podrán seguir usando schema_title para filtrar y agrupar recursos para el análisis. Para obtener más información sobre cómo usar las funciones de filtro, consulta Analizar metadatos de Vertex ML.

Siguientes pasos