Tensorflow 模型分析设置

配置

TFMA 将其配置存储在 proto 中,该 proto 被序列化为 JSON。此 proto 整合了输入数据、输出数据、模型规范、指标规范和切片规范所需的配置。

所有 TFMA 管道都与一个基线(主要)模型和零个或多个候选(次要)模型相关联。基线和候选模型由用户在管道开始时定义,每个模型都需要一个唯一的名称。以下是用户可能使用的典型配置设置示例

  • 单模型评估
    • N/A(即没有名称)
  • 基于验证的评估
    • baseline
    • candidate
  • 模型比较评估
    • my_model_a
    • my_model_b

模型规范

模型规范的类型为 tfma.ModelSpec,用于定义模型的位置以及其他模型特定参数。例如,以下是一些在运行评估之前需要配置的典型设置

  • name - 模型的名称(如果使用多个模型)
  • signature_name - 用于预测的签名的名称(默认值为 serving_default)。如果使用 EvalSavedModel,请使用 eval
  • label_key - 与标签关联的特征的名称。
  • example_weight_key - 与示例权重关联的特征的名称。

指标规范

指标规范的类型为 tfma.MetricsSpec,用于配置将在评估过程中计算的指标。不同的机器学习问题使用不同类型的指标,TFMA 提供了许多配置和自定义计算指标的选项。由于指标是 TFMA 的很大一部分,因此将在 指标 中单独详细讨论。

切片规范

切片规范的类型为 tfma.SlicingSpec,用于配置在评估过程中使用的切片标准。切片可以通过 feature_keysfeature_values 或两者来完成。以下是一些切片规范的示例

  • {}
    • 包含所有数据的切片。
  • { feature_keys: ["country"] }
    • 特征“country”中所有值的切片。例如,我们可能会得到切片“country:us”、“country:jp”等。
  • { feature_values: [{key: "country", value: "us"}] }
    • 包含“country:us”的切片。
  • { feature_keys: ["country", "city"] }
    • 特征“country”中所有值与特征“city”中所有值的交叉切片(注意这可能很昂贵)。
  • { feature_keys: ["country"] feature_values: [{key: "age", value: "20"}] }
    • 特征“country”中所有值与值“age:20”的交叉切片

请注意,特征键可以是转换后的特征或原始输入特征。有关更多信息,请参阅 tfma.SlicingSpec

EvalSharedModel

除了配置设置之外,TFMA 还要求创建一个 tfma.EvalSharedModel 实例,用于在同一进程中的多个线程之间共享模型。共享模型实例包含有关模型类型(keras 等)以及如何从磁盘上的保存位置加载和配置模型的信息(例如标签等)。tfma.default_eval_shared_model API 可用于根据路径和标签集创建默认实例。