JobLib Parallel - правильный способ установить n_jobs - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть функция, в которой я строю 3 разные модели на одном наборе данных (10-кратное cv) и заполняю прогнозы вне выборки в массиве (каждый столбец массива - это прогнозы для данной модели).Поскольку нет оснований делать это последовательно, я хотел использовать многопроцессорность.

Есть три модели для одновременного запуска, и далее, каждая модель может использовать многопоточность во время обучения.

Как мне установить n_jobs функции Parallel?Должно ли это быть 3, так как это все, что мне нужно для запуска, а затем установите для каждого потока число для конкретных моделей максимально доступным / 3?ИЛИ установить n_jobs в -1, и это обеспечит полный доступ ко всем ресурсам для каждой модели?

   def train_models(i):


        for train_index, test_index in kf.split(X.values):

            #create train and validation splits here

            if i == 0:  

            #Train first model type 
    model=model_type_1(....,threads=?)

            if i == 1: 
            #Train second model type    
    model=model_type_2(....,threads=?)

            if i == 2: 
            #Train third model type
    model=model_type_3(....,threads=?)

Parallel(n_jobs=?,verbose =20)(delayed(train_models)(i) for i in range(3))
...