Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleDetection
提交
39449ba0
P
PaddleDetection
项目概览
PaddlePaddle
/
PaddleDetection
大约 1 年 前同步成功
通知
695
Star
11112
Fork
2696
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
184
列表
看板
标记
里程碑
合并请求
40
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleDetection
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
184
Issue
184
列表
看板
标记
里程碑
合并请求
40
合并请求
40
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
39449ba0
编写于
3月 13, 2019
作者:
X
xujiaqi01
提交者:
dongdaxiang
3月 29, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix bug && add DestroyReaders in trainer
上级
3641a78b
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
31 addition
and
16 deletion
+31
-16
paddle/fluid/framework/data_feed.cc
paddle/fluid/framework/data_feed.cc
+3
-3
paddle/fluid/framework/data_set.cc
paddle/fluid/framework/data_set.cc
+2
-2
paddle/fluid/framework/dist_multi_trainer.cc
paddle/fluid/framework/dist_multi_trainer.cc
+2
-0
paddle/fluid/framework/fleet/fleet_wrapper.cc
paddle/fluid/framework/fleet/fleet_wrapper.cc
+15
-5
paddle/fluid/framework/fleet/fleet_wrapper.h
paddle/fluid/framework/fleet/fleet_wrapper.h
+5
-5
paddle/fluid/framework/multi_trainer.cc
paddle/fluid/framework/multi_trainer.cc
+2
-1
paddle/fluid/framework/trainer.h
paddle/fluid/framework/trainer.h
+2
-0
未找到文件。
paddle/fluid/framework/data_feed.cc
浏览文件 @
39449ba0
...
@@ -314,21 +314,21 @@ void InMemoryDataFeed<T>::GlobalShuffle() {
...
@@ -314,21 +314,21 @@ void InMemoryDataFeed<T>::GlobalShuffle() {
// todo get ins id
// todo get ins id
// std::string ins_id = memory_data_[i].ins_id;
// std::string ins_id = memory_data_[i].ins_id;
// todo hash
// todo hash
int64_t
random_num
=
fleet_ptr
->
local_random_e
ngine
()();
int64_t
random_num
=
fleet_ptr
->
LocalRandomE
ngine
()();
int64_t
node_id
=
random_num
%
trainer_num_
;
int64_t
node_id
=
random_num
%
trainer_num_
;
std
::
string
str
;
std
::
string
str
;
SerializeIns
((
*
memory_data_
)[
i
],
&
str
);
SerializeIns
((
*
memory_data_
)[
i
],
&
str
);
send_str_vec
[
node_id
]
+=
str
;
send_str_vec
[
node_id
]
+=
str
;
if
(
i
%
fleet_send_batch_size_
==
0
&&
i
!=
0
)
{
if
(
i
%
fleet_send_batch_size_
==
0
&&
i
!=
0
)
{
for
(
int
j
=
0
;
j
<
send_str_vec
.
size
();
++
j
)
{
for
(
int
j
=
0
;
j
<
send_str_vec
.
size
();
++
j
)
{
fleet_ptr
->
send_client2client_m
sg
(
0
,
j
,
send_str_vec
[
j
]);
fleet_ptr
->
SendClientToClientM
sg
(
0
,
j
,
send_str_vec
[
j
]);
send_str_vec
[
j
]
=
""
;
send_str_vec
[
j
]
=
""
;
}
}
}
}
}
}
for
(
int
j
=
0
;
j
<
send_str_vec
.
size
();
++
j
)
{
for
(
int
j
=
0
;
j
<
send_str_vec
.
size
();
++
j
)
{
if
(
send_str_vec
[
j
].
length
()
!=
0
)
{
if
(
send_str_vec
[
j
].
length
()
!=
0
)
{
fleet_ptr
->
send_client2client_m
sg
(
0
,
j
,
send_str_vec
[
j
]);
fleet_ptr
->
SendClientToClientM
sg
(
0
,
j
,
send_str_vec
[
j
]);
}
}
}
}
}
}
...
...
paddle/fluid/framework/data_set.cc
浏览文件 @
39449ba0
...
@@ -117,8 +117,8 @@ void DatasetImpl<T>::GlobalShuffle() {
...
@@ -117,8 +117,8 @@ void DatasetImpl<T>::GlobalShuffle() {
// if it is not InMemory, memory_data_ is empty
// if it is not InMemory, memory_data_ is empty
std
::
random_shuffle
(
memory_data_
.
begin
(),
memory_data_
.
end
());
std
::
random_shuffle
(
memory_data_
.
begin
(),
memory_data_
.
end
());
auto
fleet_ptr
=
FleetWrapper
::
GetInstance
();
auto
fleet_ptr
=
FleetWrapper
::
GetInstance
();
VLOG
(
3
)
<<
"
registe_client2client_msg_h
andler"
;
VLOG
(
3
)
<<
"
RegisterClientToClientMsgH
andler"
;
fleet_ptr
->
registe_client2client_msg_h
andler
(
0
,
fleet_ptr
->
RegisterClientToClientMsgH
andler
(
0
,
[
this
](
int
msg_type
,
int
client_id
,
const
std
::
string
&
msg
)
->
int
{
[
this
](
int
msg_type
,
int
client_id
,
const
std
::
string
&
msg
)
->
int
{
return
this
->
ReceiveFromClient
(
msg_type
,
client_id
,
msg
);
return
this
->
ReceiveFromClient
(
msg_type
,
client_id
,
msg
);
});
});
...
...
paddle/fluid/framework/dist_multi_trainer.cc
浏览文件 @
39449ba0
...
@@ -25,6 +25,7 @@ namespace framework {
...
@@ -25,6 +25,7 @@ namespace framework {
void
DistMultiTrainer
::
Initialize
(
const
TrainerDesc
&
trainer_desc
,
void
DistMultiTrainer
::
Initialize
(
const
TrainerDesc
&
trainer_desc
,
Dataset
*
dataset
)
{
Dataset
*
dataset
)
{
thread_num_
=
trainer_desc
.
thread_num
();
thread_num_
=
trainer_desc
.
thread_num
();
SetDataset
(
dataset
);
workers_
.
resize
(
thread_num_
);
workers_
.
resize
(
thread_num_
);
dataset
->
CreateReaders
();
dataset
->
CreateReaders
();
...
@@ -55,6 +56,7 @@ void DistMultiTrainer::Finalize() {
...
@@ -55,6 +56,7 @@ void DistMultiTrainer::Finalize() {
th
.
join
();
th
.
join
();
}
}
pull_dense_worker_
->
Stop
();
pull_dense_worker_
->
Stop
();
dataset_ptr_
->
DestroyReaders
();
}
}
}
// end namespace framework
}
// end namespace framework
...
...
paddle/fluid/framework/fleet/fleet_wrapper.cc
浏览文件 @
39449ba0
...
@@ -292,21 +292,31 @@ void FleetWrapper::PushSparseVarsWithLabelAsync(
...
@@ -292,21 +292,31 @@ void FleetWrapper::PushSparseVarsWithLabelAsync(
#endif
#endif
}
}
int
FleetWrapper
::
registe_client2client_msg_h
andler
(
int
FleetWrapper
::
RegisterClientToClientMsgH
andler
(
int
msg_type
,
MsgHandlerFunc
handler
)
{
int
msg_type
,
MsgHandlerFunc
handler
)
{
#ifdef PADDLE_WITH_PSLIB
pslib_ptr_
->
_worker_ptr
->
registe_client2client_msg_handler
(
pslib_ptr_
->
_worker_ptr
->
registe_client2client_msg_handler
(
msg_type
,
handler
);
msg_type
,
handler
);
#else
VLOG
(
0
)
<<
"FleetWrapper::RegisterClientToClientMsgHandler"
<<
" does nothing when no pslib"
;
#endif
return
0
;
return
0
;
}
}
int
FleetWrapper
::
send_client2client_m
sg
(
int
FleetWrapper
::
SendClientToClientM
sg
(
int
msg_type
,
int
to_client_id
,
const
std
::
string
&
msg
)
{
int
msg_type
,
int
to_client_id
,
const
std
::
string
&
msg
)
{
#ifdef PADDLE_WITH_PSLIB
pslib_ptr_
->
_worker_ptr
->
send_client2client_msg
(
pslib_ptr_
->
_worker_ptr
->
send_client2client_msg
(
msg_type
,
to_client_id
,
msg
);
msg_type
,
to_client_id
,
msg
);
#else
VLOG
(
0
)
<<
"FleetWrapper::SendClientToClientMsg"
<<
" does nothing when no pslib"
;
#endif
return
0
;
return
0
;
}
}
std
::
default_random_engine
&
FleetWrapper
::
local_random_e
ngine
()
{
std
::
default_random_engine
&
FleetWrapper
::
LocalRandomE
ngine
()
{
struct
engine_wrapper_t
{
struct
engine_wrapper_t
{
std
::
default_random_engine
engine
;
std
::
default_random_engine
engine
;
engine_wrapper_t
()
{
engine_wrapper_t
()
{
...
@@ -330,7 +340,7 @@ void FleetWrapper::Serialize(const T& t, std::string* str) {
...
@@ -330,7 +340,7 @@ void FleetWrapper::Serialize(const T& t, std::string* str) {
ar
<<
t
;
ar
<<
t
;
*
str
=
std
::
string
(
ar
.
buffer
(),
ar
.
length
());
*
str
=
std
::
string
(
ar
.
buffer
(),
ar
.
length
());
#else
#else
VLOG
(
0
)
<<
"FleetWrapper::Serialize do nothing when no pslib"
;
VLOG
(
0
)
<<
"FleetWrapper::Serialize do
es
nothing when no pslib"
;
#endif
#endif
}
}
...
@@ -341,7 +351,7 @@ void FleetWrapper::Deserialize(T* t, const std::string& str) {
...
@@ -341,7 +351,7 @@ void FleetWrapper::Deserialize(T* t, const std::string& str) {
ar
.
set_read_buffer
(
const_cast
<
char
*>
(
str
.
c_str
()),
str
.
length
(),
nullptr
);
ar
.
set_read_buffer
(
const_cast
<
char
*>
(
str
.
c_str
()),
str
.
length
(),
nullptr
);
*
t
=
ar
.
get
<
T
>
();
*
t
=
ar
.
get
<
T
>
();
#else
#else
VLOG
(
0
)
<<
"FleetWrapper::Deserialize do nothing when no pslib"
;
VLOG
(
0
)
<<
"FleetWrapper::Deserialize do
es
nothing when no pslib"
;
#endif
#endif
}
}
...
...
paddle/fluid/framework/fleet/fleet_wrapper.h
浏览文件 @
39449ba0
...
@@ -115,11 +115,11 @@ class FleetWrapper {
...
@@ -115,11 +115,11 @@ class FleetWrapper {
void
GatherServers
(
const
std
::
vector
<
uint64_t
>&
host_sign_list
,
int
node_num
);
void
GatherServers
(
const
std
::
vector
<
uint64_t
>&
host_sign_list
,
int
node_num
);
typedef
std
::
function
<
int32_t
(
int
,
int
,
const
std
::
string
&
)
>
MsgHandlerFunc
;
typedef
std
::
function
<
int32_t
(
int
,
int
,
const
std
::
string
&
)
>
MsgHandlerFunc
;
int
registe_client2client_msg_h
andler
(
int
msg_type
,
MsgHandlerFunc
handler
);
int
RegisterClientToClientMsgH
andler
(
int
msg_type
,
MsgHandlerFunc
handler
);
int
send_client2client_m
sg
(
int
msg_type
,
int
SendClientToClientM
sg
(
int
msg_type
,
int
to_client_id
,
int
to_client_id
,
const
std
::
string
&
msg
);
const
std
::
string
&
msg
);
std
::
default_random_engine
&
local_random_e
ngine
();
std
::
default_random_engine
&
LocalRandomE
ngine
();
template
<
typename
T
>
template
<
typename
T
>
void
Serialize
(
const
T
&
t
,
std
::
string
*
str
);
void
Serialize
(
const
T
&
t
,
std
::
string
*
str
);
...
...
paddle/fluid/framework/multi_trainer.cc
浏览文件 @
39449ba0
...
@@ -24,6 +24,7 @@ namespace framework {
...
@@ -24,6 +24,7 @@ namespace framework {
void
MultiTrainer
::
Initialize
(
const
TrainerDesc
&
trainer_desc
,
void
MultiTrainer
::
Initialize
(
const
TrainerDesc
&
trainer_desc
,
Dataset
*
dataset
)
{
Dataset
*
dataset
)
{
thread_num_
=
trainer_desc
.
thread_num
();
thread_num_
=
trainer_desc
.
thread_num
();
SetDataset
(
dataset
);
// get filelist from trainer_desc here
// get filelist from trainer_desc here
workers_
.
resize
(
thread_num_
);
workers_
.
resize
(
thread_num_
);
VLOG
(
3
)
<<
"worker thread num: "
<<
thread_num_
;
VLOG
(
3
)
<<
"worker thread num: "
<<
thread_num_
;
...
@@ -65,7 +66,7 @@ void MultiTrainer::Finalize() {
...
@@ -65,7 +66,7 @@ void MultiTrainer::Finalize() {
for
(
auto
&
th
:
threads_
)
{
for
(
auto
&
th
:
threads_
)
{
th
.
join
();
th
.
join
();
}
}
// todo dataset
->DestroyReaders();
dataset_ptr_
->
DestroyReaders
();
}
}
}
// end namespace framework
}
// end namespace framework
...
...
paddle/fluid/framework/trainer.h
浏览文件 @
39449ba0
...
@@ -41,6 +41,7 @@ class TrainerBase {
...
@@ -41,6 +41,7 @@ class TrainerBase {
// model memory are hosted in root_scope
// model memory are hosted in root_scope
void
SetScope
(
Scope
*
root_scope
);
void
SetScope
(
Scope
*
root_scope
);
void
SetDebug
(
const
bool
debug
)
{
debug_
=
debug
;
}
void
SetDebug
(
const
bool
debug
)
{
debug_
=
debug
;
}
void
SetDataset
(
Dataset
*
dataset_ptr
)
{
dataset_ptr_
=
dataset_ptr
;
}
virtual
void
Initialize
(
const
TrainerDesc
&
trainer_desc
,
virtual
void
Initialize
(
const
TrainerDesc
&
trainer_desc
,
Dataset
*
data_set
)
=
0
;
Dataset
*
data_set
)
=
0
;
virtual
void
InitTrainerEnv
(
const
ProgramDesc
&
main_program
,
virtual
void
InitTrainerEnv
(
const
ProgramDesc
&
main_program
,
...
@@ -52,6 +53,7 @@ class TrainerBase {
...
@@ -52,6 +53,7 @@ class TrainerBase {
protected:
protected:
Scope
*
root_scope_
;
Scope
*
root_scope_
;
bool
debug_
;
bool
debug_
;
Dataset
*
dataset_ptr_
;
};
};
// general trainer for async execution
// general trainer for async execution
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录