【模型部署】TFX介绍

TFX是一个基于TensorFlow的google生产规模的机器学习工具包。它提供了一个配置框架和共享库,以集成定义、启动和监视机器学习系统所需的通用组件。

TFX is a platform for building and managing ML workflows in a production environment. TFX provides the following:

  • A toolkit for building ML pipelines. TFX pipelines let you orchestrate your ML workflow on several platforms, such as: Apache Airflow, Apache Beam, and Kubeflow Pipelines.
    Learn more about TFX pipelines.
  • A set of standard components that you can use as a part of a pipeline, or as a part of your ML training script. TFX standard components provide proven functionality to help you get started building an ML process easily.
    Learn more about TFX standard components.
  • Libraries which provide the base functionality for many of the standard components. You can use the TFX libraries to add this functionality to your own custom components, or use them separately.

TFX Standard Components

TFX管道是实现ML管道的一系列组件,它是专门为可扩展的、高性能的机器学习任务而设计的。这包括建模、培训、服务推理和管理针对在线、本地移动和JavaScript目标的部署。

A TFX pipeline typically includes the following components:

  • ExampleGen是管道的初始输入组件,它摄入并可选地分割输入数据集。
  • StatisticsGen calculates statistics for the dataset.
  • SchemaGen 检查统计数据并创建数据模式。
  • ExampleValidator 查找数据集中的异常和缺失值。
  • Transform performs feature engineering on the dataset.
  • Trainer trains the model.
  • Tuner 调整模型的超参数。
  • Evaluator 训练结果进行深入分析,并帮助您验证导出的模型,确保它们足够好,可以推向生产。
  • InfraValidator 检查模型实际上是可从基础设施服务的,并防止坏模型被推入。
  • Pusher 在服务基础设施上部署模型。
  • BulkInferrer 对带有未标记推理请求的模型执行批处理。

This diagram illustrates the flow of data between these components:

 

TFX Libraries

TFX包括库和管道组件。这张图展示了TFX库和管道组件之间的关系:

可以使用这些库来穿创建自己pipelines的组件

TFX libraries include:

  • TensorFlow Data Validation (TFDV) 是一个用于分析和验证机器学习数据的库。它被设计为具有高度可伸缩性,并能与TensorFlowTFX很好地工作。TFDV包括:

•可伸缩的计算总结统计的训练和测试数据。与查看器集成,用于数据分布和统计,以及数据集对的面比较(面)。

•自动生成数据模式,以描述对数据的期望,如所需值、范围和词汇表。

•帮助您检查模式的模式查看器。

•异常检测,,举几个例子,以识别异常,如缺失特征,超出范围的值,或错误的特征类型

•异常查看器,便于您查看哪些特征存在异常,并了解详情以进行修正

 

  • TensorFlow Transform (TFT) 是一个使用TensorFlow预处理数据的库。TensorFlow转换对于需要全遍历的数据非常有用,例如:

•用平均值和标准差对输入值进行规格化。

•通过在所有输入值上生成词汇表,将字符串转换为整数。

•根据观察到的数据分布,将浮点数分配给bucket,将其转换为整数。

 

  • TensorFlow 用于TFX的训练模型。它摄取训练数据和建模代码,并创建一个SavedModel结果。它还集成了一个由TensorFlow Transform创建的用于预处理输入数据的feature engineering管道。
  • KerasTuner用于调优模型的超参数。Note: TFX supports TensorFlow 1.15 and, with some exceptions, 2.x. For details, see Designing TensorFlow Modeling Code For TFX.
  • TensorFlow Model Analysis (TFMA) 是一个用于评估TensorFlow模型的库。它与TensorFlow一起用于创建一个EvalSavedModel,这是分析的基础。它允许用户以分布式的方式,使用在他们trainer中定义的相同metrics,在大量数据上评估模型。这些度量可以在不同的数据切片上计算,并在Jupyter notebooks可视化。

 

  • TensorFlow Metadata (TFMD) 为使用TensorFlow训练机器学习模型时有用的元数据提供标准表示。元数据可以在输入数据分析期间手工生成或自动生成,并且可以用于数据验证、探索和转换。元数据序列化格式包括:
  • A schema describing tabular data (e.g., tf.Examples).
  • A collection of summary statistics over such datasets.
  • ML Metadata (MLMD)ML或者数据科学家在工作中用来记录和检索元数据 的库 大多元数据用TFMD表示MLMD使用 SQL-LiteMySQL,或者其他类似的数据库来持久化他们.

 

 

