当前位置: 首页 > 知识库问答 >
问题:

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

张智
2023-03-14

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

这是一个相关的问题,一年多前就已经回答了,但没有解决我的问题:在h2o中加载大于内存大小的数据

共有1个答案

赖淇
2023-03-14

简而言之,这并不是H2O设计的目的。所以不幸的是,今天的答案是否定的。

更长的答案...(假设问题的意图是关于H2O-3.x的模型训练...)

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

可以把一遍流想象成有一个连续的数据流输入,数据不断地被处理,然后被丢弃(或传递)。

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

从性能的角度来看,数据越大,交换越糟糕。H2O从来没有这样测试过,你只能靠自己。也许你可以从另一个引用的堆栈溢出问题(或源代码)中的线索/提示中找到如何启用不受支持的交换模式,但没有人这样运行,你只能靠自己。H2O被设计成通过将数据保存在内存中来快速进行机器学习。机器学习算法一次又一次地迭代扫描数据。如果每次数据触摸都击中磁盘,那就不是内存H2O-3平台旨在提供的体验。

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

 类似资料:
  • 我正在尝试在h2o中加载大于内存大小的数据。 H2o博客提到: 下面是连接到h2o 3.6.0.8的代码: 给 我试着把一个169 MB的csv加载到h2o中。 这抛出了一个错误, 这表示内存溢出错误。 问:如果H2opromise加载大于其内存容量的数据集(如上面的博客引述所说的交换到磁盘机制),这是加载数据的正确方法吗?

  • 问题内容: 我正在尝试加载大于h2o中的内存大小的数据。 H2o 博客提到: 这是连接到的代码: 给 我试图将169 MB的csv加载到h2o中。 这引发了错误, 这表示内存不足错误。 问题:如果H2o承诺加载大于其内存容量的数据集(如上面的博客引文所述,交换到磁盘机制),这是加载数据的正确方法吗? 问题答案: 由于性能太差,默认情况下前一会默认禁用“交换到磁盘”。流血边缘(不是最新稳定的)具有启

  • 问题内容: 我有一个.jsp页面,其中有一个GUI表,该表显示来自Oracle数据库的记录。该表允许典型的分页行为,例如“ FIRST”,“ NEXT”,“ PREVIOUS”和“ LAST”。记录是从Java ResultSet对象获得的,该对象是从执行SQL语句返回的。 这个ResultSet可能很大,所以我的问题是: 如果我的ResultSet包含一百万条记录,但是我的表仅显示ResultS

  • 我的Codename One应用程序下载了大约16000条数据记录(每条记录中大约有10个字段)。 在我的Android手机(OS6.0,RAM 2GB)上,它能够加载8000到9000条记录,但随后显示内存不足错误。 从跟踪来看,它似乎用完了分配给应用程序的堆内存。 有什么建议吗?请问处理如此大量数据的理想方法是什么? 这是日志文件

  • 问题内容: 我想知道是否有人对我即将从事的工作有任何经验。我有几个csv文件,它们的大小都在一个GB左右,我需要将它们加载到oracle数据库中。虽然加载后我的大部分工作都是只读的,但我仍需要不时加载更新。基本上,我只需要一个很好的工具即可一次将多行数据加载到数据库中。 到目前为止,这是我发现的内容: 我可以使用SQL Loader来完成很多工作 我可以使用批量插入命令 某种批量插入。 以某种方式

  • 问题内容: 我有一个现有的db文件,需要在其上进行一些广泛的计算。从文件进行计算非常缓慢,并且文件不大(〜),因此将其加载到内存应该没有问题。 是否有Python方式将现有文件加载到内存中以加快计算速度? 问题答案: 这是我为flask应用程序编写的代码段: