将 glmnet 与未来一起使用
using glmnet with future
在 windows 上,我在使用 library(doparallel)
时遇到困难,它似乎在几次 glmnet
调用后崩溃了
所以我正在尝试将 future
程序包 (https://github.com/HenrikBengtsson/future) 与 glmnet
一起使用,但我不确定在这里进行的最佳方式是什么。
这是一个简单的例子(非并行化)
X = matrix(rnorm(1e4 * 200), 1e4, 200)
Y = rnorm(1e4)
system.time(cv.glmnet(X, Y))
user system elapsed
3.42 0.22 3.67
我如何使用 futures 来使用我所有的 4 个内核(在我的本地机器上 - 没有像 executing glmnet in parallel in R 中那样的分布式集群)
谢谢!
这似乎有效。至少用户时间要低很多,但由于并行开销,系统时间增加了。
library("doFuture")
registerDoFuture()
plan(multiprocess, workers = 4L)
system.time(cv.glmnet(X, Y, parallel = TRUE))
user system elapsed
0.46 0.17 5.59
versus
system.time(cv.glmnet(X, Y))
user system elapsed
2.33 0.05 2.39
在 windows 上,我在使用 library(doparallel)
时遇到困难,它似乎在几次 glmnet
调用后崩溃了
所以我正在尝试将 future
程序包 (https://github.com/HenrikBengtsson/future) 与 glmnet
一起使用,但我不确定在这里进行的最佳方式是什么。
这是一个简单的例子(非并行化)
X = matrix(rnorm(1e4 * 200), 1e4, 200)
Y = rnorm(1e4)
system.time(cv.glmnet(X, Y))
user system elapsed
3.42 0.22 3.67
我如何使用 futures 来使用我所有的 4 个内核(在我的本地机器上 - 没有像 executing glmnet in parallel in R 中那样的分布式集群)
谢谢!
这似乎有效。至少用户时间要低很多,但由于并行开销,系统时间增加了。
library("doFuture")
registerDoFuture()
plan(multiprocess, workers = 4L)
system.time(cv.glmnet(X, Y, parallel = TRUE))
user system elapsed
0.46 0.17 5.59
versus
system.time(cv.glmnet(X, Y))
user system elapsed
2.33 0.05 2.39