python-2.7 - 是否可以在我的机器上使用 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 的迹象。
非常感谢您为我提供的任何帮助!
解决方案
要添加到 Anton 的评论中,您可以利用 Apache Flink 并行运行管道。更多细节总结在Tensorflow transform on beams with flink runner
您还必须根据内核总数设置并行度并启动许多 Flink TaskManager。我的建议是将并行度设置为(内核总数/2)
推荐阅读
- javascript - 使用 Deno 和 Oak 处理多部分/表单数据
- vb.net - 访问更新查询不更改值
- ruby-on-rails - 在 ruby on rails 中保留特定路线而不影响并设计
- java - Elastic Beanstalk、Java Spring Boot 和 RDS 多可用区部署
- java - 如何更改我的代码,这样我就不必使用“break”?
- fortran - 如何在蒙特卡洛将 N 从 10 个随机点增加到 10^8 点
- php - Laravel HTTP 测试 - 确保 JSON 响应在数组中具有特定值
- c - 访问命令行参数时出现分段错误 ~ CS50
- arrays - 如何根据查询条件从数组中检索所有对象?
- linux - 使用其他脚本作为变量在 bash 脚本中堆叠 SSH 命令参数时出错