需要的技术支持:

必选:Apache Beam Apache Beam是一个开源的统一模型,用于定义批处理和流数据并行处理管道。TFX使用Apache Beam来实现数据并行管道。然后,该管道由Beam支持的分布式处理后端执行,其中包括Apache Flink、Apache Spark、谷歌云数据流等。

可选:

Apache Airflow TFX使用AirFlow生成任务的有向无环图(DAGs)。AirFlow调度器在执行指定的依赖项时,对一组工作程序执行任务。丰富的命令行工具使得在DAGs上执行复杂的任务非常简单。丰富的用户界面使您可以轻松地可视化生产中运行的管道、监视进程和在需要时排除问题。当工作流被定义为代码时,它们变得更加可维护、版本化、可测试和协作。

Kubeflow  致力于使Kubernetes上的机器学习(ML)工作流的部署简单、可移植和可伸缩。Kubeflow的目标不是重新创建其他服务,而是提供一种直接的方法,将最佳的ML开源系统部署到不同的基础设施中。Kubeflow管道能够在Kubeflow上组合和执行可重复的工作流,并与实验和基于lnotebook的实验相结合。Kubeflow管道服务在Kubernetes上包括托管的元数据存储、基于容器的编排引擎、笔记本服务器和UI,以帮助用户大规模开发、运行和管理复杂的ML管道。Kubeflow pipeline SDK允许以编程方式创建和共享组件以及管道组合。

Portability and Interoperability

TFX被设计为可移植到多种环境和编配框架,包括Apache气流,Apache Beam和Kubeflow。它还可以移植到不同的计算平台,包括内部的计算平台和云平台,比如谷歌云平台(GCP)。特别地,TFX与服务器管理的GCP服务进行交互,例如用于训练和预测的云AI平台,以及用于ML生命周期其他几个方面的分布式数据处理的云数据流。

Note: 本指南的当前修订版主要讨论了在裸属系统上使用Apache气流进行编排的部署。

 

Model vs. SavedMode

model

模型是训练过程的输出。它是在训练过程中获得的权重的连续记录。这些权重可以随后用于计算新的输入示例的预测。对于TFX和TensorFlow,“模型”是指包含在此之前学到的权重的检查点。

 

注意,“model”也可能引用TensorFlow计算图(即Python文件)的定义,它表示如何计算预测。根据上下文,这两种意思可以互换使用。

SavedModel

  • 什么是 SavedModel:一种通用、独立于语言、封闭且可恢复的 TensorFlow 模型序列化格式。
  • 为什么它如此重要:它可让较高级别的系统使用单一抽象层创建、变换和使用 TensorFlow 模型。

SavedModel 是在生产环境中应用 TensorFlow 模型或为原生移动应用或 JavaScript 应用导出经过训练的模型时推荐使用的序列化格式。例如,如需将模型转换为 REST 服务以进行预测,您可以将该模型序列化为 SavedModel,并使用 TensorFlow Serving 应用该模型。如需了解详情,请参阅应用 TensorFlow 模型

 

架构

 

即protobuf。使用TensorFlow Data Validation (TFDV) 的好处之一是,它会通过从训练数据中推断出类型、类别和范围来自动生成架构

 

使用 TFX 进行开发

数据探索、可视化和清理

 

