我有一个功能,可以在同一数据集上构建3个不同的模型(10倍cv),并在数组中填充样本外预测(数组的每一列都是给定模型的预测)。由于没有理由按顺序执行此操作,因此我想使用多重处理。
有三个模型可以同时运行,而且每个模型在训练过程中都可以利用多线程。
如何设置Parallel函数的n_jobs?应该是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))