我正在使用sklearn的特征提取RFECV,它有一个参数"n_jobs“来分配核心使用。
我有一个英特尔i5-8400 CPU @2.80 CPU (6核)
我运行的是ubuntu 16.04 (64位)。最新版本的python、sklearn等。
我有两个jupyter笔记本同时运行。我使用RFECV中的n_jobs参数为一个分配了5个核心,为另一个分配了1个核心。
下面的代码调用了5个内核,它并没有像预期的那样工作:
logreg = LogisticRegression()
rfe = RFECV(logreg, step=3, cv=10, n_jobs=5)
rfe = rfe.fit(X_lab, y_lab)
y_pred=rfe.predict(X_lab),
无论如何,当我进入睡眠状态,使用linux 'top‘命令查看CPU使用情况时,它显示所有6个核心都处于活动状态,并且几乎达到了100%的使用率(这正是我所期望的)。然而,当我醒来时,只有2个在运行,正如你可以从linux上“top”调用的前3行中看到的:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10790 ted 20 0 1489568 416948 37064 R 100.0 1.7 2456:08 python3.6
781 ted 20 0 1621052 392824 36348 R 99.7 1.6 13:04.46 python3.6
937 root 20 0 481136 106528 83944 S 8.0 0.4 42:49.95 Xorg
我的CPU中有一个相当好的液体冷却系统,有足够的RAM,而且我没有超频。我的CPU负载过重了吗,或者这可能是关于并行是如何在sklearn上实现的,或者完全是其他的东西?有什么想法吗?
发布于 2018-06-02 04:04:28
所以我认为这只是sklearn在算法中的实现。该算法在上一篇文章的大约一个小时内就完成了运行,而且显然比n_jobs=1版本更快。我又运行了一次,它显示所有的核心都在正常工作,所以我相信它是在“逐渐结束”,也就是说,它已经完成了算法中计算繁重的部分。。。
https://stackoverflow.com/questions/50647767
复制相似问题