1分鐘訓練百萬級別節點嵌入,Mila開源圖嵌入訓練系統GraphVite

2020-12-16 機器之心Pro

機器之心發布

作者:Zhaocheng Zhu等

在本文中,來自加拿大 Mila 研究所唐建課題組的研究人員提出了一種圖上高性能的嵌入訓練系統——GraphVite,訓練百萬級別的節點嵌入只需 1 分鐘左右,比現有實現快 50 倍以上。該系統最大可處理二十億邊的圖,是目前速度最快、規模最大的單機圖嵌入系統。

圖是一種通用、靈活的數據結構,可以用來編碼不同對象之間的關係,並且在現實世界中非常普遍,如社交網絡、引文圖、蛋白質相互作用圖、知識圖譜等,涵蓋了多個應用和領域。最近,由於圖在多個任務中表現出色,越來越多的研究人員開始嘗試學習圖的有效表徵。然而,這是一個頗具挑戰性的問題,因為現實世界中的圖可能非常龐大,並且是異質的。因此,業界和學界的不同任務和應用都迫切需要可擴展的通用圖表徵系統。

為此,加拿大 Mila 研究所唐建課題組的研究人員開發了一個通用、高性能的圖嵌入系統——GraphVite。相較於 TensorFlow、PyTorch 等側重張量計算的機器學習系統,該系統針對大規模圖學習的特性,創新地將圖中的邊集劃分成多個部分,使多 GPU 能以非常小的同步代價進行訓練,並在多 GPU 上取得接近線性的加速比。架構中還將採樣部分移至 CPU 部分,既節省了超大圖的顯存開銷,又充分利用了 CPU 和主存的隨機訪問特性。

相比已有系統或實現,該系統將嵌入訓練速度提升了一至兩個數量級,只需約一分鐘的時間即可完成百萬級別的節點嵌入訓練,比現有實現快 50 倍以上。該系統對大圖上也有非常好的可擴展性,單機即可訓練十億級別的超大規模圖嵌入,是目前速度最快、規模最大的單機圖嵌入系統。目前,該項目已經開源。

論文:https://arxiv.org/pdf/1903.00757.pdf網站:https://graphvite.ioGitHub 項目:https://github.com/DeepGraphLearning/graphvite

GraphVite 的開源版本包含節點嵌入、知識圖譜嵌入和圖結構&高維可視化三個應用的實現:

節點嵌入。目的是學習大規模圖的節點表徵。GraphVite 目前包含一些 SOTA 節點嵌入方法,如 DeepWalk、LINE 和 node2vec,未來還會繼續增加。知識圖譜嵌入。目的是學習實體和關係的表徵,目前支持多種表徵方法,包括 TransE、DisMult、CompEx、SimplE 和 RotatE,之後還會加入更多方法。圖&高維數據可視化。GraphVite 還支持學習節點的二維或三維坐標來實現圖的可視化,還可以泛化到任何高維數據的可視化。這對於可視化深度神經網絡學到的表徵形式特別有用。GraphVite 目前已經實現了最先進的可視化算法之一——LargeVis,未來還會實現更多的可視化算法。

GraphVite 支持的三種應用。

除了驚人的速度,GraphVite 還為研發人員提供了用戶友好的完整應用 pipeline。該系統具有數據集和評估任務等模塊,是一個用於嵌入模型和實驗的自成體系的環境。其標準數據集中包含 30 多個現有模型的基線基準。只需一句指令即可復現這些基準,部署到更大的數據集也很容易,方便為圖表徵學習開發新的模型。

該研究顯著加快了圖嵌入、知識圖譜嵌入和圖結構&高維可視化的訓練速度,將多個標準數據集上的嵌入訓練時間刷新到了 15 分鐘左右,直接促進了圖上嵌入算法的實現與迭代,間接影響了圖表徵學習算法研發的範式。單 GPU 17 分鐘生成完整 ImageNet 數據集特徵空間的可視化,極大地方便了深度學習模型的調試和可視化。相較於同期 FAIR 的 PyTorchBigGraph 系統,單機多卡的設計更有助於學界的普及使用。該系統所支持的超大規模圖訓練將會為工業應用帶來不少機遇。

