From a87bbea034f3127eb4d8f786638a1a670f58500c Mon Sep 17 00:00:00 2001 From: yao_yf Date: Tue, 8 Mar 2022 15:28:53 +0800 Subject: [PATCH] parallel bugs fix --- ...ndspore.nn.AdaSumbyDeltaWeightWrapCell.rst | 2 +- .../nn/mindspore.nn.AdaSumbyGradWrapCell.rst | 2 +- .../ccsrc/frontend/parallel/device_manager.cc | 3 +-- mindspore/python/mindspore/nn/optim/adasum.py | 22 +++++++++++++++++-- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/docs/api/api_python/nn/mindspore.nn.AdaSumbyDeltaWeightWrapCell.rst b/docs/api/api_python/nn/mindspore.nn.AdaSumbyDeltaWeightWrapCell.rst index 8406d77e05..d15c5f0b23 100644 --- a/docs/api/api_python/nn/mindspore.nn.AdaSumbyDeltaWeightWrapCell.rst +++ b/docs/api/api_python/nn/mindspore.nn.AdaSumbyDeltaWeightWrapCell.rst @@ -27,7 +27,7 @@ mindspore.nn.AdaSumByDeltaWeightWrapCell **输入:** - - **gradients** (tuple[Tensor]) - `params` 的梯度,形状(shape)与 `params` 相同,与所传优化器的输入一致。 + - **grads** (tuple[Tensor]) - `params` 的梯度,形状(shape)与 `params` 相同,与所传优化器的输入一致。 **异常:** diff --git a/docs/api/api_python/nn/mindspore.nn.AdaSumbyGradWrapCell.rst b/docs/api/api_python/nn/mindspore.nn.AdaSumbyGradWrapCell.rst index 6040a20bc1..cd900d84fc 100644 --- a/docs/api/api_python/nn/mindspore.nn.AdaSumbyGradWrapCell.rst +++ b/docs/api/api_python/nn/mindspore.nn.AdaSumbyGradWrapCell.rst @@ -27,7 +27,7 @@ mindspore.nn.AdaSumByGradWrapCell **输入:** - - **gradients** (tuple[Tensor]) - `params` 的梯度,形状(shape)与 `params` 相同,与所传优化器的输入一致。 + - **grads** (tuple[Tensor]) - `params` 的梯度,形状(shape)与 `params` 相同,与所传优化器的输入一致。 **异常:** diff --git a/mindspore/ccsrc/frontend/parallel/device_manager.cc b/mindspore/ccsrc/frontend/parallel/device_manager.cc index a84b3bf0f8..b3ea3bca0a 100644 --- a/mindspore/ccsrc/frontend/parallel/device_manager.cc +++ b/mindspore/ccsrc/frontend/parallel/device_manager.cc @@ -170,8 +170,7 @@ Status IsFeasibleDeiveListOneServer(const RankList &rank_list) { if (rank_list.size() == 4 && (rank_list[3] - rank_list[0] == 3) && (rank_list[0] == 0 || rank_list[3] == 7)) { return SUCCESS; } - if (rank_list.size() == 4 && (rank_list[3] % 2 == rank_list[2] % 2) && (rank_list[2] % 2 == rank_list[1] % 2) && - (rank_list[1] % 2 == rank_list[0] % 2)) { + if (rank_list.size() == 4 && (rank_list[3] % 4 == rank_list[1] % 4) && (rank_list[2] % 4 == rank_list[0] % 4)) { return SUCCESS; } if (rank_list.size() == 2) { diff --git a/mindspore/python/mindspore/nn/optim/adasum.py b/mindspore/python/mindspore/nn/optim/adasum.py index f85fd59b63..82d703b971 100644 --- a/mindspore/python/mindspore/nn/optim/adasum.py +++ b/mindspore/python/mindspore/nn/optim/adasum.py @@ -392,7 +392,16 @@ class AdaSumByGradWrapCell(Cell): requires only one input. Inputs: - - **grads** (Tuple(Tensor)) - Tuple of gradients. + - **grads** (Tuple(Tensor)) - Tuple of gradients, same with the input of passed optimizer. + + Raises: + RuntimeError: If `parallel_mode` uses `stand_alone` mode, AdaSum only supports use in distributed scenarios. + RuntimeError: If the optimizer parallel is used when using AdaSum. + RuntimeError: If the pipeline parallel is used when using AdaSum. + RuntimeError: If `device_num` is not a power of 2, or less than 16. + + Supported Platforms: + ``Ascend`` ``GPU`` Examples: >>> from mindspore import nn @@ -436,7 +445,16 @@ class AdaSumByDeltaWeightWrapCell(Cell): requires only one input. Inputs: - - **grads** (Tuple(Tensor)) - Tuple of gradients. + - **grads** (Tuple(Tensor)) - Tuple of gradients, same with the input of passed optimizer. + + Raises: + RuntimeError: If `parallel_mode` uses `stand_alone` mode, AdaSum only supports use in distributed scenarios. + RuntimeError: If the optimizer parallel is used when using AdaSum. + RuntimeError: If the pipeline parallel is used when using AdaSum. + RuntimeError: If `device_num` is not a power of 2, or less than 16. + + Supported Platforms: + ``Ascend`` ``GPU`` Examples: >>> from mindspore import nn