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

add more detailed comment

上级 7ebef493
...@@ -30,25 +30,46 @@ class MergeIdsOpMaker : public framework::OpProtoAndCheckerMaker { ...@@ -30,25 +30,46 @@ class MergeIdsOpMaker : public framework::OpProtoAndCheckerMaker {
AddComment(R"DOC( AddComment(R"DOC(
Merge multi LoDTensor's into one according to Ids's shard num. 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: Example:
Input:
Ids = [1,2,3,4,5,6] Ids = [1,2,3,4,5,6] # 3 shared
X0 = [[0.1 0.2] # 3
[0.2 0.3]] # 6 split_ids_op ->
X1 = [[0.3 0.4] # 1
[0.4 0.5]] # 4 Id0 = [3, 6]
X2 = [[0.5 0.6] # 2 Id1 = [1, 4]
[0.6 0.7]] # 5 Id2 = [2, 5]
Output: prefetch_op ->
Out = [[0.3 0.4] # 1
[0.5 0.6] # 2 X0 = [[0.3 0.3] # 3
[0.1 0.2] # 3 [0.6 0.6]] # 6
[0.4 0.5] # 4 X1 = [[0.1 0.1] # 1
[0.6 0.7] # 5 [0.4 0.4]] # 4
[0.2 0.3]] # 6 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"); )DOC");
} }
}; };
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册