GraphVite 為什麼那麼快

GraphVite 根據 CPU 和 GPU 各自體系結構的特點,將圖嵌入訓練分為採樣和訓練兩個部分,分別交由 CPU 和 GPU 完成。其中採樣部分使用 CPU 並行在線增強,解決了現有算法中增強後的圖佔用內存過大的問題。訓練部分,系統提出了一種並行的負採樣方法。該方法將頂點的嵌入劃分為若干塊,並將每條邊按其兩端頂點進行分塊。在訓練過程中,多塊 GPU 始終在頂點集不相交的塊上工作。這一設計極大地減小了多 GPU 之間的同步代價,並使參數矩陣超出顯存的大規模嵌入訓練成為可能。此外,GraphVite 還採用協同策略,令多 CPU 和多 GPU 異步工作,從而使訓練速度翻倍。

並行在線增強

節點嵌入方法的第一階段是利用隨機遊動(random walk)來增強原始網絡。由於增強後的網絡通常要比原始網絡大一至兩個量級,因此若原始網絡已經足夠大,則不可能將增強後的網絡導入主存。因此,研究人員提出了並行在線增強,它能夠在線生成增強後的邊樣本,同時又無需顯示地存儲增強後的網絡。

這種方法可視為 LINE 中所用到的增強和邊採樣方法的一種在線擴展。首先,研究人員隨機採樣一個初始節點(depature node),其選擇概率與節點度成正比。然後,他們從初始節點執行隨機遊動操作,同時選擇特定增強距離內的節點對作為邊樣本。這裡要注意的是,同一隨機遊動中生成的邊樣本具有相關性,可能會使訓練效果變差。

受啟發於強化學習中廣泛使用的經驗回放方法,研究人員收集邊樣本到樣本池,並且在轉移樣本池至 GPU 進行嵌入訓練之前對它展開洗牌(shuffle)。當每個線程提前分配至單獨的樣本池時,文中提出的邊採樣方法可以進行並行化處理。

算法 2 展示了並行在線增強的具體過程。

儘管樣本池的洗牌對優化非常重要,但同時也減慢了網絡增強階段的運行速度(參見表 7)。原因在於:一般的洗牌包含大量隨機存儲訪問,無法通過 CPU 高速緩存獲得加速。如果伺服器不只有一個物理 CPU 插座(socket),則速度損失會更加嚴重。為了緩解這個問題,研究人員提出了偽洗牌(pseudo shuffle)方法,該方法以一種更有利於高速緩存的方式對關聯樣本進行洗牌,並顯著提升了系統運行速度。

並行負採樣

在嵌入訓練階段,研究者將訓練任務分解成小的片段,並將它們分配給多個 GPU。子任務的設計必須使用少量共享數據,以最小化 GPU 之間的同步成本。為了弄清如何將模型參數無重疊地分配到多個 GPU,研究者首先引入了一個-gradient exchangeable 的定義。

基於節點嵌入中觀察到的梯度可交換性,研究者提出了一個用於嵌入訓練階段的並行負採樣算法。對於 n 個 GPU,他們將頂點行和語境行分別劃分為 n 個分塊(見圖 2 左上角)。結果得到一個 n × n 的樣本池分塊網格,其中每條邊都屬於其中一個塊。如此一來,只要對每一塊施加迭代數量限制,任何一對不共享行或列的塊都是 gradient exchangeable。相同行或列裡的塊是-gradient exchangeable。

研究者將 episode 定義為並行負採樣中使用的塊級步驟。在每個 episode 中,他們分別向 n 個 GPU 發送 n 個不相交的塊及其對應的定點和語境分塊。接下來,每個 GPU 藉助 ASGD 更新自身的嵌入塊。由於這些塊是梯度可互換的,並且在參數矩陣中不共享任何行,因此多個 GPU 可以在不同步的情況下同時執行 ASGD。

