Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleClas
提交
cd644993
P
PaddleClas
项目概览
PaddlePaddle
/
PaddleClas
大约 1 年 前同步成功
通知
115
Star
4999
Fork
1114
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
19
列表
看板
标记
里程碑
合并请求
6
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleClas
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
19
Issue
19
列表
看板
标记
里程碑
合并请求
6
合并请求
6
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
cd644993
编写于
7月 12, 2022
作者:
littletomatodonkey
提交者:
GitHub
7月 12, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix download logic for multi-machine (#2140)
上级
3b7a168a
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
6 addition
and
21 deletion
+6
-21
ppcls/utils/download.py
ppcls/utils/download.py
+6
-21
未找到文件。
ppcls/utils/download.py
浏览文件 @
cd644993
...
...
@@ -77,21 +77,6 @@ def _map_path(url, root_dir):
return
osp
.
join
(
root_dir
,
fpath
)
def
_get_unique_endpoints
(
trainer_endpoints
):
# Sorting is to avoid different environmental variables for each card
trainer_endpoints
.
sort
()
ips
=
set
()
unique_endpoints
=
set
()
for
endpoint
in
trainer_endpoints
:
ip
=
endpoint
.
split
(
":"
)[
0
]
if
ip
in
ips
:
continue
ips
.
add
(
ip
)
unique_endpoints
.
add
(
endpoint
)
logger
.
info
(
"unique_endpoints {}"
.
format
(
unique_endpoints
))
return
unique_endpoints
def
get_path_from_url
(
url
,
root_dir
,
md5sum
=
None
,
...
...
@@ -118,20 +103,20 @@ def get_path_from_url(url,
# parse path after download to decompress under root_dir
fullpath
=
_map_path
(
url
,
root_dir
)
# Mainly used to solve the problem of downloading data from different
# machines in the case of multiple machines. Different
ip
s will download
# data, and the same
ip
will only download data once.
unique_endpoints
=
_get_unique_endpoints
(
ParallelEnv
(
)
.
trainer_endpoints
[:])
# machines in the case of multiple machines. Different
node
s will download
# data, and the same
node
will only download data once.
rank_id_curr_node
=
int
(
os
.
environ
.
get
(
"PADDLE_RANK_IN_NODE"
,
0
)
)
if
osp
.
exists
(
fullpath
)
and
check_exist
and
_md5check
(
fullpath
,
md5sum
):
logger
.
info
(
"Found {}"
.
format
(
fullpath
))
else
:
if
ParallelEnv
().
current_endpoint
in
unique_endpoints
:
if
rank_id_curr_node
==
0
:
fullpath
=
_download
(
url
,
root_dir
,
md5sum
)
else
:
while
not
os
.
path
.
exists
(
fullpath
):
time
.
sleep
(
1
)
if
ParallelEnv
().
current_endpoint
in
unique_endpoints
:
if
rank_id_curr_node
==
0
:
if
decompress
and
(
tarfile
.
is_tarfile
(
fullpath
)
or
zipfile
.
is_zipfile
(
fullpath
)):
fullpath
=
_decompress
(
fullpath
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录