比DGL快14倍:PyTorch圖神經網絡庫PyG上線了

2020-12-17 機器之心Pro

機器之心報導

參與:路、王淑婷、李澤南

graph_nets和 DGL 已經上線。但看起來這些工具還有很多可以改進的空間。近日,來自德國多特蒙德工業大學的研究者們提出了 PyTorch Geometric,該項目一經上線便在 GitHub 上獲得 1500 多個 star,並得到了 Yann LeCun 的點讚。現在,創建新的 GNN 層更加容易了。

項目連結:https://github.com/rusty1s/pytorch_geometric

LeCun評價:一個快速且漂亮的幾何深度學習庫(適用於圖神經網絡與其他不規則結構)PyTorch Geometric 主要是現有模型快速重新實現的集合(具有定製化的稀疏操作),如果你想嘗試一下特定的已發布模型,它會是一個很不錯的選擇;如果想實現更為複雜的結構,其自定義稀疏/分散操作也非常方便。PyTorch Geometric是基於PyTorch構建的深度學習庫,用於處理不規則結構化輸入數據(如圖、點雲、流形)。除了一般的圖形數據結構和處理方法外,它還包含從關係學習到3D數據處理等領域中最新發布的多種方法。通過利用稀疏 GPU 加速、提供專用的 CUDA 內核以及為不同大小的輸入樣本引入高效的小批量處理,PyTorch Geometric 實現了很高的數據吞吐量。PyTorch Geometric(PyG)庫包含易用的小批量加載器(mini-batch loader)、多GPU支持、大量常見基準數據集和有用的變換,適用於任意圖像、三維網格(3D mesh)和點雲。其作者Matthias Fey 和 Jan E. Lenssen 來自德國多特蒙德工業大學,他們通過實驗證明了該庫已實現方法在圖分類、點雲分類、半監督節點分類等任務上的性能。此外,PyG 速度奇快,大大超過其它深度圖神經網絡庫,如 DGL。

簡單易用

PyTorch Geometric大大簡化了實現圖卷積網絡的過程。比如,它可以用以下幾行代碼實現一個層(如edge convolution layer):

速度快

PyTorch Geometric 速度非常快。下圖展示了這一工具和其它圖神經網絡庫的訓練速度對比情況:

最高比 DGL 快 14 倍!

已實現方法多

PyTorch Geometric 目前已實現以下方法,所有實現方法均支持 CPU 和 GPU 計算:

PyG 概覽

圖神經網絡(GNN)最近成為在圖、點雲和流形上進行表徵學習的強大方法。與規則域中常用的卷積層和池化層概念類似,GNN通過傳遞、變換和聚合信息來 (層級化地)提取局部嵌入。但是,實現GNN並不容易,因為它需要在不同大小的高度稀疏與不規則數據上實現較高的GPU吞吐量。PyTorch Geometric (PyG) 是基於Pytorch構建的幾何深度學習擴展庫。它可以利用專門的CUDA內核實現高性能。在簡單的消息傳遞API之後,它將大多數近期提出的卷積層和池化層捆綁成一個統一的框架。所有的實現方法都支持 CPU 和 GPU 計算,並遵循不變的數據流範式,這種範式可以隨著時間的推移動態改變圖結構。PyG已在MIT許可證下開源,它具備完備的文檔,且提供了附帶教程和示例。PyG 用節點特徵矩陣 X ∈ ^(N×F) 和稀疏鄰接元組(I,E)來表示圖 G = (X, (I, E)),其中 I ∈ ^(2×E) 以坐標(COO)格式編碼邊索引,E ∈ ^(E×D)(可選地)保留D維邊特徵。所有面向用戶的API(如數據加載路徑、多GPU支持、數據增強或模型實例化)都受到了PyTorch的極大啟發,以讓用戶儘可能地熟悉它們。鄰域聚合(neighborhood aggregation)。將卷積運算泛化至不規則域通常表示為鄰域聚合或消息傳遞方案(Gilmer et al., 2017)

其中 表示可微置換不變函數(permutation invariant function),如求和、均值或最大值,r 和

表示可微函數 ,如MLP。實踐中,r 和

的逐元素計算可以通過收集和散射節點特徵、利用廣播來實現,如圖1所示。儘管該方案處理的是不規則結構化輸入,但它依然可以通過GPU實現大幅加速。

