Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parallel processing 如何使用4个CPU和python一次性训练多个模型?_Parallel Processing - Fatal编程技术网

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和多处理。