gpt4 book ai didi

在 Ubuntu 18.04 上的 mlr R 包中运行随机搜索需要太长时间

转载 作者:行者123 更新时间:2023-12-04 18:40:00 26 4
gpt4 key购买 nike

当我使用 mlr 搜索 xgboost 的最佳超参数时遇到问题在 Ubuntu 18.04 上使用随机搜索方法在 R 中打包。这是搜索的设置代码:

eta_value <- 0.05
set.seed(12345)

# 2. Create tasks
train.both$y <- as.factor(train.both$y) # altering y in train.both!
traintask <- makeClassifTask(data = train.both,target = "y")

# 3. Create learner
lrn <- makeLearner("classif.xgboost",predict.type = "prob")
lrn$par.vals <- list(
objective="binary:logistic",
booster = "gbtree",
eval_metric="auc",
early_stopping_rounds=10,
nrounds=xgbcv$best_iteration,
eta=eta_value,
weight = train_data$weights
)

# 4. Set parameter space
params <- makeParamSet(
makeDiscreteParam("max_depth", values = c(4,6,8,10)),
makeNumericParam("min_child_weight",lower = 1L,upper = 10L),
makeDiscreteParam("subsample", values = c(0.5, 0.75, 1)),
makeDiscreteParam("colsample_bytree", values = c(0.4, 0.6, 0.8, 1)),
makeNumericParam("gamma",lower = 0L,upper = 7L)
)

# 5. Set resampling strategy
rdesc <- makeResampleDesc("CV",stratify = T,iters=10L)

# 6. Search strategy
ctrl <- makeTuneControlRandom(maxit = 60L, tune.threshold = F)

# Set parallel backend and tune parameters
parallelStartMulticore(cpus = detectCores())

# 7. Parameter tuning
timer <- proc.time()
mytune <- tuneParams(learner = lrn,
task = traintask,
resampling = rdesc,
measures = auc,
par.set = params,
control = ctrl,
show.info = T)
proc.time() - timer
parallelStop

如您所见,我将搜索任务分配给所有 CPU 内核。问题是已经超过 5 天了,任务仍在运行 - 这是 mlr任务的输出(在任务运行时显示):
[Tune] Started tuning learner classif.xgboost for parameter set:
Type len Def Constr Req Tunable Trafo
max_depth discrete - - 4,6,8,10 - TRUE -
min_child_weight numeric - - 1 to 10 - TRUE -
subsample discrete - - 0.5,0.75,1 - TRUE -
colsample_bytree discrete - - 0.4,0.6,0.8,1 - TRUE -
gamma numeric - - 0 to 7 - TRUE -
With control class: TuneControlRandom
Imputation value: -0
Mapping in parallel: mode = multicore; level = mlr.tuneParams; cpus = 16; elements = 60.

我曾经在我的 macbook pro 笔记本电脑上运行它,它在大约 8 小时内完成。笔记本电脑是 15 英寸 2018 2.6 GHz 英特尔酷睿 i7(6 核),配备 32 GB 内存 DDR4。
现在我在 上运行它很多更强大的计算机 - 唯一改变的是这是一个 Ubuntu 操作系统。我遇到此问题的机器是具有 Intel i9-9900K CPU @ 3.60GHz x 16 核的固定计算机。桌面为 GNOME 3.28.2,操作系统类型为 64 位,内存为 64GB。

我附上了我在运行 mlr 期间拍摄的屏幕截图。搜索任务 - 它显示并非所有 CPU 内核都在使用,当我在 MacBook Pro 笔记本电脑上运行它时,情况正好相反。

这里有什么问题?是否与 Ubuntu 系统及其并行化能力有关?
我发现了一个有点相似的 question在这里,但那里也没有明显的解决方案。

enter image description here

当我尝试从终端而不是从 RStudio 运行它时,似乎内核仍然没有使用:
run script from terminal

terminal output

最佳答案

根据您的屏幕截图,根本没有任何运行。根据您的设置,所有核心都应为 100%。

您的问题与您的操作系统本身无关。事实上,在并行化方面,Linux 通常是最佳选择。

在将“多核”模式与 xgboost 结合使用时,有时会出现一些问题,例如 https://github.com/berndbischl/parallelMap/issues/72 .

你可以简单地再试一次。如果这不起作用,请尝试将并行化模式切换为“socket”。

很难发现问题的真正根源,因为游戏涉及多个玩家(端口、与 openMP 的冲突等)。

关于在 Ubuntu 18.04 上的 mlr R 包中运行随机搜索需要太长时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58500471/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com