在每個 episode 結尾,研究者從所有 GPU 中收集更新的權重並分配另外 n 個不相交的塊。此處的-gradient exchangeable 由 n 個不相交塊中的樣本總數來控制,研究者將其定義為 eposode size。eposode size 越小,嵌入訓練中的-gradient exchangeable 越好。

然而,較小的 eposode size 也會導致更頻繁的同步。因此,episode size 的大小需要在速度和-gradient exchangeable 之間進行權衡。下圖 2 給出了 4 個分塊的並行負採樣示例。

圖 2:在 4 個 GPU 上的並行負採樣示例。在每個 episode 期間,GPU 從樣本池中獲取正交塊。每個 GPU 利用從自身上下文節點中獲取的負樣本訓練嵌入。同步只需要在 episode 之間進行。

通常來講,節點嵌入方法從所有可能的節點中採樣負邊。然而,如果 GPU 必須通過互相通信才能獲得它們自己的負樣本,那將非常耗費時間。為了避免這一開銷,研究者對負樣本進行了限制,規定其只能從當前 GPU 語境行獲取。儘管這看起來有點問題,但實際效果非常好。

注意,雖然本文中列出的分區數等於 n,但並行負採樣可以很容易地推廣到分區數大於 n 的情況,只需在每個 episode 期間處理 n 的子組中的不相交塊即可。下圖中的算法 3 展示了這一多 GPU 的混合系統。

GPU 和 CPU 的協作策略

上述並行負採樣使得不同的 GPU 可以同時訓練節點嵌入,只需要在 episode 之間進行同步。然而,應該指出的是,GPU 和 CPU 之間也共享樣本池。如果它們在樣本池上同步,那麼只有同一階段的 worker 才能同時訪問樣本池,也就意味著硬體只在一半的時間處於理想狀態。

為了解決這一問題,研究者提出了一種協作策略來減少同步開銷。他們在主內存中分配了兩個樣本池,讓 CPU 和 GPU 始終在不同的樣本池上工作。CPU 首先填充一個樣本池並將其傳送給 GPU。然後,分別在 CPU 和 GPU 上並發執行並行在線增強和並行負採樣。當 CPU 填滿一個新池時,這兩個採樣池進行調換。下圖 1 展示了這一步驟。利用這種協作策略可以降低 CPU 和 GPU 之間的同步成本,同時將系統的速度加倍。

圖 1:本文中的混合系統概覽。灰色和黃色框分別對應網絡增強和嵌入訓練階段。這兩個階段藉助本文提出的協作策略異步執行。

實驗

研究人員利用實驗驗證了 GraphVite 的有效性和效率。他們首先在 Youtube 數據集(節點嵌入文獻中廣泛使用的大型網絡)上對系統進行評估,然後又在三個更大的數據集(Friendster-small、Hyperlink-PLD 和 Friendster)上評估了 GraphVite。

表 3:Youtube 數據集上不同系統的時間結果。預處理時間指的是訓練前的所有開銷,包括網絡輸入和離線網絡增強。需要注意的是,OpenNE 的預處理時間沒有可比性,因為它缺少了網路增強階段。GraphVite 的加速比基於當前最快的系統 LINE 進行計算。

表 4:Youtube 數據集上的節點分類結果。

表 5:更大數據集上的時間結果。研究人員只用 4 個 GPU 評估了 Hyperlink-PLD 和 Friendster 數據集,因為它們的嵌入矩陣無法讀入單個 GPU 的內存。

圖 4:GraphVite 在更大數據集上的性能曲線。對於 Friendster 數據集,研究人員繪製了 LINE 的結果以供參考。其他系統無法在一周內解決以上任何一個數據集。

控制變量研究

為了更全面地了解 GraphVite 的不同組件,研究人員進行了以下幾項控制變量實驗。為了呈現出直觀的比較,他們在標準 Youtube 數據集上對這些實驗進行評估。由於空間限制,研究人員只提供了 2% 標記數據基礎上的性能表現結果。所有的加速比根據 LINE 進行計算。

