Day 28 : 用於生产的机械学习 TensorFlow Extended (TFX) 介绍

什麽是 TensorFlow Extended (TFX)

  • TensorFlow Extended (TFX) 是端对端平台,可部署於用於生产环境中的机器学习,建构及管理机械学习工作流程。依官方介绍,TFX提供下列三种主要功能:
    • 整合流程功能 - TFX pipelines 可让您自动化调度管理多个平台 (例如 Apache Airflow、Apache Beam 和 Kubeflow 管线) 上的机器学习工作流程,具有可携性和互通性。
    • 积木功能 - TFX 组件(components) 各有功能,可以组合流程使用。
    • 部分模组引入组件 - TFX 部分模组 (libraries) 可独立做为模组或作为 TFX 组件使用。
    • 听起来就像S.H.E.可以到处巡回演唱、可以一起唱、单飞也很强大。

TFX 的组成

建立 TFX pipeline 的各元件 (component) 功能:

TFX 一系列元件,专门用於可扩充的高效能机器学习工作,包括建立模型、进行训练、提供推论,以及管理线上、行动装置 (TensorFlow Lite)和网页应用服务 (TensorFlow JS) 的部署。

  • ExampleGen

    • 流程管线的最初输入元件,负责撷取输入资料集,可以在此分割训练、评估、验证资料集。
    • 资料转换为 tf.Examples 格式,提供训练与评估之用。
  • StatisticsGen

    • 计算输入的资料集的统计资料。
    • 类似pandas.describe()pandas.info()的功能,也可以视觉化呈现。
  • SchemaGen

    • 可检验统计资料并建立资料结构定义 Schema,像是资料型态、数值范围、文字 Domain 等。
    • Schema 也是验证资料、特徵工程重要输入之一。
  • ExampleValidator

    • 可查看资料集内是否有异常状况和遗漏值,使用结构定义和统计资料,藉此查看资料中是否有异常情况、遗漏的值以及不正确的资料类型。
    • 上述4个元件属於 TFDV 程序库的功能,TFDV 会检验您的资料并推论资料类型、类别和范围,然後自动协助您识别异常状况和遗漏的值。
  • Transform

    • 这个元件会运用 TensorFlow Transform (TFT) 程序库的功能执行特徵工程,分散运算的底层采用 Apache Beam ,程序在部署情境会转成tf.Graph,因为都是同一套程序码,达到减少 training-severing skew

    • Transform 元件会产生 SavedModel,在 Trainer 元件执行期间汇入并用於 TensorFlow 中的建模程序码。如果也产生了 EvalSavedModel,可进行後续模型分析,此时也须引入 TFMA 程序库。

    • 参阅 Day 15Day 16 说明功能。

  • Tuner

    • 可调整模型的超参数,可以在 Trainer 之前新增选用的 Tuner 元件,藉此调整模型的超参数 (例如层数)。有了指定的模型和超参数的搜寻空间,调整演算法会根据目标找出最佳超参数。
  • Trainer

    • 训练模型,就是 TensorFlow 的本体,tensorflowtensorflow.keras 皆可。
  • Evaluator

    • 可针对训练结果执行深入分析,并协助您验证汇出的模型,确保这些模型达到要求,可推送至生产环境。
    • 为了进行模型分析,需在有不停储存各元件执行历程的 ML Metadata (MLMD) 找出这些元件的执行结果,透过 tfma.load_eval_resultstfma.view.render_slicing_metrics 可视觉化了解模型的特性,并视需要进行修改。
    • 对应独立的模型分析 TFMA 模组,已在 [Day 23] 介绍。
  • InfraValidator

    • 可检查模型是否确实可从基础架构提供,并避免推送未达到要求的模型。
    • 会启动初期测试 TF Sever 模型服务器以实际提供 SavedModel。如果通过验证,
  • Pusher

    • 可在提供服务的基础架构上部署模型,元件最终会将 SavedModel 部署至 TFS 基础架构,包括处理多个版本和模型更新。
    • 可用Pusher的功能分别对应部署在TensorFlow LiteTensorFlow JSTensorflow Serving 情境。
  • BulkInferrer

    • 可针对包含未标示推论要求的模型执行批次处理。
  • 这些元件之间的资料流向如下图所示:

    • 资料来->ExampleGen接收 。
    • StatisticsGen 接收 ExampleGen 数据产生统计情报,供 SchemaGen 产生 Schema、 ExampleValidator 验证资料之用。
    • SchemaGen 的资料定义也作为资料验证ExampleValidatorTransform 特徵工程之用。
    • Transform 特徵工程、Tuner 参数调整、Trainer 训练模型为机械学习系统熟悉的建模核心。
    • Trainer 训练的模型交由 Evaluator 确保能否将模型投入生产、InfraValidator 内部验证模型是否符合要求。
    • 经验证後的模型,透过 Pusher 部署在网页、手机终端设备、服务器等情境。

