Parallel processing 如何使用4个CPU和python一次性训练多个模型?
我的任务是Parallel processing 如何使用4个CPU和python一次性训练多个模型?,parallel-processing,Parallel Processing,我的任务是 从sklearn.gaussian_进程导入gaussian进程分离器 num=100 模型=dict() 对于范围(100)内的i: 模型[i]=高斯过程分离器(核=核, n\u重新启动\u优化器=20) 对于范围内的i(num): 模型[i]。拟合(X,Y) 其中,X,Y分别是包含特征和标签的训练数据 我的Ubuntu有4个CPU。为了将训练时间成本减少到上述代码的四分之一,因此我想在CPU-0上执行fit(X,Y),在CPU-0上执行fit(X,Y),在CPU-1上执行fit
从sklearn.gaussian_进程导入gaussian进程分离器
num=100
模型=dict()
对于范围(100)内的i:
模型[i]=高斯过程分离器(核=核, n\u重新启动\u优化器=20)
对于范围内的i(num):
模型[i]。拟合(X,Y)
其中,X,Y
分别是包含特征和标签的训练数据
我的Ubuntu有4个CPU。为了将训练时间成本减少到上述代码的四分之一,因此我想在CPU-0上执行fit(X,Y),在CPU-0上执行fit(X,Y),在CPU-1上执行fit(X,Y),在CPU-2上执行fit(X,Y),在CPU-3上同时执行fit(X,Y)。我该怎么办?用列表中的实际训练数据替换输入x和输入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()
如果你把循环的范围分成4组呢?例如,
范围内的i(25)
,范围内的i(25,50)
,范围内的i(50,75)
和范围内的i(75,100)
@Yusufsn您可以发布您的(伪)代码,我想运行它。使用多处理模块的池和映射功能。最简单的例子是在文档页面。也许这个可以帮助你@hunzter,我找不到它在哪里。你能给我看看链接吗?谢谢。如果代码实际上没有在线程之间分配工作负载,那么并行运行同一代码100次没有任何好处。@JonathonReinhart实际上你是对的。我刚读到这件事。最好使用loky和多处理。