系统架构

每个元数据资源都与特定的 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_formatcontainer_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."

后续步骤