Python 如何使用Talos并行化GridSearch扫描

Python 如何使用Talos并行化GridSearch扫描,python,talos,Python,Talos,虽然talos支持GPU并行化,但如何扩展扫描对象以支持CPU+GPU并行化?遵循将扫描实验分解为进程的方法: 将多处理导入为mp 来自itertools进口产品 进口塔罗斯 导入操作系统 #用于创建配置块的Helper函数 def chunkify(lst,n): 为范围(n)中的i返回[lst[i::n] #Talos扫描配置超集 playbook_配置={ “输入尺寸”:[5,15,30,50], “密集区域”:[无,5], “稠密区域”:[无,5], “稠密的颜色”:[无,5], “辍学

虽然
talos
支持GPU并行化,但如何扩展扫描对象以支持CPU+GPU并行化?

遵循将扫描实验分解为进程的方法:

将多处理导入为mp
来自itertools进口产品
进口塔罗斯
导入操作系统
#用于创建配置块的Helper函数
def chunkify(lst,n):
为范围(n)中的i返回[lst[i::n]
#Talos扫描配置超集
playbook_配置={
“输入尺寸”:[5,15,30,50],
“密集区域”:[无,5],
“稠密区域”:[无,5],
“稠密的颜色”:[无,5],
“辍学率”:[无,0.7,0.5,0.3],
“时代”:[100],
“详细”:[verbose_标志],
“批次标准化”:[无,1]
}
#扫描结果的线程安全队列
output=mp.Queue()
#要在每个进程中运行的实际扫描
def过程扫描(剧本扫描设置,输出):
scan=talos.scan(
...
params=剧本扫描设置,
)
...
输出。放入(结果)#将结果放入队列
#基于核心亲和力的样本进程计数
cpu\u count=len(os.sched\u getaffinity(0))
#塔罗斯构型的笛卡尔积
playbook_configurations_cartesian_product=[dict(zip(playbook_configurations,v))表示产品中的v(
*playbook_configurations.values())]
#要分配给每个进程的配置块
playbook\u配置\u组=chunkify(
playbook_配置_笛卡尔_产品,cpu_计数)
进程=[]
对于playbook\u配置组中的playbook\u配置组:
#进程组的合并(阵列)配置
playbook_scan_settings={}
对于playbook_配置_组中的g:
对于k,v in g.items():
如果playbook\u scan\u设置中没有k:
剧本扫描设置[k]=[]
如果playbook\u scan\u设置[k]中没有v:
剧本扫描设置[k]。附加(v)
如果bool(剧本扫描设置):
#要在进程组的合并配置上扫描的进程
processs.append(mp.Process(
目标=进程扫描,参数=(剧本扫描设置,输出)))
对于流程中的p:
p、 开始()
对于流程中的p:
p、 加入
#将是消息队列的结果
results=[output.get()用于进程中的p]

您可以轻松地将每个扫描层的报告对象、获胜模型和度量值输入到消息队列中进行最终选择

快速浏览一下文档,看起来您需要将扫描拆分为多个扫描,然后您可以使用GPU/CPU配置组合调用并行扫描。