为 Vertex AI 模型监控提供架构

为了启动监控作业,模型监控需要知道表格数据集的架构,才能正确解析输入载荷。

  • 对于 AutoML 模型,模型监控会自动解析架构,因为 Vertex AI 有权访问您的训练数据。

  • 对于自定义训练模型:

    • 模型监控可以自动解析使用标准键值对输入格式的模型的架构。

    • 对于不使用键值对输入格式的自定义训练模型,您可能需要在创建监控作业时提供架构。

    架构生成取决于您是为在线预测端点还是为批量预测启用模型监控。

在线预测端点的架构解析

对于在线预测端点,您可以让模型监控在您创建监控作业时自动解析架构或上传架构。

自动架构解析

为在线端点启用偏差或偏移检测后,模型监控通常可以自动解析输入架构。对于自动架构解析,模型监控会分析前 1,000 个输入请求以确定架构。

如果输入请求采用键值对格式,其中 "key" 是特征的名称,"value" 是特征的值,则自动架构解析效果最佳。例如:

"key":"value"
{"TenYearCHD":"0", "glucose":"5.4", "heartRate":"1", "age":"30",
"prevalentStroke":"0", "gender":"f", "ethnicity":"latin american"}

如果输入并非采用 "key":"value" 格式,则模型监控会尝试识别每个特征的数据类型,并自动为每个输入分配默认特征名称。

自定义实例架构

您可以在创建模型监控作业时提供自己的输入架构,以确保模型监控正确解析模型的输入。

此架构称为分析实例架构。架构文件指定输入载荷的格式、每个特征的名称以及每个特征的类型。

架构必须编写为采用 Open API 格式的 YAML 文件。以下示例适用于采用 object 格式的预测请求:

type: object
properties:
  age:
    type: string
  BMI:
    type: number
  TenYearCHD:
    type: string
  cigsPerDay:
    type: array
    items:
      type: string
  BPMeds:
    type: string
required:
- age
- BMI
- TenYearCHD
- cigsPerDay
- BPMeds
  • type 指示您的预测请求是否为以下格式之一:

    • object:键值对
    • array:类似数组
    • string:csv 字符串
  • properties 指示各个特征的类型。

  • 如果请求采用数组或 csv 字符串格式,请在 required 字段下指定每个请求中特征的列出顺序。

如果您的预测请求采用数组或 csv 字符串格式,则应将所有缺失的特征表示为 null 值。例如,假设某个预测请求具有五个特征:

[feature_a, feature_b, feature_c, feature_d, feature_e]

如果 feature_c 允许缺失值,则缺失 feature_c 的示例请求如下所示:{[1, 2, , 4, 6]}。列表长度仍然是 5,中间有一个 null 值。

用于批量预测的架构解析

对于批量预测,您可以让模型监控在您创建监控作业时自动解析架构或上传架构。

自动架构解析

如果您在创建监控作业期间未提供架构,则模型监控会推断特征的数据类型,并根据训练数据生成架构。

模型监控还需要知道哪个特征是目标列,即要预测的特征。目标列已从架构和特征偏差指标中排除。您可以在创建监控作业时指定目标列。

目标列规范

如果您在创建监控作业时未指定目标列,则模型监控会将训练数据中的最后一个特征名称标记为目标列。

例如,模型监控会将此 CSV 训练数据中的 column_c 标记为目标列,因为 column_c 位于第一行的末尾:

column_a, column_b, column_d, column_c
1,"a", 2, "c"
2,"b", 342, "d"

同样,模型监控会将此 JSONL 文件中的 column_c 标记为目标列,因为 column_c 位于第一行的末尾:

{"column_a": 1, "column_b": "a", "column_d": 2, "column_c": "c" }
{"column_a": 2, "column_b": "b", "column_c": "d",  "column_d": 342}

在这两个示例中,最终架构仅包含 column_acolumn_bcolumn_d

自定义架构

您的自定义架构指定了输入载荷的格式、每个特征的名称以及每个特征的类型。

架构必须编写为采用 Open API 语法的 YAML 文件。以下示例适用于采用 object 格式的预测请求:

type: object
properties:
  age:
    type: string
  BMI:
    type: number
  TenYearCHD:
    type: string
  cigsPerDay:
    type: array
    items:
      type: string
  BPMeds:
    type: string
required:
- age
- BMI
- TenYearCHD
- cigsPerDay
- BPMeds

模型监控根据 JSON 行批量预测输出计算特征偏差。如果您的数据类型包含数组,则输入数据中数组的长度必须等于 yaml 文件中指定的特征数量。否则,模型监控会从特征偏差计算中排除数组长度不正确的预测实例。

例如,以下数据类型的数组包含两个特征:

  • 数组:{[[1, 2]]}

  • “键”/“值”:{"key": 0, "values": [[1, 2]]}

相应的架构还必须指定两个功能:

type: object
properties:
  name:
    type: string
  age:
    type: number
required:
- name
- age

后续步骤