Parallel processing 基于pytorch的多gpu并行超参数优化

Parallel processing 基于pytorch的多gpu并行超参数优化,parallel-processing,pytorch,hyperparameters,multi-gpu,Parallel Processing,Pytorch,Hyperparameters,Multi Gpu,我可以使用多gpu机器,我正在运行网格搜索循环以优化参数。我想知道我是否可以同时在多个gpu上分发循环的多个迭代,如果可以,我该如何做(什么是me机制?线程?如果循环异步执行,如何收集结果?等等) 谢谢。我建议使用来处理超参数搜索,一般来说,超参数搜索应该比网格搜索性能更好(不过,您仍然可以将其用于网格采样)。我修改了Optuna,每个进程使用一个GPU 创建一个培训脚本,如: #optimize.py 导入系统 进口金枪鱼 导入您的模型 设备='cuda:'+sys.argv[1] def目标

我可以使用多gpu机器,我正在运行网格搜索循环以优化参数。我想知道我是否可以同时在多个gpu上分发循环的多个迭代,如果可以,我该如何做(什么是me机制?线程?如果循环异步执行,如何收集结果?等等)

谢谢。

我建议使用来处理超参数搜索,一般来说,超参数搜索应该比网格搜索性能更好(不过,您仍然可以将其用于网格采样)。我修改了Optuna,每个进程使用一个GPU

  • 创建一个培训脚本,如:
  • #optimize.py
    导入系统
    进口金枪鱼
    导入您的模型
    设备='cuda:'+sys.argv[1]
    def目标(试验):
    隐藏大小=试用。建议大小(“隐藏大小”,8,64,log=True)
    #定义其他超参数
    返回您的\u model.score(隐藏的\u大小=隐藏的\u大小,设备=设备)
    如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
    研究=操作。加载研究(研究名称='distributed-example',存储='sqlite:///example.db')
    研究。优化(目标,n_试验=100)
    
  • 在终端:
  • pip安装操作系统
    optuna创建研究--研究名称“分布式示例”--存储sqlite:///example.db"
    
  • 然后,对于每个GPU设备:
  • python optimize.py 0
    python.py 1
    ...
    
  • 最后,可以很容易地发现最佳结果:
  • 导入操作系统
    study=optuna.create_study(study_name='distributed-example',storage='1〕sqlite:///example.db,如果_存在,则加载_=True)
    打印(研究最佳参数)
    打印(研究最佳值)
    
    甚至