如何使用4个CPU和python训练多个模型的时间?

时间:2019-04-26 02:52:17

标签: parallel-processing

我的任务就像

from sklearn.gaussian_process import GaussianProcessRegressor

num = 100
model = dict()

for i in range(100):
    model[i]=GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=20)

for i in range(num):
    model[i].fit(X,Y)

其中X,Y分别是我的训练数据,其中包含功能和标签。

我的Ubuntu有4个CPU。为了将培训时间成本减少到上述代码的四分之一,因此,我想在CPU-0上执行model[0].fit(X, Y),在CPU-1上执行model[1].fit(X, Y),在CPU-2上执行model[2].fit(X, Y)model[3].fit(X, Y)在CPU-3上同时显示。我该怎么办?

1 个答案:

答案 0 :(得分:-1)

用列表中的实际训练数据替换input_x和input_y。

input_x=[X for i in range(100)]
input_y=[Y for i in range(100)]

def trainmodel(X,Y):
    model=GaussianProcessRegressor(n_restarts_optimizer=20)
    model.fit(X,Y)
    return model

models=joblib.Parallel(n_jobs=4,verbose=1)(map(joblib.delayed(trainmodel),input_x,input_y))

您还应该检查可用的cpu数量,以防万一

import multiprocessing
multiprocessing.cpu_count()