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

如何限制sklearn中GridSearchCV的CPU使用率?

解决GridSearchCV结合LightGBM时CPU占满的问题

你的问题核心在于GridSearchCV的n_jobs控制的是交叉验证的并行任务数,但LightGBM模型本身训练时默认会占用所有CPU核心。即使你限制了GridSearchCV的并行数,每个并行任务里的模型训练都会抢占全部核心,最终导致总CPU占用拉满。

解决方案:同时限制模型内部的并行参数

LightGBM提供了n_jobs(或等价的num_threads)参数来控制单模型训练时使用的核心数,你需要在模型初始化时固定这个参数,避免它默认占满核心。

修改代码示例:

gsearch_lgb = GridSearchCV(
    # 在模型初始化时添加n_jobs参数,限制单模型训练的核心数
    model(**{**self.model_params, "n_jobs": 1}),
    param_grid=self.model_params,
    n_jobs=2,
    verbose=99,
    scoring=self.cv_scoring,
    cv=4,
)

注意事项:

  • 如果你的param_grid中包含n_jobs参数,需要确保网格搜索的参数值也是较小的合理值(比如[1,2]),否则会覆盖你在模型初始化时设置的参数,再次导致核心占满。
  • 总CPU核心占用约为 GridSearchCV的n_jobs × 单模型的n_jobs,你可以根据自己的CPU核心数调整这两个数值,比如GridSearchCV设为2,单模型设为1,总占用就是2个核心。
  • 也可以直接在self.model_params中预先加入"n_jobs": 1,这样模型初始化时就会自动应用这个限制,无需在GridSearchCV里额外覆盖。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:57:09