【问题标题】:TensorFlow Extended (TFX): Clarify Beam, Airflow and Kubeflow usageTensorFlow Extended (TFX):阐明 Beam、Airflow 和 Kubeflow 的使用
【发布时间】:2019-05-17 20:06:08
【问题描述】:

我希望有人能澄清 TensorFlow 及其依赖项(Beam、AirFlow、Flink 等)之间的关系

我指的是 TFX 主页面: https://www.tensorflow.org/tfx/guide#creating_a_tfx_pipeline_with_airflow 等等。

在示例中,我看到了三个变体: https://github.com/tensorflow/tfx/tree/master/tfx/examples/chicago_taxi_pipeline taxi_pipeline_flink.pytaxi_pipeline_kubeflow.pytaxi_pipeline_simple.py

BEAM 示例?

没有“BEAM”示例,也很少描述其用途。

假设taxi_pipeline_simple.py 即使没有安装气流也会运行是否正确?我认为不是,因为它使用“AirflowDAGRunner”。如果没有,那么您可以仅使用 BEAM 及其运行器运行 TFX 吗?如果是这样,为什么没有这样的例子?

Flink 示例

taxi_pipeline_flink.py 中,使用了 AirflowDAGRunner。我假设使用 AirFlow 作为编排器,而编排器又使用 Flink 作为其执行器。对吗?

气流示例

该页面指出 BEAM 是必需的依赖项,但气流没有将梁作为其执行者之一。它只有 SequentialExecutor、LocalExecutor、CeleryExecutor、DaskExecutor 和 KubernetesExecutor。因此,BEAM 是否仅在不使用 Airflow 时才需要?使用气流时,如果需要,光束的用途是什么?

感谢您提供任何见解。

【问题讨论】:

  • 觉得这是一个 tfx 特有的问题,你试过他们的用户组吗?
  • 非常好 :) TensorFlow 使 stackoverflow 成为他们事实上的 Q/A 论坛。我认为没有响应的原因是 TFX 是相当新的,对许多人来说它是多余的。
  • 问题是否仍然是最新的?现在,我可以看到一个 tax_pipeline_beam.py 示例,它不使用气流(如预期的那样)。此外,关于光束和气流:tfx 总是使用 Beam,在这种情况下用于某些组件中的数据操作。然后,您有了编排工具,Beam 和 Airflow 也可以用作其中之一。
  • 将评论作为更完整的答案放在下面..

标签: python tensorflow apache-flink airflow apache-beam


【解决方案1】:

A) 为了运行 TFX 管道,您需要编排器。例如 Apache Airflow、Kubeflow Pipelines 和 Apache Beam。

B) Apache Beam 还(可能主要)用于某些 TFX 组件中的分布式数据处理。因此,Apache Beam 对于您选择的任何编排器都是必需的(即使您不使用 Apache Beam 作为编排器!)

回答你的观点:

1) BEAM 示例 - 现在https://github.com/tensorflow/tfx/blob/master/tfx/examples/chicago_taxi_pipeline/taxi_pipeline_beam.py 有一个 Beam 示例。正如您正确预期的那样,那里没有 AirflowDAGRunner,因为此示例不使用 Airflow 作为协调器。

2) 气流示例 - 由于上述原因,BEAM 是必需的依赖项:TFX 始终使用 BEAM 来处理某些组件中的分布式数据。因此,即使使用 Airflow(或任何其他)作为编排器,您也需要 BEAM。

3) Flink 示例 - 目前,我无法在任何地方找到此示例(可能是由于您发布后链接的更改),但 Flink 可能会用作运行器,而 Airflow 是协调器。但是,我在 Airflow 的文档中找不到对 Flink 的提及。

希望在一定程度上有所帮助。

【讨论】:

  • 难道不是因为 Beam 是(或可以是)对 Flink 的抽象,因此可能没有一个好的 Flink 示例吗?因此,任何 Beam 示例都隐含地是 Flink 示例(如果您的 Beam 设置为使用 Flink 作为其运行器)。所以这样一来,像 TF 这样的项目就可以“说”Beam,但是我们可以把它设置为在 Flink 上运行,所以项目不需要 Flink 特定的文档(从而肯定了选择抽象层的价值……没有再需要一个DataFlow的例子加上Flink,再加上Spark……)
猜你喜欢
  • 2021-04-28
  • 2020-12-08
  • 2021-12-16
  • 2021-12-21
  • 2019-11-29
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
  • 1970-01-01
相关资源
最近更新 更多