表 6:GraphVite 主要組件的控制變量。需要注意的是,基線具有與 GraphVite 相同的 GPU 實現效果,並在 CPU 上展開並行邊採樣。

表 7:不同洗牌算法下的性能表現結果和訓練時間。文中提出的偽洗牌(pseudo shuffle)算法在性能和速度之間達到了最佳權衡。

圖 5:不同 episode 大小下 GraphVite 的速度和性能表現。虛線表示未進行並行負採樣的單個 GPU 基線。

圖 6:不同硬體數量下的加速結果。加速幾乎與 CPU 和 GPU 的數量呈線性相關。

表 8:Tesla P100 伺服器和 GTX 1080 伺服器兩種硬體配置下的 GraphVite 訓練時間。

作者信息

這項工作由加拿大 Mila 研究所唐建老師小組的博士一年級學生 Zhaocheng Zhu 擔任一作,Shizhen Xu 和 Meng Qu 也參與了研究。

加拿大 Mila 研究所是由圖靈獎得主 Yoshua Bengio 帶領的深度學習研究所。作為學界最大的機器學習研究機構之一,Mila 專注於深度學習相關的基礎研究,以及學習算法在不同領域的應用。研究所在機器翻譯、物體識別和生成模型等方面有諸多為人熟知的工作,著名的《Deep Learning》一書亦出自 Mila。

唐建老師帶領的研究組是 Mila 活躍的圖學習研究小組,其主要方向包括圖表徵學習和深度學習的基礎研究,涵蓋知識圖譜、藥物發現和推薦系統等不同應用領域。研究組在圖表徵學習領域具有相當的知名度,代表作有 LINE,LargeVis 和 RotatE 等等。

