joblib Параллельно не хватает памяти - PullRequest
0 голосов
/ 12 февраля 2019

У меня есть что-то вроде этого 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. Когда я наблюдаю за top на 67k, я вижу резкое падение памяти

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 этонамного медленнее .. И удивительно, что не погибает при 67k ..

Кроме того, я уменьшил параллелизм (в случае 1) до 2,4, и он все еще не работает :(Почему это происходит? Кто-нибудь сталкивался с этой проблемой раньше и имеет исправление?

Примечание: когда я запускаю для 50 000 задач, он работает хорошо и не дает никаких проблем.

Спасибо!

1 Ответ

0 голосов
/ 05 апреля 2019

Получил машину с увеличенной памятью 128 ГБ, и это решило проблему!

...