创建自定义 TFX 组件

图片

TensorFlow Extended (TFX) 是 Google 专为生产环境的机器学习流水线 (ML Pipeline) 部署而打造的平台,是 Google 机器学习服务和应用的中坚力量。目前我们已开放 TFX 的源代码,各地的开发者可在生产级 TFX 流水线上创建与部署自己的模型。


TFX 可以用多种方式扩展与自定义。我们曾在之前的文章中讲述过如何通过自定义 Executor 来变更 TFX 组件的行为。在本文中,我们将展示如何通过创建一个全新的 TFX 组件以及使用 TFX 流水线来自定义 TFX。

简介

TFX 提供了一套标准组件,可以进行组合从而形成标准的 ML 工作流。尽管这一套标准组件可以满足许多场景的需求,但仍有部分场景有额外需求,需进行定制。这些场景可以使用我们接下介绍的 自定义组件 来扩展 TFX。

在之前的一篇文章中,我们介绍过上下游语义(组件的输入和输出)与相同的场景,这类情况可以通过复用现有的组件并替换 Executor 的行为来创建新的 “半自定义” 组件。现有组件既可以是标准组件之一,也可以是您或其他人创建的自定义组件。


但是,如果新组件的上下游语义与现有组件不同,那么您需要创建新的 “完全自定义” 的自定义组件,这也是本文的主题。

文章后半部分将说明如何使用简单的HelloWorld组件从头开始创建自定义组件。为简单起见,HelloWorld 组件只会将所有输入复制为自己的输出,并提供给下游组件使用,以演示消耗和发出数据工件。

改进的流水线工作流

在开始编写代码之前,让我们看一下使用新的自定义组件更新后的工作流。如下方 图 1 和 图 2 所示,我们将在ExampleGen和所有依赖示例数据的下游组件之间加入新的 HelloWorld 组件。这意味着新组件:

  • 需要将 ExampleGen 的输出作为输入之一

  • 需要生成与 ExampleGen 相同类型的输出,以便最初依赖 ExampleGen 的组件得到相同的输入类型

图片

图 1 原工作流   

图片

图 2 加入新的自定义组件之后

构建自己的自定义组件

接下来,我们将逐步构建新组件。

通道

TFX 通道 (Channel) 是一个将数据生成者和数据消费者模型连接起来的抽象概念。从概念上讲,一个组件从通道读取输入工件,并将输出工件写入通道,作为下游组件的输入。通道使用工件类型进行类型化(如下一节所述),这意味着写入通道或从通道读取的所有工件都具有相同的工件类型。

ComponentSpec

首先,定义新组件的输入和输出,以及在组件执行中将会使用的其他参数。在ComponentSpec类中,我们将定义带有详细类型信息的协定。需要三个参数:

  • INPUTS:传递到组件 Executor 的输入工件的类型化参数字典。通常,输入工件是上游组件的输出,因此具有相同的类型。

    <
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值