提交 2e48ab62 编写于 作者: Q qiaolongfei

add more detailed comment

上级 7ebef493
......@@ -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");
}
};
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册