有效處理大規模圖對于促進人工智能的研究和應用至關重要,但特別是在工業應用中的圖,包含數十億個節點和數萬億個邊,這超出了現有嵌入系統的能力。
因此,Facebook 人工智能團隊已經創建并正在開放源代碼 PyTorch Biggraph(PBG)。
PBG 是一個用于學習大規模圖嵌入的分布式系統,特別適用于處理具有多達數十億實體和數萬億條邊的大型網絡交互圖。它在 2019 年的 SysML 會議上發表的大規模圖嵌入框架論文中提出。
PBG 比常用的嵌入軟件更快,并在標準基準上生成與最先進模型質量相當的嵌入。有了這個新工具,任何人都可以用一臺機器或多臺機器并行地讀取一個大圖并快速生成高質量的嵌入。
PBG 對傳統的多關系嵌入系統進行了多次修改,使其能夠擴展到具有數十億個實體和數萬億邊的圖。PBG 使用圖分區來在單個機器或分布式環境中訓練任意量級的嵌入。研究人員在通用基準測試中展示了與現有嵌入系統相當的性能,同時允許在多臺機器上擴展到任意大的圖和并行化。他們在幾個大型社會網絡圖以及完整的 Freebase 數據集上訓練和評估嵌入,其中包含超過 1 億個實體和 20 億條邊。
具體而言,PBG 通過攝取圖的邊列表來訓練輸入圖,每條邊由其源實體和目標實體以及可能的關系類型進行標識。它為每個實體輸出一個特征向量(嵌入),試圖將相鄰實體放置在向量空間中彼此靠近,同時將未連接的實體分開。因此,具有相似鄰近分布的實體最終將位于附近位置。
可以使用在訓練中學習的參數(如果有的話),用不同的方法配置每種關系類型來計算這個“接近度得分(proximity score)”,這允許在多個關系類型之間共享相同的基礎實體嵌入。
其模型的通用性和可擴展性使得 PBG 能夠從嵌入文獻的知識圖譜中訓練出多種模型,包括 TransE、RESCAL、DistMult 和 ComplEx。
PBG 的設計考慮到了規?;?,并通過以下方式實現:
圖分區(graph partitioning),這樣模型就不必完全加載到內存中;
每臺機器上的多線程計算;
跨多臺機器的分布式執行(可選),所有機器同時在圖的不相交部分上運行;
批量負采樣(batched negative sampling),允許處理的數據為> 100 萬邊/秒/機器。
作為一個示例,Facebook 還發布了包含 5000 萬維基百科概念的 Wikidata 圖的首次嵌入版本,該圖用于 AI 研究社區中使用的結構化數據。這些嵌入是用 PBG 創建的,可以幫助其他研究人員在維基數據概念上執行機器學習任務。
需要注意的是,PBG不適用于小規模圖上具有奇怪模型的模型探索,例如圖網絡、深度網絡等。
安裝步驟及更多信息,請參考 GitHub 相關介紹和 PyTorch-BigGraph 文檔:
https://github.com/facebookresearch/PyTorch-BigGraph
https://torchbiggraph.readthedocs.io/en/latest/
建立數十億個節點的嵌入圖
圖是表示多種數據類型的核心工具。它們可以用來對相關實體的網絡進行編碼,例如關于世界的事實。例如,像 Freebase 這樣的知識庫具有不同的實體(如“Stan Lee”和“New York City”),作為描述它們之間關系的節點和邊(例如“出生于”)。
圖嵌入方法通過優化目標來學習圖中每個節點的向量表示,即具有邊的節點對的嵌入比沒有共享邊的節點對更接近,這類似于 word2vec 等詞嵌入在文本上的訓練方式。
圖嵌入是一種無監督學習,因為它們只使用圖結構學習節點的表示,而不使用基于任務的節點“標簽”。與文本嵌入一樣,這些表示可用于各種下游任務。
超大規模圖形嵌入
當前,超大規模圖形有數十億個節點和數萬億條邊,而標準的圖嵌入方法不能很好地擴展到對超大規模圖的操作,這主要有兩大挑戰:首先,嵌入系統必須足夠快,以便進行實際的研究和生產使用。例如,利用現有的方法,訓練一個具有萬億條邊的圖可能需要幾周甚至幾年的時間。
另外,存儲也是一大挑戰。例如,嵌入每個節點具有 128 個浮點參數的 20 億個節點,這需要 1TB 的數據,超過了商用服務器的內存容量。
PBG 使用圖的塊分區來克服圖嵌入的內存限制。節點被隨機劃分為 P 分區,這些分區的大小可以使內存容納兩個分區。然后,根據邊的源節點和目標節點,將邊劃分為 P2 簇(Buckets)。
大規模圖的 PBG 分區方案。節點被劃分為 P 分區,分區大小適合內存。邊根據其源節點和目標節點的分區劃分為簇。在分布式模式下,可以并行執行具有非重疊分區的多個存儲簇(如藍色方塊所示)。
節點和邊進行分區之后,就可以一次在一個簇上執行訓練。bucket(i,j)的訓練只需要將節點分區 i 和 j 嵌入存儲在內存中。
PBG 提供了兩種方法來訓練分區圖數據的嵌入。在單機訓練中,嵌入件和邊在不使用時被交換到磁盤上。在分布式訓練中,嵌入分布在多臺機器的內存中。
分布式訓練
PBG 使用 PyTorch 并行化原語(parallelization primitives)進行分布式訓練。由于一個模型分區一次只能由一臺機器調用,因此一次最多可以在 P/2 機器上訓練嵌入。只有當機器需要切換到新的簇時,模型數據才會進行通信。對于分布式訓練,我們使用經典參數服務器模型,同步表示不同類型邊的共享參數。
APBG 分布式訓練體系結構。我們使用鎖服務器協調機器在不相交的存儲簇上進行訓練。分區模型參數通過分片分區服務器交換,共享參數通過分片參數服務器異步更新。
負采樣
圖嵌入和文本嵌入相似,構造隨機的“假”邊與真正的邊一起作為負訓練樣例。這大大加快了訓練速度,因為每個新樣本只需更新一小部分權重。通常,這些消極的例子是由隨機源節點或目標節點的“腐蝕”真邊構成的。然而,我們發現對標準負抽樣的一些修改對于大規模圖是必要的。
首先,我們注意到在傳統的圖嵌入方法中,幾乎所有的訓練時間都花在了負邊上。我們利用函數形式的線性特點,重用一批 N 個隨機節點,生成 N 個訓練邊的損壞負樣本。與其他嵌入方法相比,此技術允許我們以很小的計算成本在每個真邊上訓練許多負示例。
我們還發現,為了生成在各種下游任務中有用的嵌入,一種有效的方法是破壞邊,將 50% 的節點和另外 50% 的節點(根據其邊數進行采樣)混合在一起。
最后,我們引入了“實體類型”的概念,它限制了如何使用節點構造負樣本。例如,考慮一個包含歌曲、藝術家和流派節點的圖,并假設藝術家和歌曲之間存在“創作”關系。如果我們為這個關系統一抽樣源實體,我們將絕大多數抽樣歌曲(因為歌曲比藝術家多),但這些不是有效的潛在邊(因為歌曲只能由藝術家制作)。PBG 可以基于關系的實體類型限制構造哪些負樣本。
評估 PyTorch-BigGraph
為了評估 PBG 的性能,我們使用了公開的 Freebase 知識圖,它包含超過 1.2 億個節點和 27 億條邊。我們還使用了一個較小的 Freebase 圖子集(FB15K),它包含 15000 個節點和 600000 條邊,通常用作多關系嵌入方法的基準。
T-SNE 繪制的由 PBG 訓練的 Freebase 知識圖嵌入。國家、數字和科學期刊等實體也有類似的嵌入。
可以看出,對于 FB15k 數據集,PBG 和最新的嵌入方法性能相當。
圖:FB15K 數據集的鏈路預測任務上嵌入方法的性能。PBG 使用其模型來匹配 transe 和復雜嵌入方法的性能。我們測量了 MRR,并在 FB15K 測試集上對鏈接預測進行 hit@10統計。Lacroix 等人使用非常大的嵌入維數實現更高的 MRR,我們可以在 PBG 中采用同樣的方法,但這里暫不涉及。
下面,我們使用 PBG 對完整的 Freebase 圖訓練嵌入?,F代服務器可以容納這個規模的數據集 但 PGB 分區和分布式執行既節約了內存,也縮短了訓練時間。我們發布了 Wikidata 的首次嵌入,這是一個相似數據中更新的知識圖。
我們還評估了幾個公開的社交圖數據集的 PBG 嵌入,發現 PBG 優于其他競爭方法,并且分區和分布式執行減少了內存使用和培訓時間。對于知識圖、分區或分布式執行使得訓練對超參數和建模選擇更加敏感。然而對于社交圖來說,嵌入質量似乎對分區和并行化選擇并不敏感。
利用分布式訓練的優勢進行嵌入
PBG 允許 AI 社區為大規模圖(包括知識圖譜)以及其他如股票交易圖、在線內容圖和生物數據圖訓練嵌入,而無需專門的計算資源(如 GPU 或大量內存)。我們還希望 PBG 將成為小型公司和機構的有用工具,他們可能擁有大型圖數據集,但沒有將這些數據應用到其 ML 應用程序的工具。
雖然我們在 Freebase 等數據集上演示了 PBG,但 PBG 真正的設計意圖是處理比此圖大 10~100 倍的圖。我們希望這能鼓勵實踐者發布和試驗更大的數據集。計算機視覺(通過對標簽的 Deep Learning 來改進圖像識別質量)和自然語言處理(word2vec、BERT、Elmo)的最新突破是對海量數據集進行未知任務預訓練的結果。我們希望通過對大規模圖的無監督學習,最終能夠得到更好的圖結構化數據推理算法。
-
Facebook
+關注
關注
3文章
1429瀏覽量
54788 -
人工智能
+關注
關注
1791文章
47350瀏覽量
238750 -
開源
+關注
關注
3文章
3363瀏覽量
42531 -
pytorch
+關注
關注
2文章
808瀏覽量
13238
原文標題:Facebook開源圖嵌入“神器”:無需GPU,高效處理數十億級實體圖形 | 極客頭條
文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論