You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PyTorch结合多进程时scipy differential_evolution运行变慢的问题求助

PyTorch结合多进程时scipy differential_evolution运行变慢的问题求助

各位好,我最近在做优化任务时遇到了个头疼的问题,想请教下大家的经验。

我原本用numpy配合scipy的differential_evolution做优化,为了提速,把计算核心部分换成了PyTorch,同时还想用多进程来并行运算。下面是我当前的核心代码片段:

from torch.multiprocessing import set_start_method, Pool
import sys
import torch
import numpy as np
from scipy.optimize import differential_evolution, NonlinearConstraint

# 以下是我自定义的几个函数,就不贴完整实现了
def likelihood(x):
    # 内部用PyTorch替代numpy完成计算逻辑
    pass

def print_de(x, convergence):
    pass

def positive_definite(x):
    pass

if __name__ == '__main__':
    # device = get_device()
    device = torch.device('cpu') # 先在CPU环境下测试
    num_workers=int(sys.argv[1])
    set_start_method("spawn", force=True)
    pool=Pool(num_workers)
    results = differential_evolution(likelihood, 
                                     seed=np.random.seed(0),
                                     workers=pool.map,
                                     callback=print_de, 
                                     bounds=bounds, 
                                     maxiter=1500,
                                     disp=True,
                                     recombination=0.1,
                                     mutation=(0.9,1),
                                     constraints=NonlinearConstraint(positive_definite, lb=0, ub=np.inf),
                                     popsize=25,
                                     polish=False
                                     )

在我自己的M1 MacBook上,我发现换成PyTorch加多进程的组合后,differential_evolution的运行速度反而比之前用numpy单进程时还要慢,完全达不到我预期的加速效果。我已经尝试设置了spawn作为多进程启动方式,也特意指定了CPU设备来排除GPU的影响,但问题依然存在。

想问问大家,有没有遇到过类似的情况?可能是什么原因导致的?有没有什么可行的解决办法能让PyTorch配合多进程在differential_evolution里正常发挥加速作用?

备注:内容来源于stack exchange,提问作者jasmine

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:25:31