Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
飞不过沧海
Paddle
提交
7c4e5150
P
Paddle
项目概览
飞不过沧海
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
7c4e5150
编写于
7月 01, 2021
作者:
K
kuizhiqing
提交者:
GitHub
7月 01, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
optimize for elastic (#33895)
* add random and prevent deadlock
上级
5c9fce0e
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
3 deletion
+22
-3
python/paddle/distributed/fleet/elastic.py
python/paddle/distributed/fleet/elastic.py
+22
-3
未找到文件。
python/paddle/distributed/fleet/elastic.py
浏览文件 @
7c4e5150
...
...
@@ -18,6 +18,7 @@ import os
import
six
import
logging
import
signal
import
random
logging
.
basicConfig
(
level
=
os
.
environ
.
get
(
'LOGLEVEL'
,
'INFO'
).
upper
())
logger
=
logging
.
getLogger
(
"ELASTIC"
)
...
...
@@ -129,10 +130,14 @@ class ElasticManager(object):
# etcd data
self
.
prefix
=
"/paddle/"
+
name
self
.
node_prefix
=
self
.
prefix
+
'/nodes
/
'
self
.
node_prefix
=
self
.
prefix
+
'/nodes'
self
.
np_path
=
self
.
prefix
+
'/np'
self
.
endpoints_path
=
self
.
prefix
+
'/endpoints'
self
.
host_path
=
'{}{}'
.
format
(
self
.
node_prefix
,
time
.
time
())
node_tag
=
''
.
join
(
random
.
choice
(
'abcdefghijklmnopqrstuvwxyz'
)
for
_
in
range
(
6
))
self
.
host_path
=
'{}/{}{}'
.
format
(
self
.
node_prefix
,
node_tag
,
time
.
time
())
self
.
np
=
np
+
scale
'''
...
...
@@ -195,10 +200,13 @@ class ElasticManager(object):
self
.
watches
=
[
host_watch
,
np_watch
,
endpoints_watch
]
self
.
launcher
=
None
def
exit
(
self
,
completed
=
False
):
logger
.
info
(
'manager exist completed {}'
.
format
(
completed
))
self
.
launcher
.
stop
()
if
self
.
launcher
:
self
.
launcher
.
stop
()
if
not
self
.
enable
:
return
...
...
@@ -264,6 +272,7 @@ class ElasticManager(object):
if
not
self
.
enable
:
return
idx
=
1
while
not
self
.
stopped
:
if
self
.
_match
():
logger
.
info
(
'ready with hosts {}'
.
format
(
self
.
hosts
))
...
...
@@ -271,6 +280,14 @@ class ElasticManager(object):
return
logger
.
info
(
'not ready for np {} with hosts {}'
.
format
(
self
.
np
,
self
.
hosts
))
# reset hosts every 30s to prevent fake deadlock
if
idx
%
10
==
0
:
self
.
etcd
.
delete_prefix
(
self
.
node_prefix
)
logger
.
info
(
'reset np {} with hosts {}'
.
format
(
self
.
np
,
self
.
hosts
))
idx
+=
1
time
.
sleep
(
3
)
return
...
...
@@ -304,6 +321,8 @@ class ElasticManager(object):
time
.
sleep
(
3
)
if
self
.
launcher
:
self
.
launcher
.
stop
()
return
ElasticStatus
.
EXIT
def
signal_handler
(
self
,
sigint
,
frame
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录