TFX 流水线通常从 ExampleGen 组件开始,该组件会接受输入数据并将其格式化为 tf.Example。这通常是在将数据拆分成训练数据集和评估数据集之后进行的,因此实际上有两份 ExampleGen 组件,分别用于训练和评估。 StatisticsGen 组件和 SchemaGen 组件通常紧跟其后,这两个组件会检查您的数据并推断出数据架构和统计信息。架构和统计信息将供 ExampleValidator 组件使用,该组件会查找数据中的异常情况、缺失的值和不正确的数据类型。所有这些组件均会利用 TensorFlow Data Validation 库的功能。

TensorFlow Data Validation (TFDV) 是一种验证工具,在初步探索、可视化和清理数据集时很有用。TFDV 会检查您的数据并推断数据类型、类别和范围,然后自动帮助您识别异常情况和缺失的值。它还提供了可视化工具,可以帮助您检查和了解数据集。流水线完成后,您可以从 MLMD 中读取元数据,并在 Jupyter 笔记本中使用 TFDV 的可视化工具分析数据。

在初始模型训练和部署之后,TFDV 可用于监控从向已部署模型发送的推断请求获得的新数据,并查找异常和/或偏移情况。这对于因趋势或季节性因素而随时间变

数据可视化

通过流水线中使用 TFDV 的部分(通常为 StatisticsGen、SchemaGen 和ExampleValidator)完成首次数据运行之后,您可以在 Jupyter 笔记本中可视化结果。运行更多次之后,您可以在做出调整后比较这些结果,直到模型和应用获得最佳数据为止。

您首先需要查询 ML Metadata (MLMD),找到这些组件的执行结果,然后使用 TFDV 中的可视化支持 API 在笔记本中创建可视化效果。其中包括 tfdv.load_statistics() 和 tfdv.visualize_statistics()。这种可视化效果可以让您更好地了解数据集的特性,并根据需要进行修改。

开发和训练模型

典型的 TFX 流水线包含一个 Transform 组件,该组件将利用 TensorFlow Transform (TFT) 库的功能执行特征工程。Transform 组件会使用由 SchemaGen 组件创建的架构,并应用数据转换来创建、合并和转换将用于训练模型的特征。如果为推断请求发送的数据中也有可能存在缺失的值和类型转换,还应该在 Transform 组件中清除这些内容。在 TFX 中设计 TensorFlow 训练代码时,需要考虑一些重要事项

Transform 组件的结果是 SavedModel,SavedModel 将导入 Trainer 组件中,并应用于您在 TensorFlow 中的建模代码。SavedModel 包含已在 Transform 组件中创建的所有数据工程转换,这样就可以在训练和推断过程中使用完全相同的代码执行相同的转换。借助建模代码(包括 Transform 组件中的 SavedModel),您可以使用训练和评估数据训练模型。

在建模代码的最后一部分中,您应将模型同时另存为 SavedModel 和 EvalSavedModel。另存为 EvalSavedModel 时,您必须在 Trainer 组件中导入并应用 TensorFlow Model Analysis (TFMA) 库。

 

分析和了解模型效果

在进行初始模型开发和训练之后,分析并真正了解模型的效果非常重要。典型的 TFX 流水线包含一个 Evaluator 组件,该组件会利用 TensorFlow Model Analysis (TFMA) 库的功能,为这个开发阶段提供强大的工具包。Evaluator 组件会使用您在上面导出的 EvalSavedModel,并允许您指定可在可视化和分析模型效果时使用的 SliceSpecs 列表。每个 SliceSpec 都会定义您要检查的训练数据切片,例如分类特征的特定类别或数字特征的特定范围。

例如,如果您想了解模型对于不同客户群体的效果,请务必遵循上述做法;客户群体可以按年购买量、地理位置数据、年龄段或性别划分。这对于长尾数据集尤为重要,因为在这种数据集中,即使重要但规模较小的群组的表现不可接受,也可能会被主流群组的表现掩盖。例如,您的模型可能在普通员工中效果良好,但在主管人员中的效果却很差,那么您需要知道这一点。

模型分析和可视化

通过训练模型并针对训练结果运行 Evaluator 组件(该组件会利用 TFMA)完成首次数据运行之后,您可以在 Jupyter 笔记本中可视化结果。运行更多次之后,您可以在做出调整后比较这些结果,直到模型和应用获得最佳结果为止。

