首页 > 解决方案 > 如何使用 4 个 CPU 和 python 训练多个模型时间?

问题描述

我的任务就像

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。为了将训练时间成本降低到上述代码的四分之一,因此我想同时model[0].fit(X, Y)在 CPU-0、model[1].fit(X, Y)CPU-1、model[2].fit(X, Y)CPU-2 和model[3].fit(X, Y)CPU-3 上执行。我应该怎么办?

标签: parallel-processing

解决方案


将 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()

推荐阅读