Skip to content

Commit

Permalink
optimize line doc
Browse files Browse the repository at this point in the history
  • Loading branch information
paynie committed Aug 16, 2019
1 parent 3019366 commit 73c96ed
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions docs/algo/sona/line_sona.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,13 +20,13 @@ LINE算法是一个网络表示学习算法,也可以认为是针对图数据


## 2. 分布式实现
LINE 目前有两个独立的实现版本LINE V1和LINE V2, 这两个版本各有优势和适用场景。一般情况下,建议适用LINE V2版本。
LINE 目前有两个独立的实现版本LINE V1和LINE V2, 这两个版本各有优势和适用场景。**一般情况下,建议使用LINE V2版本**

LINE V1的实现参考了Yahoo的论文[[2]](https://arxiv.org/abs/1606.08495), 将Embedding向量按维度拆分到多个PS上,节点之间的点积运算可以在每个PS内部进行局部运算,之后再拉取到spark端合并。Spark端计算每个节点的梯度,推送到每个PS去更新每个节点对应的向量维度。 它的优势在于避免了传输模型导致的大量网络IO,适用于节点编码向量维度较高的场景,如果节点向量维度较低,它就不合适了。因为LINE V1有如下限制:节点编码维度必须是模型分区个数的整数倍,这限制了模型分区的个数和计算并发度。

![line_structure](../../img/line_structure.png)

LINE V2采用完全不同的实现方式:它使用节点id范围划分模型,没有分区个数限制,同时它需要将模型拉取回executor本地进行计算,因此会产生大量的网络通信开销,不适合节点编码维度高的场景。LINE V2中加入了许多容灾措施,因此更加的稳定。内部业务实测数据表明,在节点编码维度不是很高的情形下(例如128维),LINE V2性能是LINE V1性能的5倍以上
LINE V2采用完全不同的实现方式:它使用节点id范围划分模型,没有分区个数限制,同时它需要将模型拉取回executor本地进行计算,因此会产生大量的网络通信开销,不适合节点编码维度高的场景。LINE V2中加入了许多容灾措施,因此更加的稳定。内部业务实测数据表明,在节点编码维度不是很高的情形下(例如128维),LINE V2性能是LINE V1性能的**5倍以上**


## 3. 运行
Expand Down

0 comments on commit 73c96ed

Please sign in to comment.