【发布时间】:2019-04-21 20:37:40
【问题描述】:
我不是分布式系统和 CUDA 方面的专家。但是 PyTorch 支持的一个非常有趣的特性是 nn.DataParallel 和 nn.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()
PyTorch 可以拆分输入并将它们发送到多个 GPU 并将结果合并回来。
它如何管理并行模型或分布式模型的嵌入和同步?
我浏览了 PyTorch 的代码,但很难知道基本原理是如何工作的。
【问题讨论】:
-
在 pytorch 论坛上提问可能会更好。
-
我在论坛上的问题:discuss.pytorch.org/t/…
标签: python-3.x parallel-processing pytorch distributed-computing