【问题标题】:How does the TensorFlow dataset handle large data that cannot fit into the memory in a server?TensorFlow 数据集如何处理无法装入服务器内存的大数据?
【发布时间】:2020-08-09 12:12:48
【问题描述】:

问题

TensorFlow 数据集如何处理无法装入服务器内存的大数据?

Spark RDD 可以处理多节点的大数据。对于Tensorflow Transform: How to find the mean of a variable over the entire dataset 中的问题,答案是使用Tensorflow Transform,它使用Apache Beam,需要Spark 等分布式计算集群。

如果我们有大型数据集,比如 50GB 的 CSV 文件,那么您如何计算平均值或其他类似统计数据。

因此我认为 TensorFlow 需要一个多节点集群,但不清楚 TensorFlow 是否有自己的集群实现,或者重用现有技术。由于 TensorFlow 预处理,例如获取列的均值或标准需要 Apache Beam,我猜它也是基于 Apache Beam,但不确定。

谷歌论文Large-Scale Machine Learning on Heterogeneous Distributed Systems 显示多个工人。

本文TensorFlow: A new paradigm for large scale ML in distributed systems告诉系统组件。

在系统组件方面,TensorFlow 由 Master、Worker 和 Client 组成,用于分布式协调和执行。

这个 Github TensorFlow2-tutorial/05-distributed-training/ 告诉 TF_CONFIG 指定节点 IP/端口。

TF_CONFIG='{"cluster": {"worker": ["10.1.10.58:12345", "10.1.10.250:12345"]}, "task": {"index": 0, "type": "worker"}}' python worker.py

TensorFlow 示例 Github Distributed TensorFlow 有以下部分,但看不到节点设置详细信息。

创建一个 tf.train.ClusterSpec 来描述集群

因此显然有一种方法可以设置 TensorFlow 集群,我想它可以处理大型数据集加载到 TF 数据集。

但是,Install TensorFlow 2 只显示:

# Current stable release for CPU and GPU
pip install tensorflow

请参阅有关如何设置 TensorFlow 多节点集群的分步文档,以及解释如何在 TF 中处理大数据加载的详细信息(类似于 Spark RDD/DataFrame 解释和内部)的资源。

【问题讨论】:

    标签: tensorflow


    【解决方案1】:

    您需要使用提取分块数据的生成器函数。每个想要发送的块都是通过一个**yield**操作。 Tensorflow 允许创建一个Dataset,它返回张量作为生成器函数产生的输入。这个数据集最终通过 .fit 方法查看如下:

    import itertools
    
    def gen():
      for i in itertools.count(1):
        yield (i, [1] * i)
    
    dataset = tf.data.Dataset.from_generator(
         gen,
         (tf.int64, tf.int64),
         (tf.TensorShape([]), tf.TensorShape([None])))
    
    list(dataset.take(3).as_numpy_iterator())
    
    train(dataset, max_steps=100)
    

    这种方法有几个好处:

    • 它在训练时限制 RAM 的使用(限制为块的大小)
    • 它允许异步流式传输(例如从大文件、远程数据库、网络抓取机器人等)

    【讨论】:

      猜你喜欢
      • 2018-01-13
      • 2016-07-16
      • 1970-01-01
      • 1970-01-01
      • 2017-12-11
      • 2020-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多