首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >n_jobs=-1还是n_jobs=1?

n_jobs=-1还是n_jobs=1?
EN

Data Science用户
提问于 2021-07-23 16:54:31
回答 1查看 206关注 0票数 1

对于某些模型和简历中使用的n_jobs参数,我感到困惑。我知道它用于并行计算,其中包括n_jobs参数中指定的处理器数。因此,如果我将值设置为-1,它将包括所有内核及其线程,以加快计算速度。但这篇文章:-

https://machinelearningmastery.com/multi-core-machine-learning-in-python/#comment-617976

使用所有核心来进行训练、评估和超参数调优是个坏主意。该条的要点如下:

1)在使用k-折叠交叉验证时,最好将核分配到重采样过程中,并留下模型训练的单个核。

2)在使用超参数整定时,最好是使搜索多核,并保留模型训练和评价的单一核。

但常识认为,在任何地方设置n_jobs = -1将包括所有内核,以加快计算速度,从而减少运行时间。有人能澄清吗?

EN

回答 1

Data Science用户

回答已采纳

发布于 2021-07-23 23:49:37

这是关于分布式计算的:假设您有100个任务和10个核心可用。将任务并行化,以便每个核心处理其中的10个任务。现在,让我们假设任务涉及一些子任务,并在内部尝试使用所有可用的核:在并行化的两个级别上,进程争夺核心,由于挂起的进程多于可用的核心,导致性能下降。这通常可以通过一些实用程序来观察,以可视化核心的活动。

这就是为什么控制在哪一级并行化的效率要高得多,以便最小化进程之间的竞争。在我的例子中,在理论上,顶级任务可以被分配到5个进程中,而每个任务仍然可以使用2个核心。然而,仅仅确定一个级别的并行化通常更简单和更有效:在您的情况下,要么是培训,要么是并行化,但不是两者兼而有之。国际水文学组织的选择并不明显,特别是取决于培训过程的密集程度。

票数 2
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/98238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档