增加n_jobs对GridSearchCV没有影响

增加n_jobs对GridSearchCV没有影响,第1张

增加n_jobs对GridSearchCV没有影响

这是一些 可能 导致此行为的原因

  • 随着增加 线程数,初始化和释放每个线程会产生明显的开销。我在i7 7700HQ上运行了您的代码,每次增加时,我都会看到以下行为
    n_job
    • n_job=1
      n_job=2
      每个线程的时间(时间由每模型GridSearchCV评价充分训练模型和测试)为2.9s(总时间约2分钟)
    • n_job=3
      ,时间为3.4s(总时间1.4分钟)
    • n_job=4
      ,时间为3.8S(总时间58秒)
    • n_job=5
      ,时间为4.2s(总时间51秒)
    • n_job=6
      ,时间为4.2秒(总时间约为49秒)
    • n_job=7
      ,时间为4.2秒(总时间约为49秒)
    • n_job=8
      ,时间为4.2秒(总时间约为49秒)
  • 现在您可以看到,每个线程的时间增加了,但是总体时间似乎有所减少(尽管超过了

    n_job=4 the different was not exactly linear) and remained constained with
    n_jobs> = 6`,这是由于初始化和释放线程会产生成本)。请参见github问题和本期。

  • 此外,可能还有其他瓶颈,例如数据量太大,无法同时广播到所有线程,线程在RAM上抢占(或其他资源等),如何将数据推入每个线程等。

  • 我建议您阅读有关Ahmdal定律的信息,该定律指出通过并行化可以实现加速的理论界限,该界限由以下公式提供: Image Source:Ahmdal定律:Wikipedia

  • 最后,这可能是由于数据大小以及用于训练的模型的复杂性所致。

这是一篇博客文章,解释了有关多线程的相同问题。



欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5668654.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存