首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以在我的机器上使用tensorflow-transform并行预处理吗?

可以在我的机器上使用tensorflow-transform并行预处理吗?
EN

Stack Overflow用户
提问于 2019-01-04 23:09:42
回答 3查看 601关注 0票数 1

我正在尝试使用tensorflow-transform v0.11.0和beam仅在本地预处理更大量的数据(一个tfrecord文件~1Go)。

我的代码在很大程度上受到https://github.com/tensorflow/transform/blob/master/examples/census_example.py的启发

我有一个波束管道,可以处理较小的数据集(<100Mo),但随着我添加更多的数据,处理时间会急剧增加。作为tf-transform和apache Beam的新手,我很难找到问题的原因和解决方案……而且我想避免使用谷歌DataFlow。

如果我理解正确的话,我的管道使用beam directRunner在本地运行,但它只使用一个内核。使用多核可能是改善预处理时间的一种方法,但我不知道使用beam directRunner是否可能做到这一点。有没有办法让tensorflow-transform管道在我的机器上的多个内核上运行?

我查看了beam管道和directRunner的选项,但我找不到任何有关允许一个runner访问多个核心或为一个管道创建多个directRunners的指示。

非常感谢你对我的帮助!

EN

回答 3

Stack Overflow用户

发布于 2019-01-08 04:01:51

为了补充Anton的评论,您可以利用Apache Flink来并行运行管道。有关更多详细信息,请参阅Tensorflow transform on beams with flink runner

您还必须根据内核的总数设置并行度,并启动那些多个Flink TaskManagers。我的建议是将并行度设置为(核总数/2)

票数 1
EN

Stack Overflow用户

发布于 2019-01-05 03:20:18

我不相信这是被支持的。Direct runner的主要目的是确保管道正确地实现波束模型。它没有针对生产使用进行优化,实际上可能会引入低效:https://beam.apache.org/documentation/runners/direct/

作为一种解决办法,您可以手动启动多个直接流水线管道来处理不同部分的数据。

更好的选择是使用实际的并行运行器来运行这些类型的作业,例如,您可以启动一个Flink集群:https://beam.apache.org/documentation/runners/flink/

票数 0
EN

Stack Overflow用户

发布于 2019-01-14 19:06:33

@Ankur @Anton感谢你的回答,我同意这种方法对生产不友好……我们将尝试其他两种解决方案:

  • tensorflow-transform on DataFlow
  • removing tensorflow-对整个数据集

进行整体变换,并使用presto获取分类输入的词汇文件、计算均值和标准差以缩放数值输入等

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54041538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档