add more detailed comment

wangkuiyi-patch-1
qiaolongfei 7 years ago
parent 7ebef493d5
commit 2e48ab623e

@ -30,25 +30,46 @@ class MergeIdsOpMaker : public framework::OpProtoAndCheckerMaker {
AddComment(R"DOC(
Merge multi LoDTensor's into one according to Ids's shard num.
The values in the input LoDTensor are lookuped from the output of split_ids_op
split_ids_op -> prefetch_op -> merge_ids_op
merge_ids_op should be used after split_ids_op and prefetch_op, split_ids_op
will split input Ids into multiple tensors according to Id's shard number.
prefetch_op will send them to parameter server to prefetch embedding value
back. During split, the order of ids is disordered. In merge_ids_op we use
the original Ids to restore the order of the fetched embedding value and
also pass the lod information to the merged output.
Example:
Input:
Ids = [1,2,3,4,5,6]
X0 = [[0.1 0.2] # 3
[0.2 0.3]] # 6
X1 = [[0.3 0.4] # 1
[0.4 0.5]] # 4
X2 = [[0.5 0.6] # 2
[0.6 0.7]] # 5
Output:
Out = [[0.3 0.4] # 1
[0.5 0.6] # 2
[0.1 0.2] # 3
[0.4 0.5] # 4
[0.6 0.7] # 5
[0.2 0.3]] # 6
Ids = [1,2,3,4,5,6] # 3 shared
split_ids_op ->
Id0 = [3, 6]
Id1 = [1, 4]
Id2 = [2, 5]
prefetch_op ->
X0 = [[0.3 0.3] # 3
[0.6 0.6]] # 6
X1 = [[0.1 0.1] # 1
[0.4 0.4]] # 4
X2 = [[0.2 0.2] # 2
[0.5 0.5]] # 5
merge_ids_op ->
Out = [[0.1 0.1] # 1
[0.2 0.2] # 2
[0.3 0.3] # 3
[0.4 0.4] # 4
[0.5 0.5] # 5
[0.6 0.6]] # 6
)DOC");
}
};

Loading…
Cancel
Save