首页 > 解决方案 > 是否可以在我的机器上使用 tensorflow-transform 并行化预处理?

问题描述

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

我的代码很大程度上来自https://github.com/tensorflow/transform/blob/master/examples/census_example.py

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

如果我理解正确的话,我的管道使用 beam directRunner 在本地运行,但它只使用一个核心。使用多核可能是缩短预处理时间的一种方法,但我不知道使用 beam directRunner 是否可行。有没有办法让张量流转换管道在我机器上的多个核心上运行?

我查看了光束管道和 directRunner 的选项,但找不到任何关于让运行器访问多个核心或为管道创建多个 directRunner 的迹象。

非常感谢您为我提供的任何帮助!

标签: python-2.7apache-beamtensorflow-transform

解决方案


要添加到 Anton 的评论中,您可以利用 Apache Flink 并行运行管道。更多细节总结在Tensorflow transform on beams with flink runner

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


推荐阅读