分布式机器学习模型并行的理解two

针对于模型并行,我的理解是可以把神经网络的模型拆开,每一层放到一个worker中。例如模型有三层。可以放到3个worker中。worker1、worker2、worker3。

前向传播。worker1计算完成的输出是worker2的输入。worker2和worker3同理。

self.net1 = torch.nn.Linear(10, 10).to('cuda:0')  # 将net1放置在第1个GPU上
    self.relu = torch.nn.ReLU()
    self.net2 = torch.nn.Linear(10, 5).to('cuda:1')   # 将net2放置在第2个GPU上
    self.net3 = torch.nn.Linear(10, 5).to('cuda:2')   # 将net3放置在第3个GPU上
 def forward(self, x):
    x = self.relu(self.net1(x.to('cuda:0'))
    x1= self.relu(self.net2(x.to('cuda:1'))
    return  self.net3(x.to('cuda:2'))

反向传播 过程就是一层一层的反向传播。

我把它理解为这样:

这个过程应该是最low的模型分布

猜你喜欢

转载自blog.csdn.net/zhuiyunzhugang/article/details/106310955