Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PALM
提交
1bab815a
P
PALM
项目概览
PaddlePaddle
/
PALM
通知
5
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
10
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PALM
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
10
Issue
10
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
1bab815a
编写于
11月 29, 2019
作者:
X
Xiaoyao Xi
提交者:
GitHub
11月 29, 2019
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #32 from wangxiao1021/downloader
update downloader.py
上级
a7f7dc4c
5c706ef4
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
119 addition
and
32 deletion
+119
-32
paddlepalm/downloader.py
paddlepalm/downloader.py
+119
-32
未找到文件。
paddlepalm/downloader.py
浏览文件 @
1bab815a
# -*- coding: UTF-8 -*-
# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# 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.
from
__future__
import
print_function
import
os
import
tarfile
import
shutil
try
:
from
urllib.request
import
urlopen
# Python 3
except
ImportError
:
from
urllib2
import
urlopen
# Python 2
# for https
import
ssl
ssl
.
_create_default_https_context
=
ssl
.
_create_unverified_context
_items
=
{
'pretrain'
:
{
'ernie-en-uncased-large'
:
'http://xxxxx'
,
'xxx'
:
'xxx'
,
'utils'
:
None
}
'reader'
:
{
'cls'
:
'xxx'
,
'xxx'
:
'xxx'
,
'utils'
:
'xxx'
}
'backbone'
:
{
xxx
}
'tasktype'
:
{
xxx
}
'pretrain'
:
{
'ernie-en-uncased-large'
:
'https://ernie.bj.bcebos.com/ERNIE_Large_en_stable-2.0.0.tar.gz'
,
'bert-en-uncased-large'
:
'https://bert-models.bj.bcebos.com/uncased_L-24_H-1024_A-16.tar.gz'
,
'utils'
:
None
},
'reader'
:
{
'utils'
:
None
},
'backbone'
:
{
'utils'
:
None
},
'tasktype'
:
{
'utils'
:
None
},
}
def
_download
(
item
,
scope
,
path
,
silent
=
False
):
if
not
silent
:
print
(
'Downloading {}: {} from {}...'
.
format
(
item
,
scope
,
_items
[
item
][
scope
]))
data_url
=
_items
[
item
][
scope
]
data_dir
=
path
+
'/'
+
item
+
'/'
+
scope
if
not
os
.
path
.
exists
(
data_dir
):
os
.
makedirs
(
os
.
path
.
join
(
data_dir
))
data_name
=
data_url
.
split
(
'/'
)[
-
1
]
filename
=
data_dir
+
'/'
+
data_name
def
demo
():
raise
NotImplementedError
()
# print process
def
_chunk_report
(
bytes_so_far
,
total_size
):
percent
=
float
(
bytes_so_far
)
/
float
(
total_size
)
if
percent
>
1
:
percent
=
1
if
not
silent
:
print
(
'
\r
>> Downloading... {:.1%}'
.
format
(
percent
),
end
=
""
)
# copy to local
def
_chunk_read
(
response
,
url
,
chunk_size
=
16
*
1024
,
report_hook
=
None
):
total_size
=
response
.
info
().
getheader
(
'Content-Length'
).
strip
()
total_size
=
int
(
total_size
)
bytes_so_far
=
0
with
open
(
"%s"
%
filename
,
"wb"
)
as
f
:
while
1
:
chunk
=
response
.
read
(
chunk_size
)
f
.
write
(
chunk
)
f
.
flush
()
bytes_so_far
+=
len
(
chunk
)
if
not
chunk
:
break
if
report_hook
:
report_hook
(
bytes_so_far
,
total_size
)
return
bytes_so_far
response
=
urlopen
(
data_url
)
_chunk_read
(
response
,
data_url
,
report_hook
=
_chunk_report
)
if
not
silent
:
print
(
' done!'
)
if
item
==
'pretrain'
:
if
not
silent
:
print
(
'Extracting {}...'
.
format
(
data_name
),
end
=
" "
)
if
os
.
path
.
exists
(
filename
):
tar
=
tarfile
.
open
(
filename
,
'r'
)
tar
.
extractall
(
path
=
data_dir
)
tar
.
close
()
os
.
remove
(
filename
)
if
scope
==
'bert-en-uncased-large'
:
source_path
=
data_dir
+
'/'
+
data_name
.
split
(
'.'
)[
0
]
fileList
=
os
.
listdir
(
source_path
)
for
file
in
fileList
:
filePath
=
os
.
path
.
join
(
source_path
,
file
)
shutil
.
move
(
filePath
,
data_dir
)
os
.
removedirs
(
source_path
)
if
not
silent
:
print
(
'done!'
)
if
not
silent
:
print
(
'Converting params...'
,
end
=
" "
)
_convert
(
data_dir
,
silent
)
if
not
silent
:
print
(
'done!'
)
def
_convert
():
raise
NotImplementedError
()
def
_convert
(
path
,
silent
=
False
):
if
os
.
path
.
isfile
(
path
+
'/params/__palminfo__'
):
if
not
silent
:
print
(
'already converted.'
)
else
:
if
os
.
path
.
exists
(
path
+
'/params/'
):
os
.
rename
(
path
+
'/params/'
,
path
+
'/params1/'
)
os
.
mkdir
(
path
+
'/params/'
)
tar_model
=
tarfile
.
open
(
path
+
'/params/'
+
'__palmmodel__'
,
'w:gz'
)
tar_info
=
open
(
path
+
'/params/'
+
'__palminfo__'
,
'w'
)
for
root
,
dirs
,
files
in
os
.
walk
(
path
+
'/params1/'
):
for
file
in
files
:
src_file
=
os
.
path
.
join
(
root
,
file
)
tar_model
.
add
(
src_file
,
'__paddlepalm_'
+
file
)
tar_info
.
write
(
'__paddlepalm_'
+
file
)
os
.
remove
(
src_file
)
tar_model
.
close
()
tar_info
.
close
()
os
.
removedirs
(
path
+
'/params1/'
)
def
download
(
item
,
scope
=
'all'
,
path
=
'.'
):
item
=
item
.
lower
()
scope
=
scope
.
lower
()
assert
item
in
items
,
'{} is not found. Support list: {}'
.
format
(
item
,
list
(
items
.
keys
()))
if
not
os
.
path
.
exists
(
path
,
item
):
os
.
makedirs
(
os
.
path
.
join
(
path
,
item
))
def
_download
(
item
,
scope
,
silent
=
False
):
if
not
silent
:
print
(
'downloading {}: {} from {}...'
.
format
(
item
,
scope
,
items
[
item
][
scope
]),
end
=
''
)
urllib
.
downloadxxx
(
items
[
item
][
scope
],
path
)
if
not
silent
:
print
(
'done!'
)
if
items
[
'utils'
]
is
not
None
:
_download
(
item
,
'utils'
,
silent
=
True
)
assert
item
in
_items
,
'{} is not found. Support list: {}'
.
format
(
item
,
list
(
_items
.
keys
()))
if
_items
[
item
][
'utils'
]
is
not
None
:
_download
(
item
,
'utils'
,
path
,
silent
=
True
)
if
scope
!=
'all'
:
assert
scope
in
items
[
item
],
'{} is not found. Support scopes: {}'
.
format
(
item
,
list
(
items
[
item
].
keys
()))
_download
(
item
,
scope
)
assert
scope
in
_items
[
item
],
'{} is not found. Support scopes: {}'
.
format
(
item
,
list
(
_
items
[
item
].
keys
()))
_download
(
item
,
scope
,
path
)
else
:
for
s
in
items
[
item
].
keys
():
_download
(
item
,
s
)
for
s
in
_
items
[
item
].
keys
():
_download
(
item
,
s
,
path
)
def
ls
(
item
=
None
,
scope
=
'all'
):
pass
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录