相關焦點

  • 已開源!GraphVite 超高速圖表示學習系統,1 分鐘可學百萬節點
    他表示,在百萬節點的圖上,使用該系統僅需 1 分鐘左右就可以學習節點的表示。該系統的目標是為廣泛的嵌入方法系列提供通用和高性能的框架,這將非常有利於圖學習算法的研究與部署。雷鋒網(公眾號:雷鋒網) AI 開發者將其具體介紹及相關地址編譯如下。
  • 總結|為什麼要進行圖嵌入Graph embedding?
    如果要解決以上的問題,我們首先需要做的是對圖進行表示,graph embedding 是中非常有效的技術。1.什麼是圖嵌入(graph embedding)?圖嵌入是一種將圖數據(通常為高維稠密的矩陣)映射為低微稠密向量的過程,能夠很好地解決圖數據難以高效輸入機器學習算法的問題。圖嵌入需要捕捉到圖的拓撲結構,頂點與頂點的關係,以及其他的信息,如子圖,連邊等。
  • 圖計算黑科技:打開中文詞嵌入訓練實踐新模式
    圖1.鑑於詞袋錶示法存在維度災難、語義鴻溝的問題,Yoshua Bengio等人在[1]中證明使用神經網絡訓練的語言模型可以生成更好的詞向量,並且提出了很多優化訓練的方法。如下圖所示,整個網絡分為兩部分,第一部分是利用詞特徵矩陣C獲得詞的分布式表示(即詞嵌入)。
  • 半小時訓練億級規模知識圖譜,亞馬遜這個 AI 框架要火!
    例如,可以通過節點的嵌入表示來預測兩個節點之間是否有連結(link prediction)。然而,隨著社交網絡、推薦系統等典型圖數據場景的發展,知識圖譜的規模也在不斷地增長。在工業界真實的場景中,技術人員常常需要面對千萬級,甚至是億萬級節點的大規模圖數據。如何快速、高效地在大規模知識圖譜上進行嵌入表示的訓練是當前的一個挑戰。
  • 圖嵌入專題(四):圖嵌入與矩陣分解
    在圖嵌入專題的前三篇文章中,我們分別從圖嵌入算法的整體概況、基於深度學習的圖嵌入算法以及基於skip-gram的圖嵌入算法三個方面進行了介紹。本文從圖嵌入算法與矩陣分解算法的關係出發,對圖嵌入算法進行進一步的介紹。
  • 綜述 | 異質圖嵌入綜述: 方法、技術、應用和資源
    異質圖嵌入(Heterogeneous Graph Embedding, HGE),旨在在低維的空間中學習節點表示,同時保留異質結構和語義用於下遊任務(例如,節點/圖分類,節點聚類,連結預測),在近年來受到了廣泛的關注。在綜述中,我們對異質圖嵌入的方法和技術的最新進展進行了全面回顧,探索了異質圖嵌入的問題和挑戰,並預測了該領域的未來研究方向。
  • 10分鐘了解圖嵌入
    這種快速反應甚至可能沒有經過毛克利新大腦皮層的高階邏輯處理,我們已經在大腦中進化出了數據結構,通過在1/10秒內分析來自眼睛視網膜的數以百萬計的輸入信息來促進我們的生存。現在你可能會問,這和圖的嵌入有什麼關係?圖嵌入是一種小型的數據結構,可以幫助我們的EKG中實時的相似性排序功能。它們的工作原理就像毛克利大腦中的分類部分。
  • 從近期兩篇論文看大規模商品圖嵌入
    相比於傳統的只有一種邊或只有一種節點的圖,Attributed Multiplex Heterogeneous Network(AMHEN)中包含多種節點,多種邊,每種節點都有不同的屬性,各種類型的圖有代表性的嵌入方法如下表所示。每對節點之間可能有多種類型的邊,需要對每種關係都學習不同的表示。
  • 異構圖注意力網絡 Heterogeneous Graph Attention Network
    但是,在包含不同節點和邊的HIN領域,GNN做的還不夠完善。論文提出了一種新的異構圖神經網絡分層注意力機制,涉及到節點級別和語義級別。節點級別的Attention主要學習節點及其臨近節點間的權重,語義級別的Attention是來學習基於不同meta-path的權重。
  • 17篇論文詳解圖的機器學習趨勢 | NeurIPS 2019
    在嵌入向量的使用場景裡,可以把龐加萊球面看作一個連續的樹結構,樹的根節點在球的中心,枝幹和葉子更靠近球面一些(如上面的動圖)。這樣一來,雙曲嵌入表徵層級結構的能力就要比歐氏空間嵌入的能力高得多,同時需要的維數卻更少。不過,雙曲網絡的訓練和優化依然是相當難的。
  • 17篇論文,詳解圖的機器學習趨勢|NeurIPS 2019
    在嵌入向量的使用場景裡,可以把龐加萊球面看作一個連續的樹結構,樹的根節點在球的中心,枝幹和葉子更靠近球面一些(如上面的動圖)。這樣一來,雙曲嵌入表徵層級結構的能力就要比歐氏空間嵌入的能力高得多,同時需要的維數卻更少。不過,雙曲網絡的訓練和優化依然是相當難的。
  • 【知識圖譜】知識圖譜嵌入模型簡介
    由於在表達人類先驗知識上具有優良的特性,知識圖譜近年來在自然語言處理、問答系統、推薦系統等諸多領域取得了廣泛且成功的應用。    表1:知識圖譜補全數據集  知識圖譜嵌入模型知識圖譜嵌入模型的設計通常需要三步:1)定義實體和關係的表示形式;2)定義衡量三元組合理性的打分函數;3)訓練學習實體和關係的嵌入表示
  • 從圖嵌入到圖卷積:深度圖神經網絡的技術發展史
    為了便於理解,後續將圖神經網絡簡單劃分為兩類進行介紹:圖嵌入方向、圖卷積網絡方向。圖嵌入神經網絡方面,簡要介紹了以DeepWalk為代表的,優化圖頂點間Embedding相似度的一類模型,而圖卷積神經網絡方向則更多介紹其基礎理論的推導過程。
  • ACL2020|基於正交關係轉換與圖上下文建模的知識圖嵌入
    1研究背景知識圖譜是一種多關係圖,節點表示實體,邊表示實體之間的關係。知識圖譜嵌入表示了連續向量空間中的實體和關係,可以用於連結預測等方面,大致可以分為基於距離和語義匹配模型兩類。以上模型取得了很大的進展,但是對於1-N ,N-1和N-N的複雜連結的預測仍然具有挑戰性,如下圖為一個N-N的示例,相關的邊用綠色表示。並且,上述知識圖嵌入方法主要針對單個三元組的建模,但是它們忽略了知識圖譜的結構,沒有充分利用鄰近節點和邊的上下文,由此有研究者引入了圖神經網絡對知識圖譜結構進行學習,該研究團隊提出了一種可以直接集成圖的上下文來計算距離評分函數的方法。
  • 圖模型+Bert香不香?完全基於注意力機制的圖表徵學習模型Graph-Bert
    通過將原始圖分解為以每個節點為中心的多個子圖來學習每個節點的表徵信息,這不僅能解決圖模型的預訓練問題,還能通過並行處理還提高效率。模型結構介紹Graph-Bert 主要由四部分組成:1、將原始圖分解為無邊子圖(不考慮子圖中的邊信息)2、節點輸入特徵的嵌入表示3、基於圖transformer的節點表徵學習編碼器
  • 17篇論文,詳解圖的機器學習趨勢 | NeurIPS 2019
    相比之下,雙曲算法中用到的是龐加萊(Poincare)球面和雙曲空間。在嵌入向量的使用場景裡,可以把龐加萊球面看作一個連續的樹結構,樹的根節點在球的中心,枝幹和葉子更靠近球面一些(如上面的動圖)。這樣一來,雙曲嵌入表徵層級結構的能力就要比歐氏空間嵌入的能力高得多,同時需要的維數卻更少。不過,雙曲網絡的訓練和優化依然是相當難的。
  • 深度學習——你需要了解的八大開源框架
    TensorFlow是一款開源的數學計算軟體,使用數據流圖(Data Flow Graph)的形式進行計算。圖Data Flow Graph: 使用有向圖的節點和邊共同描述數學計算。graph中的nodes代表數學操作,也可以表示數據輸入輸出的端點。邊表示節點之間的關係,傳遞操作之間互相使用的多位數組(tensors),tensor在graph中流動——這也就是TensorFlow名字的由來。一旦節點相連的邊傳來了數據流,節點就被分配到計算設備上異步的(節點間)、並行的(節點內)執行。
  • 假期薦讀:一文看盡2019-2020各大頂會 Graph Neural Network 論文(附連結)
    Cluster-GCN,高效解決工業界訓練大規模深層圖卷積神經網絡問題,性能大幅提升基礎上依靠可訓練更深層網絡優勢達到SOTA效果,並開源了原始碼。他們提出的框架GraphRNA由兩個主要組件組成:一種協作遊走機制—AttriWalk,以及一種為隨機遊走量身定製的深度嵌入體系結構,稱為圖遞歸網絡(graph recurrent networks ,GRN)。AttriWalk使我們能夠將突出的深度網絡嵌入模型-圖卷積網絡推向一個更有效的架構——GRN。GRN賦予節點表示以與原始attributed網絡中的節點交互相同的方式進行交互。
  • 使用Facebook的Pytorch的BigGraph從知識圖譜中提取知識
    它能夠提高重建圖的能力,其中刪除了一定比率的邊。本文將進一步討論鏈路預測評估過程。知識圖譜下面我們將討論PYTORCH-BIGGRAPH:一個大規模的圖嵌入系統論文(進一步命名為PBG)以及相關論文。知識圖譜是一種特殊的圖形類型,它包含已知的實體和不同類型的邊。它代表結構知識。
  • 一次搞定多種語言:Facebook展示全新多語言嵌入系統
    | 全文共2838字,建議閱讀時3分鐘 | 本文經機器之心(微信公眾號:almosthuman2014)授權轉載,禁止二次轉載選自code.facebook作者:Ves Stoyanov、Necip Fazil Ayan傳統的自然語言處理系統只能對應於特定語言,如果想要讓其應用支持多種語言,則需要從頭開始構建相應數量的新系統