joblib 并行 运行 内存不足

joblib Parallel running out of memory

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

案例 1:运行 在 ubuntu 上具有 80 个内核:

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:Mac 8 核

hw.physicalcpu: 4
hw.logicalcpu: 8

但在 mac 上它要慢得多..令人惊讶的是它 not 在 67k 时被杀死..

此外,我将并行度(在情况 1 中)降低到 2,4,但它仍然失败:( 为什么会这样?有没有人以前遇到过这个问题并有解决办法?

注意:当我 运行 完成 50,000 个任务时,它 运行 很好,没有出现任何问题。

谢谢!

找了一台内存增加到 128GB 的​​机器,问题就解决了!