Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
magicwindyyd
mindspore
提交
47508610
M
mindspore
项目概览
magicwindyyd
/
mindspore
与 Fork 源项目一致
Fork自
MindSpore / mindspore
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
mindspore
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
47508610
编写于
4月 26, 2020
作者:
Y
yangzhenzhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix layernorm bug
上级
348b0ef5
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
20 addition
and
10 deletion
+20
-10
mindspore/ccsrc/parallel/ops_info/layer_norm_info.cc
mindspore/ccsrc/parallel/ops_info/layer_norm_info.cc
+1
-1
tests/ut/python/parallel/test_layer_norm.py
tests/ut/python/parallel/test_layer_norm.py
+19
-9
未找到文件。
mindspore/ccsrc/parallel/ops_info/layer_norm_info.cc
浏览文件 @
47508610
...
...
@@ -69,7 +69,7 @@ Status LayerNormInfo::CheckStrategy(const StrategyPtr &strategy) {
}
// check input strategy
for
(
size_t
i
=
begin_norm_axis_
;
i
<
input_strategy
.
size
();
++
i
)
{
if
(
input_strategy
[
begin_norm_axis_
]
!=
NO_SPLIT_STRATEGY
)
{
if
(
input_strategy
[
i
]
!=
NO_SPLIT_STRATEGY
)
{
MS_LOG
(
ERROR
)
<<
name_
<<
": Invalid input strategy "
<<
ShapeToString
(
input_strategy
);
return
FAILED
;
}
...
...
tests/ut/python/parallel/test_layer_norm.py
浏览文件 @
47508610
...
...
@@ -11,8 +11,9 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ============================================================================
import
numpy
as
np
import
pytest
import
mindspore
as
ms
from
mindspore
import
context
,
Tensor
,
Parameter
from
mindspore.nn
import
Cell
,
TrainOneStepCell
,
Momentum
...
...
@@ -24,7 +25,7 @@ from mindspore.common.initializer import initializer
class
Net
(
Cell
):
def
__init__
(
self
,
mul_weight
,
strategy1
=
None
,
strategy2
=
None
,
strategy3
=
None
):
super
().
__init__
()
self
.
begin_norm_axis
=
-
1
self
.
begin_norm_axis
=
2
self
.
begin_params_axis
=
1
self
.
mul
=
P
.
Mul
().
set_strategy
(
strategy1
)
self
.
layer_norm
=
P
.
LayerNorm
(
self
.
begin_norm_axis
,
self
.
begin_params_axis
).
set_strategy
(
strategy2
)
...
...
@@ -64,18 +65,18 @@ def test_layer_norm_data_parallel():
def
test_layer_norm_model_parallel
():
context
.
set_auto_parallel_context
(
parallel_mode
=
"semi_auto_parallel"
,
device_num
=
16
,
global_rank
=
0
)
strategy1
=
((
1
,
1
,
16
,
1
),
(
1
,
1
,
16
,
1
))
strategy2
=
((
1
,
1
,
16
,
1
),
(
1
,
16
,
1
),
(
1
,
16
,
1
))
strategy3
=
((
1
,
1
,
16
,
1
),
(
1
,
1
,
16
,
1
))
strategy1
=
((
1
,
1
6
,
1
,
1
),
(
1
,
16
,
1
,
1
))
strategy2
=
((
1
,
1
6
,
1
,
1
),
(
16
,
1
,
1
),
(
16
,
1
,
1
))
strategy3
=
((
1
,
1
6
,
1
,
1
),
(
1
,
16
,
1
,
1
))
net
=
Net
(
_w
,
strategy1
,
strategy2
,
strategy3
)
compile
(
net
)
def
test_layer_norm_hybrid_parallel
():
context
.
set_auto_parallel_context
(
parallel_mode
=
"semi_auto_parallel"
,
device_num
=
16
,
global_rank
=
0
)
strategy1
=
((
2
,
2
,
4
,
1
),
(
2
,
2
,
4
,
1
))
strategy2
=
((
2
,
2
,
4
,
1
),
(
2
,
4
,
1
),
(
2
,
4
,
1
))
strategy3
=
((
2
,
2
,
4
,
1
),
(
2
,
2
,
4
,
1
))
strategy1
=
((
2
,
8
,
1
,
1
),
(
2
,
8
,
1
,
1
))
strategy2
=
((
2
,
8
,
1
,
1
),
(
8
,
1
,
1
),
(
8
,
1
,
1
))
strategy3
=
((
2
,
8
,
1
,
1
),
(
2
,
8
,
1
,
1
))
net
=
Net
(
_w
,
strategy1
,
strategy2
,
strategy3
)
compile
(
net
)
...
...
@@ -89,8 +90,17 @@ def test_layer_norm_auto_parallel():
def
test_layer_norm_repeat_calc
():
context
.
set_auto_parallel_context
(
parallel_mode
=
"semi_auto_parallel"
,
device_num
=
16
,
global_rank
=
0
)
strategy1
=
((
2
,
2
,
4
,
1
),
(
2
,
2
,
4
,
1
))
strategy2
=
((
1
,
2
,
2
,
1
),
(
2
,
2
,
1
),
(
2
,
2
,
1
))
strategy2
=
((
2
,
2
,
1
,
1
),
(
2
,
1
,
1
),
(
2
,
1
,
1
))
strategy3
=
((
2
,
2
,
4
,
1
),
(
2
,
2
,
4
,
1
))
net
=
Net
(
_w
,
strategy1
,
strategy2
,
strategy3
)
compile
(
net
)
def
test_layer_norm_wrong_strategy
():
context
.
set_auto_parallel_context
(
parallel_mode
=
"semi_auto_parallel"
,
device_num
=
16
,
global_rank
=
0
)
strategy1
=
((
2
,
2
,
4
,
1
),
(
2
,
2
,
4
,
1
))
strategy2
=
((
1
,
2
,
1
,
2
),
(
2
,
1
,
2
),
(
2
,
1
,
2
))
strategy3
=
((
2
,
2
,
4
,
1
),
(
2
,
2
,
4
,
1
))
net
=
Net
(
_w
,
strategy1
,
strategy2
,
strategy3
)
with
pytest
.
raises
(
RuntimeError
):
compile
(
net
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录