H2O使用过多RAM和稀疏矩阵

H2O使用过多RAM和稀疏矩阵,r,sparse-matrix,h2o,R,Sparse Matrix,H2o,我使用H2O和一个维数为700000 x 800000的SVMLight稀疏矩阵。磁盘上的文件大小约为~800MB。但将其导入H2O需要超过300GB的RAM?该过程也需要太长时间(约15分钟)才能完成 相比之下,我可以使用矩阵包在RAM中创建和存储稀疏矩阵。在这种情况下,稀疏矩阵需要约1.2GB的RAM 下面是我的代码: library(h2o) h2o.init(nthreads=-1,max_mem_size = "512g") x <- h2o.importFile('test2

我使用H2O和一个维数为700000 x 800000的SVMLight稀疏矩阵。磁盘上的文件大小约为~800MB。但将其导入H2O需要超过300GB的RAM?该过程也需要太长时间(约15分钟)才能完成

相比之下,我可以使用矩阵包在RAM中创建和存储稀疏矩阵。在这种情况下,稀疏矩阵需要约1.2GB的RAM

下面是我的代码:

library(h2o)
h2o.init(nthreads=-1,max_mem_size = "512g")

x <- h2o.importFile('test2.svmlight', parse = TRUE)

我非常喜欢H2O,并希望将其用于此项目,因此我非常感谢您的建议。

H2O将数据存储在列压缩存储中,并且经过优化,可以很好地处理具有大量(数十亿+)行和大量(数千+)列的数据集

每一列都存储在一堆H2O称之为块的东西中。块是一组连续的行。一个块可能是稀疏的,因此如果一个块包含10000行,并且它们都丢失了,那么该块所需的内存量可能非常小。但这一块仍然需要存在

实际上,这意味着H2O稀疏地存储行,但不稀疏地存储列。因此,它不会像用于广泛数据的纯稀疏矩阵包那样高效地存储数据

在您的具体案例中,800000列正在推动H2O的极限


关于H2O,有些人不知道的一件事是它能有效地处理分类列。所以,如果您通过手动对数据进行1-hot编码来获得列爆炸,则不需要使用H2O。另一种数据表示方式会更有效。

H2O将数据存储在列压缩存储中,并经过优化,可以很好地处理具有大量(数十亿+)行和大量(数千+)列的数据集

每一列都存储在一堆H2O称之为块的东西中。块是一组连续的行。一个块可能是稀疏的,因此如果一个块包含10000行,并且它们都丢失了,那么该块所需的内存量可能非常小。但这一块仍然需要存在

实际上,这意味着H2O稀疏地存储行,但不稀疏地存储列。因此,它不会像用于广泛数据的纯稀疏矩阵包那样高效地存储数据

在您的具体案例中,800000列正在推动H2O的极限

关于H2O,有些人不知道的一件事是它能有效地处理分类列。所以,如果您通过手动对数据进行1-hot编码来获得列爆炸,则不需要使用H2O。另一种数据表示将更有效

openjdk version "1.8.0_121"
OpenJDK Runtime Environment (build 1.8.0_121-b13)
OpenJDK 64-Bit Server VM (build 25.121-b13, mixed mode)

Starting H2O JVM and connecting: .. Connection successful!

R is connected to the H2O cluster: 
H2O cluster uptime:         2 seconds 76 milliseconds 
H2O cluster version:        3.14.0.3 
H2O cluster version age:    1 month and 8 days  
H2O cluster name:           H2O_started_from_R_ra2816_fhv677 
H2O cluster total nodes:    1 
H2O cluster total memory:   455.11 GB 
H2O cluster total cores:    24 
H2O cluster allowed cores:  24 
H2O cluster healthy:        TRUE 
H2O Connection ip:          localhost 
H2O Connection port:        54321 
H2O Connection proxy:       NA 
H2O Internal Security:      FALSE 
H2O API Extensions:         XGBoost, Algos, AutoML, Core V3, Core V4 
R Version:                  R version 3.4.1 (2017-06-30)