首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不能在科学学习中使用超过10个核心

不能在科学学习中使用超过10个核心
EN

Stack Overflow用户
提问于 2017-01-20 18:49:13
回答 1查看 188关注 0票数 2

我试图在32核服务器上使用sciki学习(0.17.1)。操作系统为Ubuntu14.04.1,python版本为2.7.12。当我试图运行这样的

代码语言:javascript
复制
etr_init = RandomForestRegressor(n_jobs = -1)
etr_model = etr_init.fit(trn_x, y)

只有10个核心在运行。还需要其他配置吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-21 03:23:31

滑雪板中的大多数算法只支持在fit级别上的并行性(意思是:每个fit使用一个核心)。这特别有助于交叉验证和网格搜索。

幸运的是,您使用的是一些易于并行化的算法(集成方法的自然特性),并且得到了一些比fit级别方法更精细的特殊多处理处理。

在您的示例中,创建RandomForestRegressor(n_jobs=-1)使用默认的:

n_estimators : integer, optional (default=10)

由于相对于RandomForestRegressor的并行化功能仅限于不同树(内部组件),所以只能使用10个核心(因为您使用的是10x树= 10 x DecisionTreeRegressor)。

使用:

代码语言:javascript
复制
etr_init = RandomForestRegressor(n_estimators=32, n_jobs = -1)
etr_model = etr_init.fit(trn_x, y)

可能会用到更多的核心。

如果SMT/HT核被用作SMT/HT,则仍然存在疑问--核并不总是被计算在内(并且可能存在于集群中)。并不总是意味着它在sklearn中是不确定的,但是不同的线程/多处理库使用不同的规则,我不知道sklearn或使用的内部组件= joblib是如何工作的(不相关的流行示例: x264使用了1.5 *全核(包括l)。据我所知)。

通过查看文档(同时知道什么是#-trees ),可以推断出我关于sklearn仅在#-trees级别上使用多处理的猜想:

  • DecisionTreeRegressor不支持参数n_jobs。(某些RandomForestRegressor的每个估计量都是一个DecisionTreeRegressor)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41770471

复制
相关文章

相似问题

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