Na maioria dos estimadores no scikit-learn, há um n_jobs
parâmetro em fit
/ predict
methods para criar trabalhos paralelos usando joblib
. Notei que configurá-lo para -1
criar apenas 1 processo Python e maximizar os núcleos, fazendo com que o uso da CPU atinja 2500% no topo. Isso é bem diferente de configurá-lo para um número inteiro positivo> 1, que cria vários processos Python com ~ 100% de uso.
Como essa configuração afeta o uso da CPU e do núcleo em um servidor Linux com várias CPUs? (por exemplo, se n_jobs=8
há 8 CPUs totalmente bloqueadas ou as CPUs ainda reservam alguns núcleos para outras tarefas / processos?)
Além disso, recebo MemoryError
ocasionalmente ao definir n_jobs=-1
grandes conjuntos de dados. No entanto, o uso de memória geralmente oscila entre 30 e 40% para o único processo Python. Como os dados e a memória estão sendo gerenciados / copiados, dependendo do valor de n_jobs
?