Pytorch Pytork';在每个GPU中加载相同的模型?
它看起来(逻辑上)工作的唯一方式是在每个GPU中加载模型。这意味着在更新权重时,每个GPU也需要更新权重,从而与单个GPU相比增加了工作量。这条推理路线正确吗?首先,改用 您可以查看描述流程的文档(您还可以检查并深入了解模块复制的执行方式) 下面是大致的操作过程: 初始化 所有(或选择的)设备ID都保存在构造函数和维度中,数据将沿着该维度分散(几乎总是Pytorch Pytork';在每个GPU中加载相同的模型?,pytorch,gpu,multi-gpu,Pytorch,Gpu,Multi Gpu,它看起来(逻辑上)工作的唯一方式是在每个GPU中加载模型。这意味着在更新权重时,每个GPU也需要更新权重,从而与单个GPU相比增加了工作量。这条推理路线正确吗?首先,改用 您可以查看描述流程的文档(您还可以检查并深入了解模块复制的执行方式) 下面是大致的操作过程: 初始化 所有(或选择的)设备ID都保存在构造函数和维度中,数据将沿着该维度分散(几乎总是0,这意味着它将沿着批次拆分为设备) 向前地 这是在每次向前运行期间完成的: 输入是分散的(沿维度的张量,tuple,list,dict浅复制,其
0
,这意味着它将沿着批次拆分为设备)
向前地
这是在每次向前运行期间完成的:
输入是分散的(沿维度的张量,tuple
,list
,dict
浅复制,其他数据在线程之间共享)
如果只有一个设备,只需返回模块(*args,**kwargs)
如果有多个设备,请将网络从源计算机复制到其他设备(每次都会这样做!)
在每个设备上使用各自的输入向前运行
将设备的输出收集到源计算机上的单个源设备(输出的串联)
运行代码的其余部分,backprop,更新源机器上的权重等
默认情况下,源计算机是cuda:0
,但可以选择。此外,重量在单个设备上更新,只有批次分散,输出集中。首先,使用
您可以查看描述流程的文档(您还可以检查并深入了解模块复制的执行方式)
下面是大致的操作过程:
初始化
所有(或选择的)设备ID都保存在构造函数和维度中,数据将沿着该维度分散(几乎总是0
,这意味着它将沿着批次拆分为设备)
向前地
这是在每次向前运行期间完成的:
输入是分散的(沿维度的张量,tuple
,list
,dict
浅复制,其他数据在线程之间共享)
如果只有一个设备,只需返回模块(*args,**kwargs)
如果有多个设备,请将网络从源计算机复制到其他设备(每次都会这样做!)
在每个设备上使用各自的输入向前运行
将设备的输出收集到源计算机上的单个源设备(输出的串联)
运行代码的其余部分,backprop,更新源机器上的权重等
默认情况下,源计算机是cuda:0
,但可以选择。此外,在单个设备上更新权重,仅分散批次并收集输出