joblib并行耗尽内存

问题描述 投票:0回答:1

我有像这样的outputs = Parallel(n_jobs=12, verbose=10)(delayed(_process_article)(article, config) for article in data)

案例1:在80内核的ubuntu上运行:

CPU(s):                80
Thread(s) per core:    2
Core(s) per socket:    20
Socket(s):             2

总共有90,000个任务。在67k左右,它失败并被终止。 joblib.externals.loky.process_executor.BrokenProcessPool: A process in the executor was terminated abruptly, the pool is not usable anymore.当我在67k监视top时,我看到记忆力急剧下降

top - 11:40:25 up 2 days, 18:35,  4 users,  load average: 7.09, 7.56, 7.13
Tasks:  32 total,   3 running,  29 sleeping,   0 stopped,   0 zombie
%Cpu(s):  7.6 us,  2.6 sy,  0.0 ni, 89.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 33554432 total,       40 free, 33520996 used,    33396 buff/cache
KiB Swap:        0 total,        0 free,        0 used.       40 avail Mem

案例2:具有8核的Mac

hw.physicalcpu: 4
hw.logicalcpu: 8

但是在Mac上它要慢得多......而且令人惊讶的是它不会在67k时被杀死..

另外,我将并行性(在案例1中)减少到2,4并且它仍然失败:(为什么会发生这种情况?有没有人在此之前遇到过这个问题并且有一个修复程序?

注意:当我运行50,000个任务时,它运行良好并且不会出现任何问题。

谢谢!

joblib ipython-parallel
1个回答
0
投票

有一台内存增加128GB的机器,解决了这个问题!

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.