当前位置: 首页 > 知识库问答 >
问题:

如何在tf中使用Google DataFlow Runner和模板。使改变

刘棋
2023-03-14

我们正在谷歌云上建立机器学习管道,利用GC ML-Engine进行分布式TensorFlow训练和模型服务,利用DataFlow进行分布式预处理作业。

我们想在谷歌云上运行我们的Apache Beam应用程序作为DataFlow作业。查看ML-Engine示例,似乎可以获得tensorflow_transform.beam.implAnalyzeAndTransformDataset来指定要使用的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-基本上:

  • A) 在PipelineOptions派生类型中,将选项类型更改为ValueProvider(python方式:类型推断或类型提示?)
  • B) 将runner更改为TemplatingDataflowPipelineRunner
  • C) mvn原型:生成以在GCS中存储模板(python方式:类似TF Hypertune的yaml文件?)
  • D) gcloud beta数据流作业运行--gcs位置-参数

问题是:你能告诉我如何使用tf吗。转换为利用TemplatingDataflowPipelineRunner?

共有2个答案

常子濯
2023-03-14

不幸的是,Python管道不能用作模板。它现在只适用于Java。因为您需要使用python库,所以这样做是不可行的。

tensorflow_转换还需要支持ValueProvider,以便您可以将选项作为值提供程序类型传递给它。

鄢博简
2023-03-14

Python模板从2017年4月开始提供(见留档)。操作它们的方法如下:

  • 定义从PipelineOptions子类化的UserOptions
  • 使用add_value_provider_参数API添加要参数化的特定参数
  • 常规的非参数化选项将继续使用argparse的add_参数定义
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,也没有Java2。X(不像Java1。X)。

 类似资料:
  • 我正在做一个项目,我需要使用几个DateTime字段,我已经在我的模型中定义了,然后在模板中,我正在使用https://tempusdominus.github.io/bootstrap-4/插件,但是当我提交表单时,有两个问题来吧: 1) :Django说为所有DateTime字段输入有效的日期/时间(2):选择有效选项<代码>[“玉米油”]不是可用选项之一。 以下是我尝试过的: 从: 从: 从

  • 我有一个非常特殊的例子,我需要在一个模板文本中使用一个模板文本,但是我做不到。 代码如下所示: 然而,我必须将其包装在函数中,同时保持变量的值,这会导致错误发生。无论我是否逃脱了滴答声。 使用转义滴答,我收到以下错误消息: 错误:预期的某个链接但未提供 没有,我得到: 意外标记,预期“”,” 我该怎么处理这件事? 编辑:可能应该注意的是,中传递的代码将被渲染并且需要使用它。它最终将通过传递给另一个

  • 我有这个Go模板: 我正在尝试使用此模板: 然而,它不起作用,因为正如text/templategodoc所说,对和/或函数的参数都进行了求值。 当<code>$b.Trigger时。名称被求值,因为可以为零。因此它返回错误:

  • 问题内容: 是否可以渲染模板并在同一路径中使用? 现在,我正在使用序列化数据,但是这样做确实有些奇怪。我想使用,因为执行此操作时,我得到一个非常漂亮的输出,似乎可以更好地与之配合使用: 有什么办法可以将两者结合起来吗? 问题答案: 如果你需要在一条路由中针对不同的情况返回不同的响应对象:转换转换为有效并返回已经存在的对象,因此可以在同一路由中使用这两种方法:

  • 在 Adobe Illustrator 版本 CC 2015.3 及更早版本中创建文档... 注意:本文与 Adobe Illustrator CC 2015.3 及更早版本有关。从 CC 2017 版开始,Illustrator 提供了一种新的文档创建体验。现在,创建新文档时,您可以从多种模板和预设中进行选择,其中包括来自 Adobe Stock 的模板。有关详细信息,请参阅创建文档。 关于新文

  • 使用,我在基本模板中定义了一个,其中包含默认内容。在某些情况下,我希望这个块为空,所以我想我可以重新定义它的名称,并使它不包含以下内容: 不知何故,Go似乎认为这个定义是“零”,并且仍然会呈现默认内容,除非我将任何非空白内容放入定义中。 我在Golang repo上发现了这个问题,它在一个游乐场示例中很好地描述了同样的事情: 奇怪的是,这个问题提到它是固定的(如果我理解正确的话,它在1.8.1中着