TFX 各程序库 (libraries) 与元件的关系

  • TFX pipeline 各元件与 TFX 程序模组关系对应:

  • 主要程序库包含

    • TensorFlow Data Validation (TFDV)。
      • TFX 元件ExampleGenStatisticsGenSchemaGenExampleValidator 皆属於 TFDV 程序库的功能。
    • TensorFlow Transform (TFT)。
    • TensorFlow。
    • KerasTuner。
    • TensorFlow Model Analysis (TFMA)。
    • TensorFlow Metadata (TFMD):
      • 提供中继资料的标准表示法,在使用 TensorFlow 训练机器学习模型时相当实用。中继资料可由手动产生,也可以在输入资料分析期间自动产生,并可用於资料验证、探索和转换。中继资料序列化格式包括:
    • ML Metadata (MLMD):
      • 用於记录和撷取有关机器学习开发人员和数据资料学家工作流程的中继资料。
      • 多数中继资料都使用 TFMD 表示法,MLMD 使用 SQL-Lite、MySQL 以及其他类似的资料储存库来管理稳定性。

支援技术

  • Apache Beam 是开放原始码形式的整合式模型,用於定义批次和串流资料平行处理管线。TFX 使用 Apache Beam 来实作资料平行管线。然後,管线会由 Beam 支援的其中一个分散式处理後端执行,这些後端包括 Apache Flink、Apache Spark、Google Cloud Dataflow 等等。
  • 可选用Apache Airflow 和 Kubeflow 等自动化调度管理工具可让您更轻松地设定、操作、监控及维护机器学习管线。
    • Apache Airflow

      • Apache Airflow 是一个平台,可透过程序辅助的方式编写、排程及监控工作流程。TFX 使用 Airflow 将工作流程编写为工作的有向非循环图 (DAG),而 Airflow 排程器会执行工作站阵列的工作,并且遵循指定的相依性。

      • 丰富的使用者介面方便您以视觉化的方式呈现在生产环境中执行的管线、监控进度,并视需要进行疑难排解。

      • 将工作流程定义为程序码,即可更轻松地进行维护、建立版本、测试和协同合作。

    • Kubeflow

      • Kubeflow 旨在方便於 Kubernetes 中部署机器学习 (ML) 工作流程,并提高其可携性与可扩充性。
      • Kubeflow 的目标并非重新建立其他服务,而是让您能以轻松直接的方式,将业界最佳的机器学习开放原始码系统部署至不同基础架构。
      • Kubeflow Pipelines 可让您在 Kubeflow 上撰写和执行可重现的工作流程,并整合实验功能和笔记本式的体验。
      • Kubernetes 上的 Kubeflow Pipelines 服务包括托管中继资料储存库、容器型自动化调度管理引擎、笔记本服务器和使用者介面,可协助使用者大规模开发、执行及管理复杂的机器学习管线。Kubeflow Pipelines SDK 可让您透过程序辅助的方式,来建立和共用管线的元件与组合。

小结

  • TFX 为了弹性可扩展的机械学习服务而生,切分多个模组串起机械学习流程,初步阅读与理解较为复杂,希望整理後能让您更容易理解。

参考


<<:  Day 0x1B UVa10922 2 the 9s

>>:  企划实现(13)

[Java]手把手带你实作PTT爬虫(2)-文章内容及储存

前言 上一篇教学实作了一个简单的爬虫并成功的爬到了 PTT 的文章列表 这次就继续将 PTT 文章内...

服务反应每慢一秒,转换率就会掉 12%

很多时候在讨论使用者友善,其实最简单粗暴,也最有感的改善之一就是让操作动作变快,也就是让用户更快得到...

见习村30 - A Chain adding function

30 - A Chain adding function Don't say so much, ju...

DAY 5 - 兔人 ~中秋节快乐~

在这里祝大家中秋节快乐啊~~ 大家有没有烤肉吃到饱呢~ 那麽~今天的乱涂乱画开始噜~ (灬ºωº灬)...

[Day 16] 以 Programmatic 取代 Annotation 的方式撰写 OpenAPI 文件

Spring Boot 使用 Annotation 撰写 OpenAPI Definition 我们...