H2o:迭代大于内存的数据而不将所有数据加载到内存中

H2o: Iterating over data bigger than memory without loading all data into memory

有没有办法可以使用H2O迭代大于集群累积内存大小的数据?我有一个大数据集,我需要对其进行分批迭代并输入 Tensorflow 进行梯度下降。在给定的时间,我只需要在内存中加载一批(或少数)。有没有一种方法可以设置 H2O 来执行这种迭代,而无需将整个数据集加载到内存中?

这是一个一年多前回答的相关问题,但没有解决我的问题:

简短的回答是,这不是 H2O 的设计目的。 所以很遗憾,今天的答案是否定的。


较长的答案...(假设问题的目的是关于 H2O 中的模型训练-3.x...)

我能想到至少两种想要以这种方式使用 H2O 的方式:一次性流式传输和交换。

将单通道流式处理视为有连续的数据流输入,数据不断地被处理然后被丢弃(或传递)。

将交换视为计算机科学中的交换,其中存在快速存储(内存)和慢速存储(磁盘),并且算法不断扫描数据并将数据从磁盘错误(交换)到内存。

数据越大,从性能角度来看,交换变得越来越糟糕。 H2O 从未以这种方式进行过测试,您只能靠自己。也许您可以在其他引用的 Whosebug 问题(或源代码)中弄清楚如何从 clues/hints 启用不受支持的交换模式,但是从来没有人那样运行过,您只能靠自己了。 H2O 的架构旨在通过将数据保存在内存中来加快机器学习速度。机器学习算法一次又一次地迭代扫描数据。如果每次数据接触都在磁盘上,那不是内存中 H2O-3 平台旨在提供的体验。

流媒体用例,尤其是深度学习和 DRF 等算法,对于 H2O 来说绝对更有意义。 H2O 算法支持检查点,你可以想象一个场景,你读取一些数据,训练一个模型,然后清除数据并读入新数据,并从检查点继续训练。在深度学习案例中,您将使用新数据更新神经网络权重。在 DRF 案例中,您将根据新数据添加新树。