小编MtD*_*van的帖子

将大量数据集转换为tf.data.Dataset的最佳数据流和处理解决方案

内容:

我的文本输入管道当前包括两个主要部分:

。复杂的文本预处理并导出tf.SequenceExamples到tfrecord(自定义标记化,词汇创建,统计信息计算,规范化以及整个数据集以及每个单独示例中的更多操作)。对于每个数据配置,只需完成一次。

。一个tf.Dataset(TFRecords)管道在训练期间也进行了大量处理(string_split转换为字符,表查找,存储区,条件过滤等)。

原始数据集存在于多个位置(BigQuery,GCS,RDS等)。

问题:

问题在于,随着生产数据集快速增长(几个TB),为每种可能的数据配置(第1部分具有很多超参数)重新创建tfrecords文件是不可行的,因为每个文件都将具有数百TB的巨大容量。更不用说,tf.Datasettf.SequenceExamples或tfrecords变大时,读取速度会意外降低。

有很多可能的解决方案:

  • Apache Beam +云数据流+ feed_dict;
  • tf.Transform;
  • Apache Beam + Cloud DataFlow + tf.Dataset.from_generator;
  • tensorflow /生态系统+ Hadoop或Spark
  • tf.contrib.cloud.BigQueryReader

,但以下任何一项似乎都无法完全满足我的要求:

  1. 如第一部分所述,实时传输和处理来自BigQuery,GCS,RDS等的数据。
  2. 直接以tf.Dataset一种或另一种方式直接发送数据(protos?)以用于第二部分。
  3. 快速可靠地进行训练和推理。
  4. (可选)能够针对数据的所选部分预先计算一些全程统计信息。

  5. 编辑: Python 3支持会很棒。

tf.data.Dataset管道最合适的选择是什么?在这种情况下,最佳做法是什么?

提前致谢!

google-bigquery google-cloud-dataflow tensorflow tensorflow-datasets tensorflow-transform

5
推荐指数
1
解决办法
505
查看次数