这可能看起来很傻,但这是我在这里的第一篇帖子。抱歉如果我做错了什么。
我目前正在使用TFX 0.11(即tfdv-tft-tfserving)和tensorflow 1.11构建一个简单的机器学习管道,使用的是Python 2.7。我现在有一个Apache Flink集群,我想用它来运行TFX。我知道TFX背后的框架是Apache Beams 2.8,而Apache Beams目前通过一个便携式运行器层支持Flink的Python SDK。
但问题是,我如何通过这个便携式运行器的概念,使用Apache Beams和Flink运行器在TFX(tfdv-tft)中编写代码,因为TFX目前似乎只支持DirectRunner和DataFlowRunner(Google Cloud)。
我在网上搜索了一段时间,看到TFX网站上的最后一行,
“请将有关tf.Transform的问题直接提交到Stack Overflow,并使用tensorflow-transform标签。”
这就是我在这里的原因。任何想法或解决方案都将非常感激。谢谢你!
回答:
感谢你的提问。
免责声明:便携式Flink运行器仍处于实验阶段,仅适用于少量输入数据。
以下是如何通过Beam在Flink上运行TFX的方法。
前提条件
- Linux
- Docker
- Beam仓库:https://github.com/apache/beam
- 用于输入和输出的分布式文件系统。
运行Python管道的说明:https://beam.apache.org/roadmap/portability/#python-on-flink
注意:我们目前仅支持Flink 1.5.5
操作步骤
1) 构建工作容器:
- 进入Beam检出目录
- 运行gradle命令:./gradlew :beam-sdks-python-container:docker
2) 运行Flink的Beam JobServer:
- 进入Beam检出目录
- 运行gradle命令:./gradlew beam-runners-flink_2.11-job-server:runShadow注意:此命令不会结束,因为它会启动作业服务器并保持运行。
3) 提交管道
- 请参考https://github.com/angoenka/model-analysis/blob/hack_1/examples/chicago_taxi/preprocess_flink.sh
- 注意:请确保传递以下标志给你的管道
--experiments=beam_fn_api --runner PortableRunner --job_endpoint=localhost:8099 --experiments=worker_threads=100 --execution_mode_for_batch=BATCH_FORCED