配置
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_keys
、feature_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 可用于根据路径和标签集创建默认实例。