簡體   English   中英

After fitting a model on R xgboost package, how can I release GPU memory?

[英]After fitting a model on R xgboost package, how can I release GPU memory?

我需要釋放xgboost model使用的GPU memory。 對於 python package,該過程似乎很簡單。 在您收集所需的信息后,只需在 model output上運行._ del_ () function 即可。 然而,在 R 的 output object 中沒有這樣的 function。 我怎么能在 R session 中做同樣的事情?

我努力了:

  1. 從 memory 中刪除 output 然后運行gc()
  2. 使用模型的 output .call () function
  3. 在單獨的進程上運行 model 並停止線程。 這會釋放 memory 但是當我再次嘗試運行它時會導致 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 的 memory 中刪除bst_gpu 有誰知道我怎么能做到這一點? 在 python 中, ._ del _()函數/方法將附加到bst_gpu object...

謝謝,

我設法使用第 3 項解決它:創建一個單獨的進程並停止線程。 停止子線程后,GPU memory 被清除。 秘密是父 R session 不能通過 xgboost 訪問 GPU,否則會發生以下崩潰。

Error in checkForRemoteErrors(val) : 
  2 nodes produced errors; first error: [23:17:55] /home/share/xgboost/src/c_api/../data/../common/common.h:44: /home/share/xgboost/src/tree/../common/device_helpers.cuh: 182: cudaErrorInitializationError: initialization error
Stack trace:
  [bt] (0) /home/R/x86_64-pc-linux-gnu-library/4.0/xgboost/libs/xgboost.so(+0x3f5828) [0x7f05434ad828]
  [bt] (1) /home/R/x86_64-pc-linux-gnu-library/4.0/xgboost/libs/xgboost.so(dh::ThrowOnCudaError(cudaError, char const*, int)+0x297) [0x7f05434b2ad7]
  [bt] (2) /home/R/x86_64-pc-linux-gnu-library/4.0/xgboost/libs/xgboost.so(dh::CheckComputeCapability()+0x113) [0x7f05436cdfb3]
  [bt] (3) /home/R/x86_64-pc-linux-gnu-library/4.0/xgboost/libs/xgboost.so(xgboost::tree::GPUHistMaker::Configure(std::vector<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM