Tensorflow 针对tf.data.Dataset中大量数据集的最佳数据流和处理解决方案

Tensorflow 针对tf.data.Dataset中大量数据集的最佳数据流和处理解决方案,tensorflow,google-bigquery,google-cloud-dataflow,tensorflow-datasets,tensorflow-transform,Tensorflow,Google Bigquery,Google Cloud Dataflow,Tensorflow Datasets,Tensorflow Transform,上下文: 我的文本输入管道目前由两个主要部分组成: I。复杂的文本预处理,并将tf.SequenceExamples导出到tfrecords(自定义标记化、词汇创建、统计计算、规范化以及整个数据集以及每个示例的更多内容)。对于每个数据配置,都会执行一次 II。一个tf.Dataset(TFRecords)管道,在训练期间也会进行大量处理(string\u split为字符、表查找、bucketing、条件筛选等) 原始数据集存在于多个位置(BigQuery、GCS、RDS等) 问题: 问题在于,

上下文:

我的文本输入管道目前由两个主要部分组成:

I。复杂的文本预处理,并将
tf.SequenceExamples
导出到tfrecords(自定义标记化、词汇创建、统计计算、规范化以及整个数据集以及每个示例的更多内容)。对于每个数据配置,都会执行一次

II。一个tf.Dataset(TFRecords)管道,在训练期间也会进行大量处理(
string\u split
为字符、表查找、bucketing、条件筛选等)

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

问题:

问题在于,随着生产数据集的快速增长(数TB),为每个可能的数据配置(第1部分有很多超参数)重新创建tfrecords文件是不可行的,因为每个文件都有数百TB的巨大大小。更不用说,当
tf.SequenceExamples
或tfrecords的大小增加时,
tf.Dataset
的读取速度会惊人地减慢

有很多可能的解决方案:

  • apachebeam+云数据流+feed_dict
  • 转化
  • ApacheBeam+云数据流+tf.Dataset.from_生成器
  • tensorflow/生态系统+Hadoop或Spark
  • tf.contrib.cloud.BigQueryReader
,但以下两项似乎都不能完全满足我的要求:

  • 来自BigQuery、GCS、RDS等的实时数据流和处理。。。如第一部分所述
  • 以某种方式将数据(protos?)直接发送到
    tf.Dataset
    ,以便在第二部分中使用
  • 训练和推理快速可靠
  • (可选)能够预先计算选定数据部分的一些完整过程统计信息

  • 编辑:对Python 3的支持将非常棒

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


    提前谢谢

    我建议使用(气流的GCP集成)协调整个用例

    Airflow提供的运算符允许您使用脚本编排管道

    在您的情况下,当您有足够的数据进行处理时,可以使用来启动数据流作业

    要从BigQuery获取数据,可以使用


    此外,您还可以使用python操作符或bash操作符来监视和预计算统计信息。

    Beam现在支持Py3,并与tf.Transform集成。