Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
hapi
提交
1faf669a
H
hapi
项目概览
PaddlePaddle
/
hapi
通知
11
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
4
列表
看板
标记
里程碑
合并请求
7
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
H
hapi
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
4
Issue
4
列表
看板
标记
里程碑
合并请求
7
合并请求
7
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
1faf669a
编写于
1月 06, 2020
作者:
Y
Yang Zhang
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactor `_compile_and_initialize` a bit
上级
67df9550
变更
1
显示空白变更内容
内联
并排
Showing
1 changed file
with
32 addition
and
34 deletion
+32
-34
model.py
model.py
+32
-34
未找到文件。
model.py
浏览文件 @
1faf669a
...
...
@@ -245,13 +245,8 @@ class StaticGraphAdapter(object):
if
self
.
_progs
.
get
(
self
.
mode
,
None
)
is
None
:
self
.
_make_program
(
self
.
_infer_input_vars
(
inputs
))
ids
=
[
str
(
i
)
for
i
in
device_ids
]
ids
.
sort
()
compiled_prog
=
self
.
_compiled_progs
.
get
(
self
.
mode
,
None
)
if
compiled_prog
is
None
:
compiled_prog
=
self
.
_compile_and_initialize
(
self
.
_progs
[
self
.
mode
],
device
,
device_ids
)
self
.
_compiled_progs
[
self
.
mode
]
=
compiled_prog
feed
=
{}
input_names
=
[
name
for
name
in
self
.
_input_desc
.
keys
()]
...
...
@@ -320,36 +315,19 @@ class StaticGraphAdapter(object):
return
label_vars
def
_compile_and_initialize
(
self
,
prog
,
device
=
'CPU'
,
device_ids
=
None
):
if
device
.
lower
()
==
'cpu'
:
place
=
fluid
.
CPUPlace
()
elif
device
.
lower
()
==
'gpu'
and
isinstance
(
device_ids
,
(
list
,
tuple
)):
place
=
fluid
.
CUDAPlace
(
device_ids
[
0
])
else
:
raise
"device not supported"
compiled_prog
=
self
.
_compiled_progs
.
get
(
self
.
mode
,
None
)
if
compiled_prog
is
not
None
:
return
compiled_prog
compiled_prog
=
fluid
.
CompiledProgram
(
prog
)
if
device
.
lower
()
==
'gpu'
and
len
(
device_ids
)
>
0
:
places
=
[
fluid
.
CUDAPlace
(
i
)
for
i
in
device_ids
]
loss_name
=
None
if
self
.
_loss_endpoint
is
not
None
:
loss_name
=
self
.
_loss_endpoint
.
name
share_vars_from
=
None
if
self
.
mode
==
'eval'
and
'train'
in
self
.
_compiled_progs
:
share_vars_from
=
self
.
_compiled_progs
[
'train'
]
# HACK invalidate eval program if is compiled before train program
# quite hackish, OTOH, it is generally uncommon that the eval
# program will be run before the train program
if
self
.
mode
==
'train'
and
'eval'
in
self
.
_compiled_progs
:
del
self
.
_compiled_progs
[
'eval'
]
compiled_prog
=
compiled_prog
.
with_data_parallel
(
loss_name
=
loss_name
,
places
=
places
,
share_vars_from
=
share_vars_from
)
places
=
[
device
.
lower
()
==
'gpu'
and
fluid
.
CUDAPlace
(
i
)
or
fluid
.
CPUPlace
()
for
i
in
device_ids
]
# XXX only run startup once as *ALL WEIGHTS* should have been
# initialized upon construction of the model even if `forward()`
# may run different code path for different mode
if
self
.
_executor
is
None
:
self
.
_executor
=
fluid
.
Executor
(
place
)
# XXX only run startup once as *ALL* weights should be initialized
# upon construction of the model
# XXX incremental initialization, lifted from GuoSheng code
self
.
_executor
=
fluid
.
Executor
(
places
[
0
])
# XXX incremental initialization
uninitialized
=
[]
for
var_py
in
self
.
_startup_prog
.
list_vars
():
var
=
fluid
.
global_scope
().
find_var
(
var_py
.
name
)
...
...
@@ -360,6 +338,26 @@ class StaticGraphAdapter(object):
startup_prog
=
self
.
_startup_prog
.
_prune
(
uninitialized
)
self
.
_executor
.
run
(
startup_prog
)
if
len
(
device_ids
)
<
2
:
return
prog
share_vars_from
=
None
if
self
.
mode
==
'eval'
and
'train'
in
self
.
_compiled_progs
:
share_vars_from
=
self
.
_compiled_progs
[
'train'
]
# HACK invalidate eval program if is compiled before train program
# quite hackish, OTOH, it is generally uncommon that the eval
# program will be run before the train program
if
self
.
mode
==
'train'
and
'eval'
in
self
.
_compiled_progs
:
del
self
.
_compiled_progs
[
'eval'
]
compiled_prog
=
fluid
.
CompiledProgram
(
prog
)
loss_name
=
None
if
self
.
_loss_endpoint
is
not
None
:
loss_name
=
self
.
_loss_endpoint
.
name
compiled_prog
=
compiled_prog
.
with_data_parallel
(
loss_name
=
loss_name
,
places
=
places
,
share_vars_from
=
share_vars_from
)
self
.
_compiled_progs
[
self
.
mode
]
=
compiled_prog
return
compiled_prog
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录