我正在使用h2o进行一些建模,并对模型进行了调整,现在我希望它可以用于执行许多预测,大约60亿次预测/行,每个预测行需要80列数据
数据集我已经分解了输入数据集,以使其位于约500 x 1200万行的数据块中,每个数据块都具有相关的80列数据。
但是将1200万乘80列的data.table
上传到h2o花费的时间很长,而对我来说,这样做500次却花费了很长的时间...我认为这是因为它是在上传对象之前先解析对象。
预测部分在比较中相对较快。
有什么建议可以加快这部分的速度吗?更改内核数量会有所帮助吗?
下面是这些问题的可重现示例...
# Load libraries
library(h2o)
library(data.table)
# start up h2o using all cores...
localH2O = h2o.init(nthreads=-1,max_mem_size="16g")
# create a test input dataset
temp <- CJ(v1=seq(20),
v2=seq(7),
v3=seq(24),
v4=seq(60),
v5=seq(60))
temp <- do.call(cbind,lapply(seq(16),function(y){temp}))
colnames(temp) <- paste0('v',seq(80))
# this is the part that takes a long time!!
system.time(tmp.obj <- as.h2o(localH2O,temp,key='test_input'))
#|======================================================================| 100%
# user system elapsed
#357.355 6.751 391.048
最佳答案
由于您是在本地运行H2O,因此您希望将该数据另存为文件,然后使用:
h2o.importFile(localH2O, file_path, key='test_intput')
这将使每个线程并行读取文件的各个部分。如果在单独的服务器上运行H2O,则需要将数据复制到服务器可以读取的位置(大多数人没有将服务器设置为从笔记本电脑的文件系统读取)。
as.h2o()
将文件串行上传到H2O。使用h2o.importFile()
,H2O服务器找到文件并并行读取。您似乎正在使用H2O的版本2。相同的命令在H2Ov3中也可以使用,但是某些参数名称有所更改。新的参数名称在这里:http://cran.r-project.org/web/packages/h2o/h2o.pdf
关于r - R中的as.h2o()将文件上传到h2o环境需要很长时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30821865/