【发布时间】:2021-04-24 04:32:06
【问题描述】:
我需要释放 xgboost 模型使用的 GPU 内存。对于 python 包来说,这个过程似乎很简单。收集到here 所见的所需信息后,只需在模型输出上运行 ._del_() 函数即可。然而,R 的输出对象中没有这样的函数。我怎么能在 R 会话中做同样的事情?
我试过了:
- 从内存中删除输出,然后运行 gc()。
- 使用模型的输出.call()函数
- 在单独的进程上运行模型并停止线程。这会释放内存,但当我尝试再次运行时 xgboost 会崩溃。
这段代码来自xgboost的例子:
library('xgboost')
# Simulate N x p random matrix with some binomial response dependent on pp columns
set.seed(111)
N <- 1000000
p <- 50
pp <- 25
X <- matrix(runif(N * p), ncol = p)
betas <- 2 * runif(pp) - 1
sel <- sort(sample(p, pp))
m <- X[, sel] %*% betas - 1 + rnorm(N)
y <- rbinom(N, 1, plogis(m))
tr <- sample.int(N, N * 0.75)
dtrain <- xgb.DMatrix(X[tr, ], label = y[tr])
dtest <- xgb.DMatrix(X[-tr, ], label = y[-tr])
wl <- list(train = dtrain, test = dtest)
param <- list(objective = 'reg:logistic', eval_metric = 'auc', subsample = 0.5, nthread = 4,
max_bin = 64, tree_method = 'gpu_hist')
pt <- proc.time()
bst_gpu <- xgb.train(param, dtrain, watchlist = wl, nrounds = 50)
proc.time() - pt
我需要从 GPU 的内存中擦除 bst_gpu。有谁知道我怎么能做到这一点?在 python 中,._del_() 函数/方法将附加到 bst_gpu 对象...
谢谢,
【问题讨论】:
标签: r memory-management gpu xgboost