0
本文作者: 楊鯉萍 | 2019-08-09 14:06 |
雷鋒網(wǎng) AI 開(kāi)發(fā)者按:8 月 5 日晚,GraphVite 開(kāi)發(fā)者 @唐建(MILA 實(shí)驗(yàn)室助理教授,曾獲 ICML 2014最佳論文、WWW16 最佳論文提名) 在社交平臺(tái)上公布了這個(gè)圖表示學(xué)習(xí)系統(tǒng)開(kāi)源的消息。他表示,在百萬(wàn)節(jié)點(diǎn)的圖上,使用該系統(tǒng)僅需 1 分鐘左右就可以學(xué)習(xí)節(jié)點(diǎn)的表示。該系統(tǒng)的目標(biāo)是為廣泛的嵌入方法系列提供通用和高性能的框架,這將非常有利于圖學(xué)習(xí)算法的研究與部署。雷鋒網(wǎng) AI 開(kāi)發(fā)者將其具體介紹及相關(guān)地址編譯如下。
GraphVite 是一種通用圖形嵌入引擎,專用于各種應(yīng)用程序中的高速和大規(guī)模嵌入式學(xué)習(xí)。該系統(tǒng)支持多 GPU 并行,它可以擴(kuò)展到百萬(wàn)級(jí)甚至十億級(jí)的圖。
GraphVite 可以幫助用戶實(shí)現(xiàn):
在統(tǒng)一的平臺(tái)上重現(xiàn)學(xué)習(xí)算法
對(duì)圖形或高維數(shù)據(jù)進(jìn)行快速可視化
對(duì)大規(guī)模圖形或知識(shí)圖譜進(jìn)行學(xué)習(xí)
提高原型設(shè)計(jì)與模型調(diào)整的效率
目前,GraphVite 已為 3 種任務(wù)提供了完整的訓(xùn)練和評(píng)估流程,包括:節(jié)點(diǎn)嵌入、知識(shí)圖譜嵌入和圖形&高維數(shù)據(jù)可視化。
GraphVite 支持的 3 種任務(wù)模型
此外,它還涵蓋了 9 個(gè)主流的模型,以及它們?cè)谝幌盗袠?biāo)準(zhǔn)數(shù)據(jù)集上的基準(zhǔn)。通過(guò) Python 界面,用戶可以輕松地練習(xí)高級(jí)圖形嵌入算法,并在極短的時(shí)間內(nèi)獲得結(jié)果。
GraphVite 框架由兩個(gè)部分組成,核心庫(kù)和 Python wrapper。Python wrapper 可以為核心庫(kù)中的類提供自動(dòng)打包功能,并為應(yīng)用程序和數(shù)據(jù)集提供了實(shí)現(xiàn)。
核心庫(kù)用 C+11 和 CUDA 實(shí)現(xiàn),并使用 pybind11 綁定到 python 中。它涵蓋了 GraphVite 中所有與計(jì)算相關(guān)類的實(shí)現(xiàn),例如圖、求解器和優(yōu)化器。所有這些成分都可以打包成類,這類似于 Python 接口。
在 C+實(shí)現(xiàn)中,Python 有一些不同之處。圖和求解器由底層數(shù)據(jù)類型和嵌入向量長(zhǎng)度實(shí)現(xiàn)。該設(shè)計(jì)支持 Python 接口中的動(dòng)態(tài)數(shù)據(jù)類型,以及對(duì)最大化優(yōu)化編譯時(shí)(compile-time)。為了方便了對(duì) GraphVite 的進(jìn)一步開(kāi)發(fā),開(kāi)發(fā)者還對(duì) C+接口進(jìn)行了高度抽象。通過(guò)連接核心接口,用戶可以實(shí)現(xiàn)圖形的深度學(xué)習(xí)例程,而無(wú)需關(guān)注調(diào)度細(xì)節(jié)。
源代碼組如下:
include/base/*實(shí)現(xiàn)基本數(shù)據(jù)結(jié)構(gòu)
include/util/*實(shí)現(xiàn)基本用途
include/core/*實(shí)現(xiàn)優(yōu)化器、圖和求解器的核心接口
include/gpu/*實(shí)現(xiàn)所有模型的前向和后向傳播
include/instance/*實(shí)現(xiàn)圖和求解器的實(shí)例
include/bind.h 實(shí)現(xiàn) Python 綁定
src/graphvite.cu 實(shí)例化所有 Python 類
為了簡(jiǎn)要介紹 GraphVite 的速度,開(kāi)發(fā)者展示了用 GraphVite 實(shí)現(xiàn)的所有模型的基準(zhǔn)測(cè)試,包括它們的時(shí)間和性能。整個(gè)測(cè)試過(guò)程均采用的是具有 24 個(gè) CPU 線程和 4 個(gè) V100 GPU 的服務(wù)器。
節(jié)點(diǎn)嵌入
開(kāi)發(fā)者在 3 個(gè)數(shù)據(jù)集上進(jìn)行了節(jié)點(diǎn)嵌入模型的實(shí)驗(yàn),這些數(shù)據(jù)集的規(guī)模從百萬(wàn)到 5 億不等。下圖顯示了每個(gè)數(shù)據(jù)集的大小,以及嵌入 LINE 模型中所占用時(shí)間和 CPU 內(nèi)存大小。
節(jié)點(diǎn)嵌入模型在 3 個(gè)數(shù)據(jù)集上的測(cè)試結(jié)果
在多標(biāo)簽節(jié)點(diǎn)分類的標(biāo)準(zhǔn)任務(wù)上,開(kāi)發(fā)者也對(duì)學(xué)習(xí)到的節(jié)點(diǎn)嵌入進(jìn)行了評(píng)估。下面展示了每個(gè)模型以不同百分比訓(xùn)練數(shù)據(jù)在 micro-f1 和 macro-f1 兩種衡量指標(biāo)下的值。
Youtube 數(shù)據(jù)集上的節(jié)點(diǎn)嵌入評(píng)估
對(duì)于大規(guī)模數(shù)據(jù)集的測(cè)試結(jié)果如下所示。其中,node2vec 模型因內(nèi)存不足而無(wú)法成功運(yùn)行,因?yàn)樗枰^(guò) 200 GiB 的內(nèi)存來(lái)為二階隨機(jī)游走構(gòu)建別名表。
Flickr 大規(guī)模數(shù)據(jù)集上的測(cè)試結(jié)果
Friendster-small 大規(guī)模數(shù)據(jù)集上的測(cè)試結(jié)果
知識(shí)圖譜嵌入
對(duì)于知識(shí)圖嵌入,開(kāi)發(fā)者在 4 個(gè)標(biāo)準(zhǔn)數(shù)據(jù)集上對(duì) TransE,DistMult,ComplEx 和 RotatE 進(jìn)行了基準(zhǔn)測(cè)試。RotatE 在這些數(shù)據(jù)集上的訓(xùn)練時(shí)間和資源如下圖所示。
知識(shí)圖譜嵌入任務(wù)在 4 個(gè)標(biāo)準(zhǔn)數(shù)據(jù)集上測(cè)試結(jié)果
為了評(píng)估知識(shí)圖譜嵌入,開(kāi)發(fā)者還在鏈路預(yù)測(cè)任務(wù)上進(jìn)行了測(cè)試,并在測(cè)試集上報(bào)告每個(gè)模型的結(jié)果,其中排名指標(biāo)是根基于過(guò)濾結(jié)果計(jì)算而得。
知識(shí)圖譜嵌入任務(wù)在 FB15k 數(shù)據(jù)集上評(píng)估結(jié)果
知識(shí)圖譜嵌入任務(wù)在 FB15k-237 數(shù)據(jù)集上評(píng)估結(jié)果
知識(shí)圖譜嵌入任務(wù)在 WN18 數(shù)據(jù)集上評(píng)估結(jié)果
圖形&高維數(shù)據(jù)可視化
開(kāi)發(fā)者在兩個(gè)主流的圖像數(shù)據(jù)集上評(píng)估了高維數(shù)據(jù)可視化的對(duì)比結(jié)果。LargeVis 所需的訓(xùn)練時(shí)間和資源如下表所示。請(qǐng)注意,超過(guò) 95%的 GPU 內(nèi)存占用來(lái)自 KNN Graph 的構(gòu)建,并且可以在必要時(shí)減慢速度進(jìn)行平衡。
高維數(shù)據(jù)可視化任務(wù)在數(shù)據(jù)集上測(cè)試結(jié)果
對(duì)于 ImageNet,因?yàn)樗?1000 個(gè)類,所以開(kāi)發(fā)者根據(jù)它們?cè)?WordNet 中的層次結(jié)構(gòu)來(lái)可視化類。下面的動(dòng)畫(huà)演示了如何在層次結(jié)構(gòu)中遍歷 English Setter 類。
在層次結(jié)構(gòu)中遍歷 English Setter 類演示
與類似工作的比較
與 GraphVite 相似的系統(tǒng)是 PyTorch-BigGraph,該系統(tǒng)旨在加速大規(guī)模知識(shí)圖嵌入數(shù)據(jù)。下圖是在相同的超參數(shù)設(shè)置下,對(duì) FB15K 上兩個(gè)庫(kù)中實(shí)現(xiàn)的模型進(jìn)行的 Apple-to-Apple 比較。
GraphVite 與 PyTorch-BigGraph系統(tǒng)速度對(duì)比
更多 GraphVite 信息:
GitHub 開(kāi)源地址:
雷鋒網(wǎng) AI 開(kāi)發(fā)者
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見(jiàn)轉(zhuǎn)載須知。