圖 1:GNN 層計算方法。利用基於邊索引 I 的收集和散射方法,從而在節點並行空間(parallel space)和邊並行空間之間進行交替。 PyG為用戶提供通用的MessagePassing接口,以便對新的研究想法進行快速乾淨的原型製作。此外,幾乎所有近期提出的鄰域聚合函數都適用於此接口,其中包括PyG已經集成的方法。全局池化。PyG提供多種readout函數(如global add、mean 或 max pooling),從而支持圖級別輸出,而非節點級別輸出。PyG還提供更加複雜的方法,如 set-to-set (Vinyals et al., 2016)、sort pooling (Zhang et al., 2018) 和全局軟注意力層 (Li et al., 2016)。層級池化(Hierarchical Pooling)。為進一步提取層級信息和使用更深層的GNN模型,需要以空間或數據依賴的方式使用多種池化方法。PyG目前提供Graclus、voxel grid pooling、迭代最遠點採樣算法(iterative farthest point sampling algorithm)的實現示例,以及可微池化機制(如DiffPool和top_k pooling)。小批量處理。PyG 可自動創建單個(稀疏)分塊對角鄰接矩陣(block-diagonal adjacency matrix),並在節點維度中將特徵矩陣級聯起來,從而支持對多個(不同大小)圖實例的小批量處理。正因如此,PyG可在不經修改的情況下應用鄰域聚合方法,因為不相連的圖之間不會出現信息交流。此外,自動生成的 assignment 向量可確保節點級信息不會跨圖聚合,比如當執行全局聚合運算時。處理數據集。PyG提供統一的數據格式和易用的接口,方便使用者創建和處理數據集,大型數據集和訓練期間可保存在內存中的數據集皆可適用。要想創建新數據集,用戶只需讀取/下載數據,並轉換為PyG數據格式即可。此外,用戶可以使用變換(transform,即訪問單獨的多個圖並對其進行變換)方法來修改數據集,比如數據增強、使用合成結構化圖屬性來增強節點特徵等,從而基於點雲自動生成圖,或者從網格中自動採樣點雲。PyG目前支持大量常見基準數據集,它們均可在第一次初始化時自動下載和處理。具體來講,PyG提供60多個 graph kernel 基準數據集 (Kersting et al., 2016),如 PROTEINS 或 IMDB-BINARY、引用網絡數據集 Cora、CiteSeer、PubMed 和 Cora-Full (Sen et al., 2008; Bojchevski & Günnemann, 2018)、Coauthor CS/Physics 和 Amazon Computers/Photo 數據集 (Shchur et al. (2018)、分子數據集 QM7b (Montavon et al., 2013) 和 QM9 (Ramakrishnan et al., 2014),以及Hamilton 等人 (2017) 創建的蛋白質相互作用圖。此外,PyG還提供嵌入式數據集,如MNIST超像素 (Monti et al., 2017)、FAUST (Bogo et al., 2014)、ModelNet10/40 (Wu et al., 2015)、ShapeNet (Chang et al., 2015)、COMA (Ranjan et al., 2018),以及 PCPNet 數據集 (Guerrero et al., 2018)。

實證評估

半監督節點分類

表 1:多個模型使用固定分割和隨機分割的半監督節點分類結果。圖分類

表 2:圖分類。點雲分類

表3:點雲分類。

看起來,圖神經網絡框架的競爭正愈發激烈起來,PyTorch Geometric 也引起了 DGL 創作者的注意,來自 AWS 上海 AI 研究院的 Ye Zihao 對此評論道:「目前 DGL 的速度比 PyG 慢,這是因為它 PyTorch spmm 的後端速度較慢(相比於 PyG 中的收集+散射)。在 DGL 的下一個版本(0.2)中,我們將報告新的模型訓練速度數據,並提供基準測試腳本。我們還將提供定製內核支持以加速 GAT,敬請期待!」

論文連結:https://arxiv.org/abs/1903.02428

相關焦點

  • NYU、AWS聯合推出:全新圖神經網絡框架DGL正式發布
    早在 2014 年,Kai Sheng Tai 等人就研究了能在文本語法樹上訓練的樹神經網絡模型 TreeLSTM。這個工作在一定程度上衝擊了大家用 RNN 處理文本的範式,並且用樹型結構看待文本數據開創了很多新的研究可能。從鍊表到樹,從樹到圖:近年來,對於圖神經網絡(Graph Neural Network)的研究熱潮使得神經網絡的應用領域大大增加。
  • DGL | 基於深度學習框架DGL的分子圖初探
    紐約大學、紐約大學上海分校、AWS上海研究院以及AWS MXNet Science Team共同開源了一個面向圖神經網絡及圖機器學習的全新框架,
  • 一文讀懂圖神經網絡
    圖神經網絡介紹什麼是圖神經網絡圖神經網絡(Graph Neural Networks, GNNs)是基於圖結構的深度學習方法,近期被廣泛應用到各類圖像、自然語言處理等任務上。圖為什麼要使用圖神經網絡圖神經網絡有靈活的結構和更新方式,可以很好的表達一些數據本身的結構特性,除了一些自帶圖結構的數據集(如Cora,Citeseer等)以外,圖神經網絡目前也被應用在更多的任務上,比如文本摘要,文本分類和序列標註任務等,目前圖神經網絡以及其變種在很多任務上都取得了目前最好的結果
  • CS224w 圖神經網絡(Graph Neural Networks)
    關於網絡分析的理論與作業內容這裡就不再贅述,感興趣的煉丹愛好者們可以根據視頻內容進行進一步研究,這裡我們只結合Assignment 2對圖神經網絡的理論與實踐進行詳細介紹。那麼,讓我們愉悅地開始研究GNN吧!2.
  • 專欄 | 手把手教你用DGL框架進行批量圖分類
    隨著近來學界對於圖神經網絡的熱情持續高漲,出現了一批用圖神經網絡做圖分類的工作。相較之下,打包圖面臨兩個挑戰:DGL 提供了名為 dgl.batch 的接口來實現打包一個圖批量的功能。其核心思路非常簡單。將 n 張小圖打包在一起的操作可以看成是生成一張含 n 個不相連小圖的大圖。下圖的可視化從直覺上解釋了 dgl.batch 的功能。
  • 加入巨頭競爭之列,索尼開源可在Windows中運行的神經網絡庫NNabla
    機器之心編譯參與:蔣思源、李澤南索尼昨天宣布開源了自己的神經網絡庫 NNabla,其中包含用於深度學習系統的 Python API 與用於嵌入式設備的 C++ API。彭博社也表示索尼正在加入谷歌、Facebook 和亞馬遜等巨頭的人工智慧開發競爭。
  • 專欄| 手把手教你用DGL框架進行批量圖分類
    隨著近來學界對於圖神經網絡的熱情持續高漲,出現了一批用圖神經網絡做圖分類的工作。在 DGL 裡我們實現了一個迷你圖分類數據集(MiniGCDataset)。它由以下 8 類圖結構數據組成。每一類圖包含同樣數量的隨機樣本。任務目標是訓練圖神經網絡模型對這些樣本進行分類。
  • PyTorch 1.0 正式版發布了!
    GitHub 地址:https://github.com/pytorch/pytorch/releases/tag/v1.0.0PyTorch 1.0 同時面向產品化 AI 和突破性研究的發展如今,PyTorch 已經成為 GitHub 上增長第二快的開源項目,在過去的 12 個月裡貢獻者增加了 1.8 倍。為對社區做出回饋,Facebook 將繼續提供簡單易學的教育課程,通過這些課程幫助開發者掌握用 PyTorch 創建、訓練及部署機器學習模型的技巧。
  • PyTorch稱霸頂會:CVPR論文佔比是TensorFlow 4 倍
    PyTorch 和 TensorFlow 各自使用數佔接收論文總數的比例如下圖所示。可以看到 PyTorch 佔比 20.52%,相較於 ICLR 2018 的 6.82%、ICLR 2019 的 14.14% 出現了持續上升;與此同時,TensorFlow 佔比僅為 8.88%,相較於 ICLR 2018 的 17.51%、ICLR 2019 的 11.16% 出現了持續下降。
  • 《PyTorch中文手冊》來了
    PyTorch 有許多優勢,如採用 Python 語言、動態圖機制、網絡構建靈活以及擁有強大的社群等。由於其靈活、動態的編程環境和用戶友好的界面,PyTorch 是快速實驗的理想選擇。PyTorch 現在是 GitHub 上增長速度第二快的開源項目,在過去的 12 個月裡,貢獻者增加了 2.8 倍。而且,去年 12 月在 NeurIPS 大會上,PyTorch 1.0 穩定版終於發布。
  • Facebook開源 PyTorch版 fairseq,準確性最高、速度比循環神經網絡...
    雷鋒網(公眾號:雷鋒網) AI科技評論按:今年5月,Facebook AI研究院(FAIR)發表了他們的研究成果fairseq,在fairseq中,他們使用了一種新型的卷積神經網絡來做語言翻譯,比循環神經網絡的速度快了
  • 初學AI神經網絡應該選擇Keras或是Pytorch框架?
    keras是神經網絡的一個模型計算框架,嚴格來說不是神經網絡框架。本身沒有重量級計算,它使用其他AI框架作為計算後臺,傻瓜式的使用。它的計算後臺還支持 Theano、CNTK(微軟的一個AI計算後臺)等,也就是說keras是多個計算後臺的門面。官方設計哲學為Simple. Flexible.
  • PyTorch & PyTorch Geometric圖神經網絡(GNN)實戰
    【導讀】在這篇博文中,我們將使用PyTorch和PyTorch Geometric(PyG),構建圖形神經網絡框架。
  • DGL-LifeSci:面向化學和生物領域的 GNN 算法庫
    基於深度圖學習框架DGL環境準備PyTorch:深度學習框架DGL:基於PyTorch的庫,支持深度學習以處理圖形RDKit:用於構建分子圖並從字符串表示形式繪製結構式DGL-LifeSci:面向化學和生物領域的 GNN 算法庫 DGL安裝conda
  • pytorch專題前言 | 為什麼要學習pytorch?
    2.為什麼要學習pytorch呢?3.學習了pytorch我怎麼應用呢?4.按照什麼順序去學習pytorch呢?5.網上那麼多資料如何選擇呢?現在開始逐一的對以上問題提出自己的看法,可能想的不夠周全,歡迎討論區一起探討!1.生物學科的朋友需要學編程麼?需要!
  • PyTorch進階之路(一):張量與梯度
    Python的學習算法與機器學習算法報導  來源:機器之心作者:Aakash N S編輯:Cookies PyTorch 是 Facebook 開發和維護的一個開源的神經網絡庫完整系列教程包括:PyTorch 基礎:張量&梯度(本文)線性回歸 & 梯度下降:https://medium.com/jovian-io/linear-regression-with-pytorch-3dde91d60b50用 Logistic 回歸進行分類:https://medium.com/jovian-io/image-classification-using-logistic-regression-in-pytorch-ebb96cc9eb79
  • 【乾貨】基於pytorch的CNN、LSTM神經網絡模型調參小結
    這是最近兩個月來的一個小總結,實現的demo已經上傳github,裡面包含了CNN、LSTM、BiLSTM、GRU以及CNN與LSTM、BiLSTM的結合還有多層多通道CNN、LSTM、BiLSTM等多個神經網絡模型的的實現
  • 《PyTorch中文手冊》開源!附資源下載連結!
    PyTorch 現在是 GitHub 上增長速度第二快的開源項目,在過去的 12 個月裡,貢獻者增加了 2.8 倍。而且,去年 12 月在 NeurIPS 大會上,PyTorch 1.0 穩定版終於發布。PyTorch 1.0 增加了一系列強大的新功能,大有趕超深度學習框架老大哥 TensorFlow 之勢。
  • 實戰|在PyTorch框架下使用PyG和networkx對Graph進行可視化
    其中Pytorch geometric的地址為:https://pytorch-geometric.readthedocs.io/en/latest/方法一根據networkx的文檔:https://networkx.github.io/documentation/networkx-1.10/reference/generated/networkx.drawing.nx_pylab.draw_networkx.html
  • 從TensorFlow到PyTorch:九大深度學習框架哪款最適合你?
    TensorFlow地址:https://www.tensorflow.org/TensorFlow 最開始是由谷歌一個稱之為 DistBelief V2 的庫發展而來,它是一個公司內部的深度神經網絡庫,隸屬於谷歌大腦項目。有一些人認為 TensorFlow 是由 Theano 徹底重構而來。