已開源!GraphVite 超高速圖表示學習系統,1 分鐘可學百萬節點
雷鋒網 AI 開發者按:8 月 5 日晚,GraphVite 開發者 @唐建(MILA 實驗室助理教授,曾獲 ICML 2014最佳論文、WWW16 最佳論文提名) 在社交平台上公布了這個圖表示學習系統開源的消息。他表示,在百萬節點的圖上,使用該系統僅需 1 分鐘左右就可以學習節點的表示。該系統的目標是為廣泛的嵌入方法系列提供通用和高性能的框架,這將非常有利於圖學習演算法的研究與部署。雷鋒網 AI 開發者將其具體介紹及相關地址編譯如下。
GraphVite:高速大規模圖形嵌入GraphVite 是一種通用圖形嵌入引擎,專用於各種應用程序中的高速和大規模嵌入式學習。該系統支持多 GPU 並行,它可以擴展到百萬級甚至十億級的圖。
GraphVite 可以幫助用戶實現:
在統一的平台上重現學習演算法
對圖形或高維數據進行快速可視化
對大規模圖形或知識圖譜進行學習
提高原型設計與模型調整的效率
目前,GraphVite 已為 3 種任務提供了完整的訓練和評估流程,包括:節點嵌入、知識圖譜嵌入和圖形&高維數據可視化。
GraphVite 支持的 3 種任務模型
此外,它還涵蓋了 9 個主流的模型,以及它們在一系列標準數據集上的基準。通過 Python 界面,用戶可以輕鬆地練習高級圖形嵌入演算法,並在極短的時間內獲得結果。
理解框架GraphVite 框架由兩個部分組成,核心庫和 Python wrapper。Python wrapper 可以為核心庫中的類提供自動打包功能,並為應用程序和數據集提供了實現。
核心庫用 C+11 和 CUDA 實現,並使用 pybind11 綁定到 python 中。它涵蓋了 GraphVite 中所有與計算相關類的實現,例如圖、求解器和優化器。所有這些成分都可以打包成類,這類似於 Python 介面。
在 C+實現中,Python 有一些不同之處。圖和求解器由底層數據類型和嵌入向量長度實現。該設計支持 Python 介面中的動態數據類型,以及對最大化優化編譯時(compile-time)。為了方便了對 GraphVite 的進一步開發,開發者還對 C+介面進行了高度抽象。通過連接核心介面,用戶可以實現圖形的深度學習常式,而無需關注調度細節。
源代碼組如下:
include/base/*實現基本數據結構
include/util/*實現基本用途
include/core/*實現優化器、圖和求解器的核心介面
include/gpu/*實現所有模型的前向和後向傳播
include/instance/*實現圖和求解器的實例
include/bind.h 實現 Python 綁定
src/graphvite.cu 實例化所有 Python 類
GraphVite 到底有多快?
為了簡要介紹 GraphVite 的速度,開發者展示了用 GraphVite 實現的所有模型的基準測試,包括它們的時間和性能。整個測試過程均採用的是具有 24 個 CPU 線程和 4 個 V100 GPU 的伺服器。
節點嵌入
開發者在 3 個數據集上進行了節點嵌入模型的實驗,這些數據集的規模從百萬到 5 億不等。下圖顯示了每個數據集的大小,以及嵌入 LINE 模型中所佔用時間和 CPU 內存大小。
節點嵌入模型在 3 個數據集上的測試結果
在多標籤節點分類的標準任務上,開發者也對學習到的節點嵌入進行了評估。下面展示了每個模型以不同百分比訓練數據在 micro-f1 和 macro-f1 兩種衡量指標下的值。
Youtube 數據集上的節點嵌入評估
對於大規模數據集的測試結果如下所示。其中,node2vec 模型因內存不足而無法成功運行,因為它需要超過 200 GiB 的內存來為二階隨機遊走構建別名表。
Flickr 大規模數據集上的測試結果
Friendster-small 大規模數據集上的測試結果
知識圖譜嵌入
對於知識圖嵌入,開發者在 4 個標準數據集上對 TransE,DistMult,ComplEx 和 RotatE 進行了基準測試。RotatE 在這些數據集上的訓練時間和資源如下圖所示。
知識圖譜嵌入任務在 4 個標準數據集上測試結果
為了評估知識圖譜嵌入,開發者還在鏈路預測任務上進行了測試,並在測試集上報告每個模型的結果,其中排名指標是根基於過濾結果計算而得。
知識圖譜嵌入任務在 FB15k 數據集上評估結果
知識圖譜嵌入任務在 FB15k-237 數據集上評估結果
知識圖譜嵌入任務在 WN18 數據集上評估結果
圖形&高維數據可視化
開發者在兩個主流的圖像數據集上評估了高維數據可視化的對比結果。LargeVis 所需的訓練時間和資源如下表所示。請注意,超過 95%的 GPU 內存佔用來自 KNN Graph 的構建,並且可以在必要時減慢速度進行平衡。
高維數據可視化任務在數據集上測試結果
對於 ImageNet,因為它包含 1000 個類,所以開發者根據它們在 WordNet 中的層次結構來可視化類。下面的動畫演示了如何在層次結構中遍歷 English Setter 類。
在層次結構中遍歷 English Setter 類演示
與類似工作的比較
與 GraphVite 相似的系統是 PyTorch-BigGraph,該系統旨在加速大規模知識圖嵌入數據。下圖是在相同的超參數設置下,對 FB15K 上兩個庫中實現的模型進行的 Apple-to-Apple 比較。
GraphVite 與 PyTorch-BigGraph系統速度對比
更多 GraphVite 信息:
https://graphvite.io/
GitHub 開源地址:
https://github.com/DeepGraphLearning/graphvite
雷鋒網 AI 開發者
※論道AI安全與倫理:我們能達到電影里的智能嗎?最可能實現的AI場景是什麼?如何看待AI自主性?
※對話高新興科技吳冬升:巨頭扎堆,車路協同玩家如何後發制人?
TAG:雷鋒網 |