You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

mlr3嵌套交叉验证并行化配置优化技术咨询

嵌套交叉验证的并行设置与参数疑问解答

问题背景

现有一台32核机器,希望高效执行含5个外层折、3个内层折的嵌套交叉验证(nested CV)。外层折需对2个及以上学习器进行基准测试(benchmark),内层折需对其中1个或多个学习器进行超参数调优。需明确以下问题:

  • 如何设置batch_size与future::plan()?
  • term_evals与batch_size存在怎样的关联?
  • 提供的代码是否合理?(个人倾向于让内层循环并行运行,但对term_evals和batch_size的设置存疑)

用户提供的代码如下:

lrn1 <- auto_tuner(
  method = "random_search",
  learner = lrn1,
  resampling = rsmp("cv", folds = 3),
  measure = msr("classif.auc"),
  term_evals = 100,
  batch_size = 10,
  store_models = TRUE
)

design = benchmark_grid(task = task, learner = c(lrn1, lrn2), resampling = rsmp("cv", folds = 5))

# Runs the inner loop in parallel and the outer loop sequentially
future::plan(list("sequential", "multisession"))

bmr = benchmark(design, store_models = TRUE)

解答

1. future::plan() 设置

你选择的list("sequential", "multisession")完全符合「内层并行、外层串行」的需求,这个方向是对的,还可以进一步优化核数利用:

  • 外层串行意味着5个外层折会依次执行,每个外层折内的任务(比如lrn1的超参数调优+lrn2的直接训练)可以并行处理。
  • 考虑到是32核机器,内层并行时建议指定workers参数避免资源浪费,比如写成plan(list("sequential", multisession(workers = 24)))——预留8个核给系统进程和外层任务的基础开销,防止机器负载过高导致运行效率下降。

2. term_evals与batch_size的关联

  • term_evals是随机搜索的总超参数组合尝试次数,你设置为100,就意味着会测试100组不同的超参数配置。
  • batch_size是每一批次并行执行的超参数组合数量,也就是每次同时跑多少个调优任务。
  • 两者的直接关系:总批次数 = term_evals / batch_size(能整除时),若不能整除则最后一批的任务数少于batch_size。比如你设置的100和10,会分成10批,每批跑10个任务。
  • 设置batch_size时要匹配并行资源:如果内层并行的workers是24,把batch_size设为24(或略低的20),能让每一批都把并行资源用满,减少批次切换的额外开销。

3. 代码合理性分析

  • 整体架构是合理的:用auto_tuner封装内层3折交叉验证的超参数调优,用benchmark_grid+benchmark实现外层5折交叉验证的基准测试,并行策略也契合你的需求。
  • 可优化点:
    • batch_size可以根据内层并行的worker数调整,比如内层用24个workers时,把batch_size设为24会比10更高效,避免资源闲置。
    • 若想进一步挖掘32核的潜力,也可以尝试外层并行的配置:list(multisession(workers=5), multisession(workers=6))——外层5个折并行执行,每个折分配6个核(总核数5*6=30,留2个给系统),但这种方式需要注意任务间的资源竞争,如果你更倾向稳定的内层并行,原来的串行外层设置更稳妥。
    • term_evals=100是否合适取决于超参数空间的大小:如果超参数维度多、可选值范围大,100次尝试可能不足以覆盖有效配置;如果超参数空间较小,100次足够,这个需要结合具体任务判断,没有绝对标准。

内容的提问来源于stack exchange,提问作者persephone

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:35:19