Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Crayon鑫
Paddle
提交
73321264
P
Paddle
项目概览
Crayon鑫
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
73321264
编写于
8月 27, 2021
作者:
W
WangXi
提交者:
GitHub
8月 27, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[hybrid][npu] fix npu clear float status in pipeline (#35165)
上级
669853f5
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
11 addition
and
4 deletion
+11
-4
python/paddle/fluid/optimizer.py
python/paddle/fluid/optimizer.py
+11
-4
未找到文件。
python/paddle/fluid/optimizer.py
浏览文件 @
73321264
...
@@ -4654,15 +4654,22 @@ class PipelineOptimizer(object):
...
@@ -4654,15 +4654,22 @@ class PipelineOptimizer(object):
op
.
type
==
'elementwise_div'
):
op
.
type
==
'elementwise_div'
):
device
=
f
"
{
self
.
_device
}
:all"
device
=
f
"
{
self
.
_device
}
:all"
op
.
_set_attr
(
self
.
_op_device_key
,
device
)
op
.
_set_attr
(
self
.
_op_device_key
,
device
)
elif
self
.
_is_weight_decay_op
(
op
)
and
op
.
type
==
'scale'
:
# set AdamW decay_coeff to device:all
op
.
_set_attr
(
self
.
_op_device_key
,
f
"
{
self
.
_device
}
:all"
)
elif
op
.
type
==
"alloc_float_status"
or
op
.
type
==
"clear_float_status"
:
elif
op
.
type
==
"alloc_float_status"
or
op
.
type
==
"clear_float_status"
:
op
.
_set_attr
(
self
.
_op_device_key
,
f
"
{
self
.
_device
}
:all"
)
op
.
_set_attr
(
self
.
_op_device_key
,
f
"
{
self
.
_device
}
:all"
)
# NOTE(wangxi): NPU should only clear the float status
# once at each batch step
op
.
_set_attr
(
self
.
_op_role_key
,
self
.
_op_role
.
LRSched
)
float_status_name
=
op
.
output_arg_names
[
0
]
float_status_var
=
block
.
var
(
float_status_name
)
# FIXME(wangxi): pipeline lr schedule will exec on sub_scope(0)
# while update will exec on sub_scope(last_micro_step), should
# set persistable to use global scope
float_status_var
.
persistable
=
True
else
:
else
:
other_known_ops
=
[
other_known_ops
=
[
'update_loss_scaling'
,
'reduce_any'
,
'concat'
,
'sum'
,
'update_loss_scaling'
,
'reduce_any'
,
'concat'
,
'sum'
,
'check_finite_and_unscale'
,
'
alloc_float_status'
,
'
memcpy'
'check_finite_and_unscale'
,
'memcpy'
]
]
assert
op
.
type
in
other_known_ops
,
"For other ops without "
\
assert
op
.
type
in
other_known_ops
,
"For other ops without "
\
"op_device set, they must be one of {}, but it "
\
"op_device set, they must be one of {}, but it "
\
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录