每个元数据资源都与特定的 MetadataSchema 相关联。为了简化元数据资源创建流程,Vertex ML Metadata 发布了常见机器学习概念的预定义系统类型(称为系统架构)。系统架构位于命名空间 system
下。您可以在 Vertex ML Metadata API 中以 MetadataSchema 资源的形式访问系统架构。系统会始终对架构进行版本控制。 系统架构的格式是 OpenAPI 3.0 规范的一部分。
如何使用系统架构
Vertex AI 使用系统架构创建元数据资源来跟踪机器学习工作流。然后,您可以使用 schema_title
字段过滤元数据查询中的资源并对其进行分组。如需详细了解如何使用过滤条件函数,请参阅分析 Vertex ML Metadata。
您还可以通过 Vertex ML Metadata API 使用系统架构直接创建元数据资源。您可以通过系统架构的架构标题和架构版本来标识系统架构。系统架构中的字段始终被视为可选字段。您不限于系统架构的预定义字段,还可以将其他任意元数据记录到任何元数据资源中。如需详细了解如何使用系统架构创建元数据资源,请参阅跟踪 Vertex ML Metadata。
列出架构
使用以下命令查看所有现有已注册架构的列表。
REST
在使用任何请求数据之前,请先进行以下替换:
- LOCATION_ID:您的区域。
- PROJECT_ID:您的项目 ID。
HTTP 方法和网址:
GET https://LOCATION_ID-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/default/metadataSchemas?pageSize=100&filter=schema_title=%22system*%22+OR+schema_title=%22google*%22
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "metadataSchemas": [ { "name": "projects/PROJECT_ID/locations/LOCATION_ID/metadataStores/default/metadataSchemas/system-resolver-execution-v0-0-1", "schemaVersion": "0.0.1", "schema": "title: system.ResolverExecution\ntype: object\n", "schemaType": "EXECUTION_TYPE", "createTime": "2022-07-27T17:41:35.634Z" }, { "name": "projects/PROJECT_ID/locations/LOCATION_ID//metadataStores/default/metadataSchemas/system-html-v0-0-1", "schemaVersion": "0.0.1", "schema": "title: system.HTML\ntype: object\n", "schemaType": "ARTIFACT_TYPE", "createTime": "2022-07-27T17:41:35.602Z" } }
严格架构匹配
Vertex ML Metadata 支持两个标志,架构作者可以使用这些标志来强制执行严格架构匹配。
additionalProperties
additionalProperties
值可以是 true 或 false。additionalProperties
与 JSON 架构一致,默认为 true。此标志在架构的顶层设置。如果设置为 false,则不允许使用可选属性。例如,在以下架构中,基于此架构的元数据中只接受 payload_format
和 container_format
字段。
title: system.Dataset
version: 0.0.1
type: object
additionalProperties: false
properties:
container_format:
type: string
payload_format:
type: string
上述架构接受以下元数据:
fields {
key: 'container_format'
value: { string_value: 'Text' }
}
fields {
key: 'payload_format'
value: { string_value: 'CSV' }
}
但是,以下元数据将被拒绝:
fields {
key: 'container_format'
value: { string_value: 'Text' }
}
fields {
key: 'payload_format'
value: { string_value: 'CSV' }
}
fields {
key: 'optional_field'
value: { string_value: 'optional_value' }
}
required
required
关键字接受零个或零个以上字符串的数组。与 JSON 架构一致,不需要由属性关键字定义的属性。您可以使用 required
关键字提供必需属性的列表。例如,以下架构始终需要 container_format
。这也适用于嵌套属性。例如,以下代码会将 container_format
设置为必需。
title: system.Dataset
version: 0.0.1
type: object
required: ['container_format']
properties:
container_format:
type: string
payload_format:
type: string
上述架构接受以下元数据:
fields {
key: 'container_format'
value: { string_value: 'Text' }
}
但是,以下元数据将被拒绝:
fields {
key: 'payload_format'
value: { string_value: 'CSV' }
}
该架构支持嵌套属性,其中属性具有对象类型的字段。在嵌套架构中,嵌套属性节点可以具有 required
关键字。例如:
title: system.Dataset
version: 0.0.1
type: object
properties:
container_format:
type: string
payload:
type: string
nested_property:
type: object
required: ['property_1']
properties:
property_1:
type: integer
property_2:
type: integer
上述架构接受以下元数据,因为 nested_property
字段本身不是必需的。
fields {
key: 'container_format'
value: { string_value: 'Text' }
}
以下元数据也有效。
fields {
key: 'nested_property'
value: {
struct_value {
fields {
key: 'property_1'
value: { number_value: 1 }
}
fields {
key: 'property_2'
value: { number_value: 1 }
}
}
}
}
但是,以下元数据将被拒绝:
fields {
key: 'nested_property'
value: {
struct_value {
fields {
key: 'property_2'
value: { number_value: 1 }
}
}
}
}
系统架构示例
以下示例是可立即使用的常用系统架构。
工件
system.Artifact
是一个通用架构,用于保存有关任何工件的元数据。此架构未定义任何特定字段。
title: system.Artifact
version: 0.0.1
type: object
数据集
system.Dataset
表示由机器学习工作流步骤使用或生成的数据容器。数据集可以指向文件位置或查询,例如 BigQuery URI。
title: system.Dataset
version: 0.0.1
type: object
properties:
container_format:
type: string
description: "Format of the container. Examples include 'TFRecord', 'Text', or 'Parquet'."
payload_format:
type: string
description: "Format of the payload. For example, 'proto:TFExample', 'CSV', or 'JSON'."
模型
system.Model
表示经过训练的模型。模型的 URI 可以指向文件位置(PPP、Cloud Storage 存储桶、本地硬盘)或 API 资源(例如 Vertex AI API 中的 Model 资源)。
title: system.Model
version: 0.0.1
type: object
properties:
framework:
type: string
description: "The framework type. For example: 'TensorFlow' or 'Scikit-Learn'."
framework_version:
type: string
description: "The framework version. For example: '1.15' or '2.1'."
payload_format:
type: string
description: "The format of the Model payload, for example: 'SavedModel' or 'TFLite'."
指标
system.Metrics
表示在机器学习工作流期间生成的评估指标。指标取决于应用和用例,可以包含简单的标量指标(如准确率)或存储在系统其他位置的复杂指标。
title: system.Metrics
version: 0.0.1
type: object
properties:
type:
accuracy:
type: number
description: "Optional summary metric describing accuracy of a model."
precision:
type: number
description: "Optional summary metric describing precision of a model."
recall:
type: number
description: "Optional summary metric describing the recall of a model."
f1score:
type: number
description: "Optional summary metric describing the f1-score of a model."
mean_absolute_error:
type: number
description: "Optional summary metric describing the mean absolute error of a model."
mean_squared_error:
type: number
description: "Optional summary metric describing the mean-squared error of a model."