小编fan*_*ars的帖子

pytorch的并行方法和分布式方法如何工作?

我不是分布式系统和CUDA的专家.但有一个非常有趣的功能,PyTorch支持的是nn.DataParallelnn.DistributedDataParallel.他们是如何实际实施的?他们如何分离常见的嵌入和同步数据?

这是一个基本的例子DataParallel.

import torch.nn as nn
from torch.autograd.variable import Variable
import numpy as np

class Model(nn.Module):
    def __init__(self):
        super().__init__(
            embedding=nn.Embedding(1000, 10),
            rnn=nn.Linear(10, 10),
        )

    def forward(self, x):
        x = self.embedding(x)
        x = self.rnn(x)
        return x

model = nn.DataParallel(Model())
model.forward(Variable.from_numpy(np.array([1,2,3,4,5,6], dtype=np.int64)).cuda()).cpu()
Run Code Online (Sandbox Code Playgroud)

PyTorch可以拆分输入并将它们发送到许多GPU并将结果合并.

它如何管理并行模型或分布式模型的嵌入和同步?
我在PyTorch的代码中闲逛,但很难知道基础知识是如何工作的.

c++ parallel-processing distributed-computing python-3.x pytorch

17
推荐指数
1
解决办法
669
查看次数