我们正在Google Cloud上建立机器学习管道,利用GC ML-Engine进行分布式TensorFlow培训和模型服务,并利用DataFlow进行分布式预处理工作。
我们希望在Google Cloud上运行我们的Apache Beam应用程序作为DataFlow作业。看着ML-Engine samples 似乎可以通过 tensorflow_transform.beam.impl AnalyzeAndTransformDataset 指定要使用的 PipelineRunner ,如下所示:
from tensorflow_transform.beam import impl as tft
pipeline_name = "DirectRunner"
p = beam.Pipeline(pipeline_name)
p | "xxx" >> xxx | "yyy" >> yyy | tft.AnalyzeAndTransformDataset(...)
TemplatingDataflowPipelineRunner提供了将预处理开发与参数化操作分开的功能 - 请参阅此处:https://cloud.google.com/dataflow/docs/templates/overview - 基本上:
问题是:您能否告诉我们如何使用 tf.Transform 来利用 TemplatingDataflowPipelineRunner ?
答案 0 :(得分:6)
Python模板于2017年4月开始提供(请参阅documentation)。操作它们的方法如下:
class UserOptions(PipelineOptions): @classmethod def _add_argparse_args(cls, parser): parser.add_value_provider_argument('--value_provider_arg', default='some_value') parser.add_argument('--non_value_provider_arg', default='some_other_value')
请注意,Python没有TemplatingDataflowPipelineRunner,Java 2.X也没有(与Java 1.X不同)。
答案 1 :(得分:1)
不幸的是,Python管道不能用作模板。它仅适用于Java today。由于你需要使用python库,所以不可行。
tensorflow_transform还需要支持ValueProvider,以便您可以通过它传递选项作为值提供者类型。