您首先需要查询 ML Metadata (MLMD),找到这些组件的执行结果,然后使用 TFMA 中的可视化支持 API 在笔记本中创建可视化效果。其中包括 tfma.load_eval_results() 和 tfma.view.render_slicing_metrics()。这种可视化效果可以让您更好地了解模型的特性,并根据需要进行修改。

 

验证模型是否可以提供服务

在部署经过训练的模型之前,您可能需要验证模型是否在服务基础架构中确实可以提供服务。这对在生产环境中确保新发布的模型不会阻止系统提供预测尤为重要。InfraValidator 组件会在沙盒环境中对您的模型执行 Canary 部署,并可选择发送实际请求以检查模型是否正常运行。

 

部署目标

在开发并训练模型后,如果您对模型感到满意,可以将其部署到一个或多个部署目标,并在其中接收推断请求。TFX 支持部署到三类部署目标。以 SavedModel 格式导出的经训练模型可以部署到这些部署目标中的任意一个,也可以部署到所有这些部署目标。

 

推断:TensorFlow Serving

TensorFlow Serving (TFS) 是适用于机器学习模型的灵活、高效的服务系统,专为生产环境而设计。它会使用 SavedModel,并通过 REST 或 gRPC 接口接受推断请求。它作为一组进程在一个或多个网络服务器上运行,并使用一个高级架构处理同步和分布式计算。如需详细了解如何开发和部署 TFS 解决方案,请参阅 TFS 文档

在典型的流水线中,在 Trainer 组件中训练过的 SavedModel 将首先在 InfraValidator 组件中接受基础架构验证。InfraValidator 启动 Canary TFS 模型服务器,以便实际应用 SavedModel。如果通过验证,则 Pusher 组件最终会将 SavedModel 部署到您的 TFS 基础架构。这包括处理多个版本和模型更新。

原生移动应用和 IoT 应用中的推断:TensorFlow Lite

TensorFlow Lite 是一套工具,旨在帮助开发者在原生移动应用和 IoT 应用中使用经过训练的 TensorFlow 模型。它与 TensorFlow Serving 使用一样的 SavedModel,并应用量化和剪枝等优化措施来优化生成的模型的大小和效果,以应对在移动设备和 IoT 设备上运行时面临的难题。如需详细了解如何使用 TensorFlow Lite,请参阅 TensorFlow Lite 文档。

JavaScript 推断:TensorFlow JS

TensorFlow JS 是一个 JavaScript 库,用于在浏览器和 Node.js 上训练和部署机器学习模型。它与 TensorFlow Serving 和 TensorFlow Lite 使用一样的 SavedModel,并将它们转换为 TensorFlow.js Web 格式。如需详细了解如何使用 TensorFlow JS,请参阅 TensorFlow JS 文档。

使用 Airflow 创建 TFX 流水线

如需了解详情,请查看 Airflow 研讨会

使用 Kubeflow 创建 TFX 流水线

设置

Kubeflow 需要使用 Kubernetes 集群大规模运行流水线。请参阅 Kubeflow 部署指南,了解部署 Kubeflow 集群的选项。

配置并运行 TFX 流水线

请按照 TFX on Cloud AI Platform Pipeline 教程中的说明在 Kubeflow 上运行 TFX 示例流水线。TFX 组件已经过容器化,可以编写 Kubeflow 流水线;此示例演示了配置流水线以读取大型公共数据集并在云端大规模执行训练和数据处理步骤的功能。

执行流水线操作的命令行界面

TFX 提供统一 CLI,可帮助您在 Apache Airflow、Apache Beam 和 Kubeflow 等各种 Orchestrator 上执行众多流水线操作,例如创建、更新、运行、列出和删除流水线。如需了解详情,请参阅这些说明

原文抄自:https://www.tensorflow.org/tfx/guide,摘录过来,对不能翻墙的小伙伴方便提取

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值