Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
Paddle
提交
b2cfdc38
P
Paddle
项目概览
BaiXuePrincess
/
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看板
未验证
提交
b2cfdc38
编写于
6月 14, 2019
作者:
G
guru4elephant
提交者:
GitHub
6月 14, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refine unittest log (#18084)
* add print log for unittest of distributed training test=develop
上级
f5caf344
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
67 addition
and
20 deletion
+67
-20
python/paddle/fluid/tests/unittests/test_async_ssa_graph_executor_mnist.py
...id/tests/unittests/test_async_ssa_graph_executor_mnist.py
+6
-0
python/paddle/fluid/tests/unittests/test_dist_base.py
python/paddle/fluid/tests/unittests/test_dist_base.py
+41
-10
python/paddle/fluid/tests/unittests/test_dist_fleet_base.py
python/paddle/fluid/tests/unittests/test_dist_fleet_base.py
+7
-1
python/paddle/fluid/tests/unittests/test_parallel_dygraph_mnist.py
...ddle/fluid/tests/unittests/test_parallel_dygraph_mnist.py
+8
-4
python/paddle/fluid/tests/unittests/test_parallel_dygraph_se_resnext.py
...fluid/tests/unittests/test_parallel_dygraph_se_resnext.py
+5
-5
未找到文件。
python/paddle/fluid/tests/unittests/test_async_ssa_graph_executor_mnist.py
浏览文件 @
b2cfdc38
...
...
@@ -105,18 +105,23 @@ def train(use_cuda, thread_num, cpu_num):
img
,
label
,
prediction
,
avg_loss
,
acc
,
py_reader
=
convolutional_neural_network
(
use_py_reader
=
True
)
print
(
"build convolutional neural network done."
)
optimizer
=
fluid
.
optimizer
.
Adam
(
learning_rate
=
0.001
)
optimizer
.
minimize
(
avg_loss
)
print
(
"Adam optimizer minimize done."
)
train_reader
=
paddle
.
batch
(
paddle
.
reader
.
shuffle
(
paddle
.
dataset
.
mnist
.
train
(),
buf_size
=
500
),
batch_size
=
BATCH_SIZE
)
print
(
"declared train reader done."
)
place
=
fluid
.
CPUPlace
()
exe
=
fluid
.
Executor
(
place
)
print
(
"going to run startup program"
)
exe
.
run
(
fluid
.
default_startup_program
())
print
(
"run startup program done."
)
os
.
environ
[
'CPU_NUM'
]
=
str
(
cpu_num
)
...
...
@@ -137,6 +142,7 @@ def train(use_cuda, thread_num, cpu_num):
main_program
=
main_program
,
build_strategy
=
build_strategy
,
exec_strategy
=
exec_strategy
)
print
(
"declare parallel executor done."
)
py_reader
.
decorate_paddle_reader
(
train_reader
)
...
...
python/paddle/fluid/tests/unittests/test_dist_base.py
浏览文件 @
b2cfdc38
...
...
@@ -35,6 +35,13 @@ RUN_STEP = 5
DEFAULT_BATCH_SIZE
=
2
def
my_print
(
log_str
):
if
six
.
PY2
:
sys
.
stderr
.
write
(
pickle
.
dumps
(
log_str
))
else
:
sys
.
stderr
.
buffer
.
write
(
pickle
.
dumps
(
log_str
))
class
TestDistRunnerBase
(
object
):
def
get_model
(
self
,
batch_size
=
DEFAULT_BATCH_SIZE
,
...
...
@@ -83,7 +90,9 @@ class TestDistRunnerBase(object):
place
=
fluid
.
CPUPlace
()
exe
=
fluid
.
Executor
(
place
)
exe
.
run
(
startup_prog
)
my_print
(
"run pserver startup program done."
)
exe
.
run
(
pserver_prog
)
my_print
(
"run pserver main program done."
)
def
run_trainer
(
self
,
args
):
self
.
lr
=
args
.
lr
...
...
@@ -98,18 +107,23 @@ class TestDistRunnerBase(object):
self
.
get_model
(
batch_size
=
args
.
batch_size
)
if
args
.
mem_opt
:
my_print
(
"begin to run memory optimize"
)
fluid
.
memory_optimize
(
fluid
.
default_main_program
(),
skip_grads
=
True
)
my_print
(
"trainer run memory optimize done."
)
if
args
.
update_method
==
"pserver"
:
my_print
(
"begin to run transpile on trainer with pserver mode"
)
t
=
self
.
get_transpiler
(
args
.
trainer_id
,
fluid
.
default_main_program
(),
args
.
endpoints
,
args
.
trainers
,
args
.
sync_mode
,
args
.
dc_asgd
)
trainer_prog
=
t
.
get_trainer_program
()
my_print
(
"get trainer program done with pserver mode."
)
elif
args
.
update_method
==
"nccl2"
or
args
.
update_method
==
"nccl2_reduce_layer"
:
# transpile for nccl2
config
=
fluid
.
DistributeTranspilerConfig
()
config
.
mode
=
"nccl2"
config
.
nccl_comm_num
=
args
.
nccl_comm_num
my_print
(
"begin to run transpile on trainer with nccl2 mode"
)
nccl2_t
=
fluid
.
DistributeTranspiler
(
config
=
config
)
nccl2_t
.
transpile
(
args
.
trainer_id
,
...
...
@@ -117,7 +131,7 @@ class TestDistRunnerBase(object):
startup_program
=
fluid
.
default_startup_program
(),
trainers
=
args
.
endpoints
,
current_endpoint
=
args
.
current_endpoint
)
my_print
(
"get trainer program done. with nccl2 mode"
)
trainer_prog
=
fluid
.
default_main_program
()
else
:
trainer_prog
=
fluid
.
default_main_program
()
...
...
@@ -130,6 +144,7 @@ class TestDistRunnerBase(object):
exe
=
fluid
.
Executor
(
place
)
exe
.
run
(
fluid
.
default_startup_program
())
my_print
(
"run worker startup program done."
)
exec_strategy
=
fluid
.
ExecutionStrategy
()
exec_strategy
.
num_threads
=
1
...
...
@@ -162,10 +177,12 @@ class TestDistRunnerBase(object):
build_stra
.
num_trainers
=
1
build_stra
.
trainer_id
=
0
my_print
(
"begin to compile with data parallel"
)
binary
=
compiler
.
CompiledProgram
(
trainer_prog
).
with_data_parallel
(
loss_name
=
avg_cost
.
name
,
build_strategy
=
build_stra
,
exec_strategy
=
exec_strategy
)
my_print
(
"program compiled with data parallel"
)
if
args
.
use_cuda
and
args
.
update_method
==
"nccl2"
:
# it just for test share_vars_from feature.
...
...
@@ -195,6 +212,7 @@ class TestDistRunnerBase(object):
else
:
return
origin_batch
my_print
(
"begin to train on trainer"
)
out_losses
=
[]
for
_
in
six
.
moves
.
xrange
(
RUN_STEP
):
loss
,
=
exe
.
run
(
binary
,
...
...
@@ -247,14 +265,19 @@ class TestParallelDyGraphRunnerBase(object):
strategy
.
local_rank
=
args
.
trainer_id
strategy
.
trainer_endpoints
=
args
.
endpoints
.
split
(
","
)
strategy
.
current_endpoint
=
args
.
current_endpoint
my_print
(
"begin to prepare context in dygraph with nccl2"
)
dygraph
.
parallel
.
prepare_context
(
strategy
)
model
=
dygraph
.
parallel
.
DataParallel
(
model
,
strategy
)
my_print
(
"model built in dygraph"
)
out_losses
=
[]
my_print
(
"begin to run dygraph training"
)
for
step_id
,
data
in
enumerate
(
train_reader
()):
data
=
_get_data
(
data
)
if
step_id
==
RUN_STEP
:
break
loss
=
self
.
run_one_loop
(
model
,
opt
,
data
)
if
step_id
%
10
==
0
:
my_print
(
"loss at step %d: %f"
%
(
step_id
,
loss
))
out_losses
.
append
(
loss
.
numpy
())
# FIXME(Yancey1989): scale the loss inplace
...
...
@@ -267,10 +290,7 @@ class TestParallelDyGraphRunnerBase(object):
opt
.
minimize
(
loss
)
model
.
clear_gradients
()
if
six
.
PY2
:
print
(
pickle
.
dumps
(
out_losses
))
else
:
sys
.
stdout
.
buffer
.
write
(
pickle
.
dumps
(
out_losses
))
my_print
(
pickle
.
dumps
(
out_losses
))
def
runtime_main
(
test_class
):
...
...
@@ -375,6 +395,7 @@ class TestDistBase(unittest.TestCase):
with
closing
(
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
))
as
s
:
s
.
bind
((
''
,
0
))
my_print
(
"socket name: %s"
%
s
.
getsockname
()[
1
])
return
s
.
getsockname
()[
1
]
while
True
:
...
...
@@ -405,11 +426,13 @@ class TestDistBase(unittest.TestCase):
ps0_pipe
=
open
(
"/tmp/ps0_err.log"
,
"wb"
)
ps1_pipe
=
open
(
"/tmp/ps1_err.log"
,
"wb"
)
my_print
(
"going to start pserver process 0"
)
ps0_proc
=
subprocess
.
Popen
(
ps0_cmd
.
strip
().
split
(
" "
),
stdout
=
subprocess
.
PIPE
,
stderr
=
ps0_pipe
,
env
=
required_envs
)
my_print
(
"going to start pserver process 1"
)
ps1_proc
=
subprocess
.
Popen
(
ps1_cmd
.
strip
().
split
(
" "
),
stdout
=
subprocess
.
PIPE
,
...
...
@@ -515,11 +538,13 @@ class TestDistBase(unittest.TestCase):
tr0_pipe
=
open
(
"/tmp/tr0_err.log"
,
"wb"
)
tr1_pipe
=
open
(
"/tmp/tr1_err.log"
,
"wb"
)
my_print
(
"going to start trainer process 0"
)
tr0_proc
=
subprocess
.
Popen
(
tr0_cmd
.
strip
().
split
(
" "
),
stdout
=
subprocess
.
PIPE
,
stderr
=
tr0_pipe
,
env
=
env0
)
my_print
(
"going to start trainer process 1"
)
tr1_proc
=
subprocess
.
Popen
(
tr1_cmd
.
strip
().
split
(
" "
),
stdout
=
subprocess
.
PIPE
,
...
...
@@ -551,16 +576,20 @@ class TestDistBase(unittest.TestCase):
ps1
.
terminate
()
# print server log
with
open
(
"/tmp/ps0_err.log"
,
"r"
)
as
fn
:
'''
with open("/tmp/ps0_err.log", "rb") as fn:
sys.stderr.write("ps0 stderr: %s
\n
" % fn.read())
with
open
(
"/tmp/ps1_err.log"
,
"r"
)
as
fn
:
with open("/tmp/ps1_err.log", "r
b
") as fn:
sys.stderr.write("ps1 stderr: %s
\n
" % fn.read())
'''
# print log
with
open
(
"/tmp/tr0_err.log"
,
"r"
)
as
fn
:
'''
with open("/tmp/tr0_err.log", "rb") as fn:
sys.stderr.write('trainer 0 stderr: %s
\n
' % fn.read())
with
open
(
"/tmp/tr1_err.log"
,
"r"
)
as
fn
:
with open("/tmp/tr1_err.log", "r
b
") as fn:
sys.stderr.write('trainer 1 stderr: %s
\n
' % fn.read())
'''
return
pickle
.
loads
(
tr0_out
),
pickle
.
loads
(
tr1_out
)
...
...
@@ -633,11 +662,13 @@ class TestDistBase(unittest.TestCase):
tr0_pipe
=
open
(
"/tmp/tr0_err.log"
,
"wb"
)
tr1_pipe
=
open
(
"/tmp/tr1_err.log"
,
"wb"
)
my_print
(
"going to start process 0 with nccl2"
)
tr0_proc
=
subprocess
.
Popen
(
tr0_cmd
.
strip
().
split
(
" "
),
stdout
=
subprocess
.
PIPE
,
stderr
=
tr0_pipe
,
env
=
env0
)
my_print
(
"going to start process 1 with nccl2"
)
tr1_proc
=
subprocess
.
Popen
(
tr1_cmd
.
strip
().
split
(
" "
),
stdout
=
subprocess
.
PIPE
,
...
...
@@ -668,7 +699,7 @@ class TestDistBase(unittest.TestCase):
"PYTHONPATH"
:
os
.
getenv
(
"PYTHONPATH"
,
""
),
"LD_LIBRARY_PATH"
:
os
.
getenv
(
"LD_LIBRARY_PATH"
,
""
),
"FLAGS_fraction_of_gpu_memory_to_use"
:
"0.15"
,
"FLAGS_rpc_deadline"
:
"
5
000"
,
# 5sec to fail fast
"FLAGS_rpc_deadline"
:
"
30
000"
,
# 5sec to fail fast
"FLAGS_cudnn_deterministic"
:
"1"
,
"http_proxy"
:
""
,
"NCCL_P2P_DISABLE"
:
"1"
...
...
python/paddle/fluid/tests/unittests/test_dist_fleet_base.py
浏览文件 @
b2cfdc38
...
...
@@ -203,23 +203,29 @@ class TestFleetBase(unittest.TestCase):
ps0
.
terminate
()
ps1
.
terminate
()
'''
with open("/tmp/tr0_out.log", "wb+") as wn:
wn.write(tr0_out)
with open("/tmp/tr1_out.log", "wb+") as wn:
wn.write(tr1_out)
# print server log
'''
# print server log
'''
with open("/tmp/ps0_err.log", "r") as fn:
sys.stderr.write("ps0 stderr: %s
\n
" % fn.read())
with open("/tmp/ps1_err.log", "r") as fn:
sys.stderr.write("ps1 stderr: %s
\n
" % fn.read())
'''
# print log
'''
with open("/tmp/tr0_err.log", "r") as fn:
sys.stderr.write('trainer 0 stderr: %s
\n
' % fn.read())
with open("/tmp/tr1_err.log", "r") as fn:
sys.stderr.write('trainer 1 stderr: %s
\n
' % fn.read())
'''
return
0
,
0
...
...
python/paddle/fluid/tests/unittests/test_parallel_dygraph_mnist.py
浏览文件 @
b2cfdc38
...
...
@@ -13,11 +13,13 @@
# limitations under the License.
from
__future__
import
print_function
import
unittest
#
import unittest
from
test_dist_base
import
TestDistBase
import
paddle.fluid
as
fluid
#TODO(guru4elephant): should have dygraph test dist base
# current TestDistBase has some incompatible code with dygraph
'''
class TestParallelDygraphMnist(TestDistBase):
def _setup_config(self):
self._sync_mode = False
...
...
@@ -25,9 +27,11 @@ class TestParallelDygraphMnist(TestDistBase):
self._dygraph = True
def test_mnist(self):
return
if fluid.core.is_compiled_with_cuda():
self.check_with_place("parallel_dygraph_mnist.py", delta=1e-5)
'''
if
__name__
==
"__main__"
:
unittest
.
main
()
#unittest.main()
pass
python/paddle/fluid/tests/unittests/test_parallel_dygraph_se_resnext.py
浏览文件 @
b2cfdc38
...
...
@@ -13,11 +13,10 @@
# limitations under the License.
from
__future__
import
print_function
import
unittest
#
import unittest
from
test_dist_base
import
TestDistBase
import
paddle.fluid
as
fluid
'''
class TestParallelDygraphSeResNeXt(TestDistBase):
def _setup_config(self):
self._sync_mode = False
...
...
@@ -29,7 +28,8 @@ class TestParallelDygraphSeResNeXt(TestDistBase):
# try to remove the BN and Dropout in the network and using delta = 1e-5
if fluid.core.is_compiled_with_cuda():
self.check_with_place("parallel_dygraph_se_resnext.py", delta=1)
'''
if
__name__
==
"__main__"
:
unittest
.
main
()
pass
#unittest.main()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录