Python 芹菜:使辅助进程和子进程(或线程)共享GPU分配的数据

Python 芹菜:使辅助进程和子进程(或线程)共享GPU分配的数据,python,celery,pytorch,Python,Celery,Pytorch,在下面的例子中,我在GPU s.t上分配了一个模型和张量。它是全局可见的。我不希望子进程必须复制数据,我也不明白为什么需要这样做,因为在设备内存空间中传递地址就足够了。(吞吐量非常重要,如果每个子级在收到请求时都复制数据,则需要花费太多时间)。但是,当我发送请求时,我可以看到(使用nvidia smi)子级分配了自己的d0\u模型和d0\u张量 app=Celery('tasks',backend='rpc://',broker='rpc://'pyamqp://guest@localhost/

在下面的例子中,我在GPU s.t上分配了一个模型和张量。它是全局可见的。我不希望子进程必须复制数据,我也不明白为什么需要这样做,因为在设备内存空间中传递地址就足够了。(吞吐量非常重要,如果每个子级在收到请求时都复制数据,则需要花费太多时间)。但是,当我发送请求时,我可以看到(使用
nvidia smi
)子级分配了自己的
d0\u模型
d0\u张量

app=Celery('tasks',backend='rpc://',broker='rpc://'pyamqp://guest@localhost/')
#在GPU上分配型号和重量
d0_model=nn.Conv1d(在_通道中,10,内核大小)。到(“cuda:0”)
d0_in_tensor=torch.randn(批次、输入通道、输出通道).to(“cuda:0”)
#任务使用模型和权重
@应用程序任务
def torch_conv1d(gpu):
如果gpu==0:
返回d0_in_张量
我不希望我的孩子必须复制工人的GPU数据,因为这会增加不必要的开销和分配时间

  • 是否存在使工作进程(或线程,如果无法使用进程)和子进程共享GPU分配的数据的方法

  • 如果我的第一个问题的答案是“否”,那么有没有办法预先分配每个孩子的s.t.他们不必花时间在GPU上分配模型和张量(每个孩子都会有模型和张量的唯一副本,但他们会在第一次产卵时分配模型和张量,直到收到请求为止)?