From 27540ade230831289268bc5369b01abcc386e897 Mon Sep 17 00:00:00 2001 From: wizardforcel <562826179@qq.com> Date: Tue, 19 Jan 2021 22:07:36 +0800 Subject: [PATCH] 2021-01-19 22:07:36 --- new/pt-tut-17/68.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/new/pt-tut-17/68.md b/new/pt-tut-17/68.md index 31dc1363..ccc45512 100644 --- a/new/pt-tut-17/68.md +++ b/new/pt-tut-17/68.md @@ -22,7 +22,7 @@ 1. 主服务器在参数服务器上创建一个嵌入表,并为其保留一个 [RRef](https://pytorch.org/docs/master/rpc.html#rref) 。 2. 然后,主持人开始在训练器上进行训练循环,并将嵌入表 RRef 传递给训练器。 3. 训练器创建一个`HybridModel`,该`HybridModel`首先使用主机提供的嵌入表 RRef 执行嵌入查找,然后执行包装在 DDP 中的 FC 层。 -4. 训练者执行模型的正向传递,并使用 [Distributed Autograd](https://pytorch.org/docs/master/rpc.html#distributed-autograd-framework) 使用损失执行反向传递。 +4. 训练者执行模型的正向传递,并使用[分布式 Autograd](https://pytorch.org/docs/master/rpc.html#distributed-autograd-framework) 使用损失执行反向传递。 5. 作为向后遍历的一部分,将首先计算 FC 层的梯度,并通过 DDP 中的`allreduce`将其同步到所有训练器。 6. 接下来,分布式 Autograd 将梯度传播到参数服务器,在该服务器中更新嵌入表的梯度。 7. 最后,[分布式优化器](https://pytorch.org/docs/master/rpc.html#module-torch.distributed.optim)用于更新所有参数。 @@ -110,7 +110,7 @@ if __name__=="__main__": ``` -在讨论训练器的详细信息之前,让我们介绍一下训练器使用的`HybridModel`。 如下所述,使用对参数服务器上嵌入表(`emb_rref`)的 RRef 和用于 DDP 的`device`初始化`HybridModel`。 模型的初始化在 DDP 中包装了 [nn.Linear](https://pytorch.org/docs/master/generated/torch.nn.Linear.html) 层,以在所有训练器之间复制和同步该层。 +在讨论训练器的详细信息之前,让我们介绍一下训练器使用的`HybridModel`。 如下所述,使用对参数服务器上嵌入表(`emb_rref`)的 RRef 和用于 DDP 的`device`初始化`HybridModel`。 模型的初始化在 DDP 中包装了[`nn.Linear`](https://pytorch.org/docs/master/generated/torch.nn.Linear.html)层,以在所有训练器之间复制和同步该层。 该模型的前进方法非常简单。 它使用 [RRef 帮助程序](https://pytorch.org/docs/master/rpc.html#torch.distributed.rpc.RRef.rpc_sync)在参数服务器上执行嵌入查找,并将其输出传递到 FC 层。 @@ -138,11 +138,11 @@ class HybridModel(torch.nn.Module): ``` -接下来,让我们看看 Trainer 上的设置。 训练者首先使用对参数服务器上嵌入表的 RRef 及其自身等级创建上述`HybridModel`。 +接下来,让我们看看训练器上的设置。 训练者首先使用对参数服务器上嵌入表的 RRef 及其自身等级创建上述`HybridModel`。 -现在,我们需要检索要使用 [DistributedOptimizer](https://pytorch.org/docs/master/rpc.html#module-torch.distributed.optim) 优化的所有参数的 RRef 列表。 为了从参数服务器中检索嵌入表的参数,我们定义了一个简单的辅助函数`_retrieve_embedding_parameters`,该函数基本上遍历了嵌入表的所有参数并返回 RRef 的列表。 训练器通过 RPC 在参数服务器上调用此方法,以接收所需参数的 RRef 列表。 由于 DistributedOptimizer 始终将需要优化的参数的 RRef 列表,因此我们甚至需要为 FC 层的本地参数创建 RRef。 这是通过遍历`model.parameters()`,为每个参数创建 RRef 并将其附加到列表来完成的。 请注意,`model.parameters()`仅返回本地参数,不包含`emb_rref`。 +现在,我们需要检索要使用 [DistributedOptimizer](https://pytorch.org/docs/master/rpc.html#module-torch.distributed.optim) 优化的所有参数的 RRef 列表。 为了从参数服务器中检索嵌入表的参数,我们定义了一个简单的辅助函数`_retrieve_embedding_parameters`,该函数基本上遍历了嵌入表的所有参数并返回 RRef 的列表。 训练器通过 RPC 在参数服务器上调用此方法,以接收所需参数的 RRef 列表。 由于`DistributedOptimizer`始终将需要优化的参数的 RRef 列表,因此我们甚至需要为 FC 层的本地参数创建 RRef。 这是通过遍历`model.parameters()`,为每个参数创建 RRef 并将其附加到列表来完成的。 请注意,`model.parameters()`仅返回本地参数,不包含`emb_rref`。 -最后,我们使用所有 RRef 创建我们的 DistributedOptimizer,并定义 CrossEntropyLoss 函数。 +最后,我们使用所有 RRef 创建我们的`DistributedOptimizer`,并定义`CrossEntropyLoss`函数。 ```py def _retrieve_embedding_parameters(emb_rref): @@ -189,7 +189,7 @@ def _run_trainer(emb_rref, rank): 1. 为分布式 Autograd 设置[分布式 Autograd 上下文](https://pytorch.org/docs/master/rpc.html#torch.distributed.autograd.context)。 2. 运行模型的正向传递并检索其输出。 3. 使用损失函数,根据我们的输出和目标计算损失。 -4. 使用 Distributed Autograd 使用损失执行分布式反向传递。 +4. 使用分布式 Autograd 使用损失执行分布式反向传递。 5. 最后,运行“分布式优化器”步骤以优化所有参数。 ```py -- GitLab