MLOps 是将 DevOps 实践应用于帮助自动化、管理和审核机器学习 (ML) 工作流程的实践。ML 工作流程包括以下步骤:
- 准备、分析和转换数据。
- 训练和评估模型。
- 将训练后的模型部署到生产环境。
- 跟踪机器学习工件并了解其依赖关系。
以临时方式管理这些步骤可能很困难且耗时。
TFX 通过提供一个工具包来简化 MLOps 的实现,该工具包可以帮助您在各种编排器上编排机器学习流程,例如:Apache Airflow、Apache Beam 和 Kubeflow Pipelines。通过将您的工作流程实现为 TFX 管道,您可以
- 自动化您的机器学习流程,使您可以定期重新训练、评估和部署您的模型。
- 利用分布式计算资源来处理大型数据集和工作负载。
- 通过使用不同的超参数集运行管道来提高实验速度。
本指南介绍了了解 TFX 管道所需的核心理念。
工件
TFX 管道中步骤的输出称为 **工件**。工作流程中的后续步骤可以使用这些工件作为输入。通过这种方式,TFX 允许您在工作流程步骤之间传输数据。
例如,ExampleGen
标准组件会发出序列化示例,这些示例会被 StatisticsGen
等组件用作输入。
工件必须使用在 ML Metadata 存储库中注册的 **工件类型** 进行强类型化。详细了解 ML Metadata 中使用的概念。
工件类型具有名称,并定义其属性的模式。工件类型名称在您的 ML Metadata 存储库中必须是唯一的。TFX 提供了多种 标准工件类型,用于描述复杂数据类型和值类型,例如:字符串、整数和浮点数。您可以 重用这些工件类型 或定义从 Artifact
派生的自定义工件类型。
参数
参数是管道在执行之前已知的输入。参数允许您通过配置而不是代码来更改管道或管道一部分的行为。
例如,您可以使用参数来运行具有不同超参数集的管道,而无需更改管道的代码。
使用参数可以通过简化使用不同参数集运行管道的操作来提高实验速度。
详细了解 RuntimeParameter 类。
组件
**组件** 是机器学习任务的实现,您可以将其用作 TFX 管道中的步骤。组件由以下部分组成:
- 组件规范,它定义了组件的输入和输出工件,以及组件所需的参数。
- 执行器,它实现了用于执行机器学习工作流程中步骤的代码,例如提取和转换数据或训练和评估模型。
- 组件接口,它将组件规范和执行器打包在一起,以便在管道中使用。
TFX 提供了多种 标准组件,您可以在管道中使用。如果这些组件无法满足您的需求,您可以构建自定义组件。详细了解自定义组件。
管道
TFX 管道是 ML 工作流的可移植实现,可以在各种编排器上运行,例如:Apache Airflow、Apache Beam 和 Kubeflow Pipelines。管道由组件实例和输入参数组成。
组件实例会生成工件作为输出,通常依赖于上游组件实例生成的工件作为输入。组件实例的执行顺序是通过创建工件依赖关系的有向无环图来确定的。
例如,考虑一个执行以下操作的管道:
- 使用自定义组件直接从专有系统中提取数据。
- 使用 StatisticsGen 标准组件计算训练数据的统计信息。
- 使用 SchemaGen 标准组件创建数据模式。
- 使用 ExampleValidator 标准组件检查训练数据是否存在异常。
- 使用 Transform 标准组件对数据集执行特征工程。
- 使用 Trainer 标准组件训练模型。
- 使用 Evaluator 组件评估训练后的模型。
- 如果模型通过评估,管道会使用自定义组件将训练后的模型排队到专有部署系统中。
为了确定组件实例的执行顺序,TFX 会分析工件依赖关系。
- 数据提取组件没有任何工件依赖关系,因此它可以作为图中的第一个节点。
- StatisticsGen 依赖于数据提取生成的示例,因此它必须在数据提取之后执行。
- SchemaGen 依赖于 StatisticsGen 创建的统计信息,因此它必须在 StatisticsGen 之后执行。
- ExampleValidator 依赖于 StatisticsGen 创建的统计信息和 SchemaGen 创建的模式,因此它必须在 StatisticsGen 和 SchemaGen 之后执行。
- Transform 依赖于数据提取生成的示例和 SchemaGen 创建的模式,因此它必须在数据提取和 SchemaGen 之后执行。
- Trainer 依赖于数据提取生成的示例、SchemaGen 创建的模式和 Transform 生成的保存的模型。Trainer 只能在数据提取、SchemaGen 和 Transform 之后执行。
- Evaluator 依赖于数据提取生成的示例和 Trainer 生成的保存的模型,因此它必须在数据提取和 Trainer 之后执行。
- 自定义部署器依赖于 Trainer 生成的保存的模型和 Evaluator 创建的分析结果,因此部署器必须在 Trainer 和 Evaluator 之后执行。
根据此分析,编排器会运行:
- 数据提取、StatisticsGen、SchemaGen 组件实例按顺序运行。
- ExampleValidator 和 Transform 组件可以并行运行,因为它们共享输入工件依赖关系,并且不依赖于彼此的输出。
- Transform 组件完成后,Trainer、Evaluator 和自定义部署器组件实例按顺序运行。
了解更多关于构建 TFX 管道的信息。
TFX 管道模板
TFX 管道模板通过提供一个预构建的管道来简化管道开发的入门,您可以根据自己的用例对其进行自定义。
了解更多关于自定义 TFX 管道模板的信息。
管道运行
运行是指管道的单次执行。
编排器
编排器是一个系统,您可以在其中执行管道运行。TFX 支持以下编排器:Apache Airflow、Apache Beam 和 Kubeflow Pipelines。TFX 还使用DagRunner 来指代支持编排器的实现。