政安晨的个人主页:政安晨
欢迎 👍点赞✍评论⭐收藏
收录专栏: TensorFlow与Keras实战演绎机器学习
希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!
前言
TensorFlow Extended(TFX)是基于 TensorFlow 的谷歌生产规模机器学习平台。它提供了一个配置框架,用于表达由 TFX 组件组成的 ML 管道。TFX 管道可使用 Apache Airflow 和 Kubeflow 管道进行协调。组件本身以及与协调系统的集成都可以扩展。
TFX包括许多生产软件部署和最佳实践的需求:可伸缩性、一致性、可测试性、安全性,等等。
它从收集数据开始,然后是数据验证、特征工程、训练和服务。
谷歌已为管道的每个主要阶段创建了库,并且为各种部署目标提供了框架。TFX实现了一系列ML管道组件。这些通过为管道存储、配置和编制之类的事物创建水平层来实现。这些层对于管理和优化管道以及在其管道上运行的应用程序非常重要。
安装
pip install tfx
关于 TFX
TFX 是一个在生产环境中构建和管理机器学习工作流程的平台。
TFX 提供以下功能:
用于构建机器学习流水线的工具包。借助 TFX 流水线,您可以在多个平台上编排机器学习工作流,例如 Apache Airflow、Apache Beam 和 Kubeflow Pipelines 平台。
一组标准组件,可用作流水线的一部分,或用作机器学习训练脚本的一部分。TFX 标准组件提供久经考验的功能,可帮助您轻松开始构建机器学习流程。
为许多标准组件提供基本功能的库。您可以使用 TFX 库将此功能添加到自己的自定义组件中,也可以单独使用它们。
TFX 是一种基于 TensorFlow 的 Google 生产级机器学习工具包。 该平台提供了一个配置框架和众多共享库,用来集成定义、启动和监控机器学习系统所需的常见组件。
TFX管道
TFX管道由实现ML管道的一系列组件构成,特别是确保了带下划线的ML任务的可伸缩性和高性能。它包括建模、训练、推理以及部署到Web或移动目标。如下图所示:
TFX管道包含几个组件,每个组件都由三个主要元素组成:驱动程序、执行程序和发布程序。
驱动程序查询元数据存储,并将生成的元数据提供给执行程序,发布程序接受执行程序的结果,并将其保存在元数据中。
执行程序执行所有的处理。作为ML软件开发人员,你需要编写要在执行程序中运行的代码,这取决于你正在使用的组件类。
在TFX管道中,称为构件的数据单元在组件之间传递。
通常,一个组件有一个输入构件和一个输出构件。每个构件都有一个关联元数据,定义其类型和属性。构件类型定义了整个TFX系统中构件的本体,而构件属性则指定了特定于构件类型的本体。用户可以选择在全局或本地扩展本体。
TFX 标准组件
TFX 流水线是实现机器学习流水线的一系列组件,专门用于可扩容的高性能机器学习任务。这包括针对在线、原生移动和 JavaScript 目标建模、训练、运行推断和管理部署。
TFX 流水线通常包含以下组件:
-
ExampleGen:提取和拆分(可选)输入数据集的流水线的初始输入组件。
-
StatisticsGen:计算数据集的统计信息。
-
SchemaGen: 检查统计信息和创建数据架构。
-
ExampleValidator:查找数据集中的异常情况和缺失的值。
-
Transform:对数据集执行特征工程。
-
Trainer:训练模型。
-
Tuner:调整模型的超参数。
-
Evaluatior:对训练结果进行深入分析,并帮助您验证导出的模型,确保它们“效果足够好”,适合投放到生产环境。
-
InfraValidator:检查模型是否确实可以从基础架构提供服务,并防止投放不良模型。
-
Pusher:将模型部署到服务基础架构。
-
BulkInferrer:对存在无标签推断请求的模型执行批处理。
下图说明了这些组件之间的数据流:
TFX 库
TFX 同时包含库和流水线组件。
下图说明了 TFX 库与流水线组件之间的关系:
TFX 提供了几个 Python 软件包,它们是用于创建流水线组件的库。您可以使用这些库创建流水线组件,以便您的代码侧重于流水线的独特环节。
使用 TFX 进行开发
从在本地机器上进行研究、实验和开发一直到部署,TFX 为机器学习项目的每个阶段都提供功能强大的平台。
为了避免代码重复和消除潜在的训练/应用偏差,我们强烈建议您实现 TFX 流水线,以便训练模型和部署经过训练的模型,并使用 Transform组件进行训练和推断,此类组件利用了 TensorFlow Transform库。
这样,您就可以始终如一地使用相同的预处理和分析代码,避免训练用到的数据与在生产环境中提供给经训练模型的数据之间存在差异,并且只需编写该代码一次。
部署目标
在开发并训练模型后,如果您对模型感到满意,可以将其部署到一个或多个部署目标,并在其中接收推断请求。TFX 支持部署到三类部署目标。以 SavedModel 格式导出的经训练模型可以部署到这些部署目标中的任意一个,也可以部署到所有这些部署目标。
本文仅仅是对TFX的一个介绍,为后续实施各类机器学习模型部署打下一个认知的基础而已。
(已经了解相关概念的小伙伴们可以忽略本文)