构建 TFX 管道

使用 Pipeline

TFX 管道使用 Pipeline 定义。以下示例演示了如何使用 Pipeline 类。

pipeline.Pipeline(
    pipeline_name=pipeline-name,
    pipeline_root=pipeline-root,
    components=components,
    enable_cache=enable-cache,
    metadata_connection_config=metadata-connection-config,
)

替换以下内容

  • pipeline-name: 此管道的名称。管道名称必须唯一。

    TFX 在查询 ML Metadata 以获取组件输入工件时使用管道名称。重复使用管道名称可能会导致意外行为。

  • pipeline-root: 此管道输出的根路径。根路径必须是编排器具有读写访问权限的目录的完整路径。在运行时,TFX 使用管道根目录为组件工件生成输出路径。此目录可以是本地的,也可以位于支持的分布式文件系统上,例如 Google Cloud Storage 或 HDFS。

  • components: 构成此管道工作流的组件实例列表。

  • enable-cache:(可选。)一个布尔值,指示此管道是否使用缓存来加快管道执行速度。

  • metadata-connection-config:(可选。)ML Metadata 的连接配置。

定义组件执行图

组件实例会生成工件作为输出,并且通常依赖于上游组件实例生成的工件作为输入。组件实例的执行顺序是通过创建工件依赖项的有向无环图 (DAG) 来确定的。

例如,ExampleGen 标准组件可以从 CSV 文件中提取数据并输出序列化示例记录。StatisticsGen 标准组件接受这些示例记录作为输入并生成数据集统计信息。在此示例中,StatisticsGen 的实例必须位于 ExampleGen 之后,因为 SchemaGen 依赖于 ExampleGen 的输出。

基于任务的依赖项

您还可以使用组件的 add_upstream_nodeadd_downstream_node 方法定义基于任务的依赖项。add_upstream_node 允许您指定当前组件必须在指定组件之后执行。add_downstream_node 允许您指定当前组件必须在指定组件之前执行。

管道模板

使用模板是快速设置管道并了解所有组件如何协同工作最简单的方法。有关使用模板的详细信息,请参阅在本地构建 TFX 管道

缓存

TFX 管道缓存允许您的管道跳过在先前管道运行中使用相同输入集执行过的组件。如果启用了缓存,管道将尝试将每个组件的签名、组件和输入集与该管道先前组件执行的其中一个进行匹配。如果匹配,管道将使用先前运行的组件输出。如果没有匹配,则会执行该组件。

如果您的管道使用非确定性组件,请勿使用缓存。例如,如果您创建一个组件来为您的管道创建随机数,启用缓存会导致该组件执行一次。在此示例中,后续运行将使用第一次运行的随机数,而不是生成随机数。