首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对内循环和外循环都使用n_jobs = -1有意义吗?

对内循环和外循环都使用n_jobs = -1有意义吗?
EN

Stack Overflow用户
提问于 2019-07-03 17:09:42
回答 1查看 40关注 0票数 2

我想使用scikit-learn并行化我的模型构建过程。我想知道将外循环和内循环都并行化是否有意义(即同时为GridSearchCVcross_validate设置n_jobs = -1 )?

EN

回答 1

Stack Overflow用户

发布于 2019-07-04 04:34:46

一个简短的版本:不,它不是。

一个更长的版本需要一些理解,了解n_jobs是如何被实际处理的。

有几个昂贵的资源(对,CPU-core本身,最快和最昂贵的CPU-core-local缓存层次结构元素(不深入研究缓存线和它们在这一层上各自的关联性)和更便宜但也更慢的内存),n_jobs = -1指令,在第一个调用签名执行时,将一次获取所有这些资源。

这意味着,将没有合理的“空闲”资源用于任何“更深层次的”尝试使用-再一次-与物理可用的“资源”一样多的“资源”( n_jobs = -1会这样做并再次遵守这一点,但从第一个资源开始没有“空闲”可用,在调度尝试映射/逐出/映射/逐出/逐出,从而在相同的真实(并且已经相当繁忙的)硬件元素上有更多的处理作业时,将会有很大的破坏)。

通常,即使是第一次尝试也可能在RAM分配方面造成麻烦,因为大型模型将要求在进程实例化期间在所有RAM数据结构中进行多次复制(使用或不使用的所有对象有效地制作完整副本,复制到每个新进程中),因为CPU核心的数量“规定”。由此产生的内存交换肯定是您永远不会喜欢重复的事情。

享受模型HyperParameters的调整-它是机器学习实践中的奶油。值得一试。

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

https://stackoverflow.com/questions/56866643

复制
相关文章

相似问题

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