ドキュメント|論文|コラブノートブックとビデオチュートリアル|外部リソース| OGBの例
Pyg (Pytorch Geometric)は、Pytorchに基づいて構築されたライブラリで、構造化されたデータに関連する幅広いアプリケーション用にグラフニューラルネットワーク(GNNS)を簡単に書き込み、訓練します。
これは、さまざまな公開された論文から、幾何学的な深い学習としても知られるグラフやその他の不規則な構造の深い学習のためのさまざまな方法で構成されています。さらに、多くの小規模で単一の巨大なグラフ、マルチGPU-サポート、 torch.compileサポート、 DataPipeサポート、多数の一般的なベンチマークデータセット(独自の単純なインターフェイスに基づく)、および3D meshまたはポイントクラウドでの学習のために、多数の一般的なベンチマークデータセット(単純なインターフェイスに基づく)を操作するための使いやすいミニバッチローダーで構成されています。
Slackコミュニティに参加するには、ここをクリックしてください!
- ライブラリのハイライト
- 新しいユーザー向けのクイックツアー
- アーキテクチャの概要
- 実装されたGNNモデル
- インストール
ライブラリのハイライト
機械学習研究者であろうと、機械学習ツールキットの初めてのユーザーであろうと、グラフ構造データの機械学習のためにPYGを試してみる理由をいくつか紹介します。
- 使いやすく統一されたAPI :必要なのは、GNNモデルのトレーニングを開始するための10〜20行のコードだけです(クイックツアーについては次のセクションを参照)。 PygはPytorch-on-the-Rocksです。テンソル中心のAPIを利用し、Design PrinciplesをVanilla Pytorchの近くに保ちます。すでにPytorchに精通している場合、Pygを利用するのは簡単です。
- 包括的で十分に維持されているGNNモデル:最先端のグラフネットワークアーキテクチャのほとんどは、図書館開発者または研究論文の著者によって実装されており、適用する準備ができています。
- 優れた柔軟性:GNNSを使用して独自の研究を実施するために、既存のPYGモデルを簡単に拡張できます。既存のモデルを変更したり、新しいアーキテクチャを作成したりするのは簡単です。これは、APIの渡しが簡単なメッセージと、さまざまなオペレーターとユーティリティ機能のおかげです。
- 大規模な実世界のGNNモデル:挑戦的な現実世界のシナリオにおけるGNNアプリケーションの必要性に焦点を当て、次のようなさまざまなタイプのグラフの学習をサポートします。ノード予測の動的GNNは時間の経過とともに。複数のノードタイプとエッジタイプを備えた不均一なGNN。
新しいユーザー向けのクイックツアー
このクイックツアーでは、わずか数行のコードでGNNモデルの作成とトレーニングのしやすさを強調しています。
独自のGNNモデルをトレーニングします
PYGを最初に垣間見ると、引用グラフで論文を分類するためのGNNのトレーニングを実装します。このために、CORAデータセットをロードし、事前に定義されたGCNConvを使用して単純な2層GCNモデルを作成します。
import torch
from torch import Tensor
from torch_geometric . nn import GCNConv
from torch_geometric . datasets import Planetoid
dataset = Planetoid ( root = '.' , name = 'Cora' )
class GCN ( torch . nn . Module ):
def __init__ ( self , in_channels , hidden_channels , out_channels ):
super (). __init__ ()
self . conv1 = GCNConv ( in_channels , hidden_channels )
self . conv2 = GCNConv ( hidden_channels , out_channels )
def forward ( self , x : Tensor , edge_index : Tensor ) -> Tensor :
# x: Node feature matrix of shape [num_nodes, in_channels]
# edge_index: Graph connectivity matrix of shape [2, num_edges]
x = self . conv1 ( x , edge_index ). relu ()
x = self . conv2 ( x , edge_index )
return x
model = GCN ( dataset . num_features , 16 , dataset . num_classes )標準のPytorchトレーニング手順と同様に、トレーニングループでモデルを最適化できるようになりました。
import torch . nn . functional as F
data = dataset [ 0 ]
optimizer = torch . optim . Adam ( model . parameters (), lr = 0.01 )
for epoch in range ( 200 ):
pred = model ( data . x , data . edge_index )
loss = F . cross_entropy ( pred [ data . train_mask ], data . y [ data . train_mask ])
# Backpropagation
optimizer . zero_grad ()
loss . backward ()
optimizer . step ()最終モデルのパフォーマンスの評価に関する詳細については、対応する例をご覧ください。
独自のGNNレイヤーを作成します
既存のGNNの簡単なアプリケーションに加えて、PYGはカスタムグラフニューラルネットワークを簡単に実装できます(付随するチュートリアルについてはこちらを参照)。たとえば、これは、Wang et alからエッジの畳み込み層を実装するのに必要なすべてです。 :
$$ x_i^{ prime}〜=〜 max_ {j in mathcal {n}(i)}〜 textrm {mlp} _ { theta} left([〜x_i、〜x_j -x_i〜] righ
import torch
from torch import Tensor
from torch . nn import Sequential , Linear , ReLU
from torch_geometric . nn import MessagePassing
class EdgeConv ( MessagePassing ):
def __init__ ( self , in_channels , out_channels ):
super (). __init__ ( aggr = "max" ) # "Max" aggregation.
self . mlp = Sequential (
Linear ( 2 * in_channels , out_channels ),
ReLU (),
Linear ( out_channels , out_channels ),
)
def forward ( self , x : Tensor , edge_index : Tensor ) -> Tensor :
# x: Node feature matrix of shape [num_nodes, in_channels]
# edge_index: Graph connectivity matrix of shape [2, num_edges]
return self . propagate ( edge_index , x = x ) # shape [num_nodes, out_channels]
def message ( self , x_j : Tensor , x_i : Tensor ) -> Tensor :
# x_j: Source node features of shape [num_edges, in_channels]
# x_i: Target node features of shape [num_edges, in_channels]
edge_features = torch . cat ([ x_i , x_j - x_i ], dim = - 1 )
return self . mlp ( edge_features ) # shape [num_edges, out_channels] アーキテクチャの概要
PYGは、ユーザーが低レベルと高レベルの両方でグラフニューラルネットワークソリューションを構築できるようにする多層フレームワークを提供します。次のコンポーネントで構成されています。
- PYGエンジンは、完全な
torch.compileおよびTorchscriptサポートを備えた強力なPytorch Deep Learning Frameworkを利用しているほか、 pyg-libなどのまばらなデータを操作するための効率的なCPU/CUDAライブラリの追加。 - PYGストレージは、データの処理、変換、ロードパイプラインを処理します。大規模なグラフデータセットを処理および処理することができ、異種グラフに効果的なソリューションを提供します。さらに、大規模なグラフでのGNNのトレーニングを可能にするさまざまなサンプリングソリューションを提供します。
- PYG演算子は、グラフニューラルネットワークを実装するための重要な機能をバンドルします。 PYGは、GNNモデルのさまざまな部分に組み合わせて適用できる重要なGNNビルディングブロックをサポートし、GNN設計の豊富な柔軟性を確保します。
- 最後に、PYGはGNNモデルの豊富なセットと、標準グラフベンチマークでGNNモデルを紹介する例を提供します。柔軟性のおかげで、ユーザーは特定のニーズに合わせてカスタムGNNモデルを簡単に構築および変更できます。
実装されたGNNモデル
カテゴリに従って、現在サポートされているPYGモデル、レイヤー、演算子をリストします。
GNNレイヤー:すべてのグラフニューラルネットワークレイヤーは、 nn.MessagePassingインターフェイスを介して実装されます。 GNNレイヤーは、メッセージの合格を実行する方法を指定します。つまり、ここで定義されているように異なるメッセージ、集約、および更新機能を設計することで指定します。これらのGNN層を積み重ねて、グラフニューラルネットワークモデルを作成できます。
- KIPFとWellingのGCNCONV :グラフ畳み込みネットワークを使用した半監視分類(ICLR 2017)[例]
- Defferrard et alのChebconv 。 :高速ローカライズされたスペクトルフィルタリングを備えたグラフ上の畳み込みニューラルネットワーク(NIP 2016)[例]
- Veličkovićetalからのgatconv 。 :グラフ注意ネットワーク(ICLR 2018)[例]
実装されたすべてのGNNレイヤーを見るために拡張...
- Chen et alからのgcn2conv 。 :シンプルで深いグラフ畳み込みネットワーク(ICML 2020)[ Example1 、 Example2 ]
- Fey et alからのsplineconv 。 :splinecnn:連続Bスプラインカーネルを使用した高速幾何学的深い学習(CVPR 2018)[ Example1 、 Example2 ]
- Gilmer et alからのnnconv 。 :量子化学のためのニューラルメッセージの合格(ICML 2017)[ Example1 、 Example2 ]
- Xie and GrossmanからのCGCONV :Crystal Graph Convolutional Neural Networks材料特性の正確で解釈可能な予測のための(物理レビューレター120、2018)
- SimonovskyとKomodakisのECCONV :グラフ上のエッジコンディショニングされた畳み込み(CVPR 2017)
- Tailor et alからのegconv 。 :効率的なグラフ畳み込みのための適応フィルターとアグリゲーター融合(GNNSYS 2021)[例]
- Brody et alからのGATV2CONV 。 :グラフ注意ネットワークはどの程度気配りですか? (ICLR 2022)
- Shi et alからTransformerconv 。 :マスクされたラベル予測:半監視分類のための統一されたメッセージ合格モデル(corr2020)[例]
- ハミルトンらからのsageconv 。 :大きなグラフでの誘導表現学習(NIP 2017)[ Example1 、 Example2 、 Example3 、 Example4 ]]
- GraphConv 、例えば、Morris et al。 :WeisfeilerとLeman Go Neural:高次グラフニューラルネットワーク(AAAI 2019)
- li et alからのGatedgraphconv 。 :ゲートグラフシーケンスニューラルネットワーク(ICLR 2016)
- Bresson and LaurentのResgatedGraphconv :残留ゲートグラフコンベネット(Corr 2017)
- Xu et alからのGinconv 。 :グラフニューラルネットワークはどの程度強力ですか? (ICLR 2019)[例]
- Hu et alからのGineconv 。 :トレーニング前グラフニューラルネットワークの戦略(ICLR 2020)
- Bianchi et alからのArmaconv 。 :畳み込みアルマフィルターを備えたニューラルネットワークをグラフ(CORR 2019)[例]
- Wu et alからのsgconv 。 :グラフの畳み込みネットワークを単純化する(CORR 2019)[例]
- Klicpera et alからのappnp 。 :Predicate on Propagate:グラフニューラルネットワークはパーソナライズされたPagerank(ICLR 2019)に会います[例]
- Duvenaud et al。 :分子指紋を学習するためのグラフ上の畳み込みネットワーク(NIP 2015)
- TheKumparampilらからのAgnnnconv 。 :半監視学習のための注意ベースのグラフニューラルネットワーク(CORR 2017)[例]
- Du et alからのtagconv 。 :トポロジーアダプティブグラフ畳み込みネットワーク(CORR 2017)[例]
- Corso et alからのPnaconv 。 :グラフネットの主要な近隣集約(corr2020)[例]
- Bo et alからのFaconv 。 :グラフ畳み込みネットワークの低周波情報を超えて(AAAI 2021)
- Rozemberczki et alからのpdnconv 。 :ニューラルメッセージの合格のためのPathfinderディスカバリーネットワーク(www 2021)
- Schlichtkrull et al。 :グラフの畳み込みネットワークを使用したリレーショナルデータのモデリング(ESWC 2018)[ Example1 、 Example2 ]
- Busbridge et al。 :リレーショナルグラフ注意ネットワーク(Corr 2019)[例]
- BrockschmidtのFilmConv :GNN-FILM:特徴的な線形変調を備えたグラフニューラルネットワーク(ICML 2020)[例]
- Derr et alからの署名:署名されたグラフ畳み込みネットワーク(ICDM 2018)[例]
- FEYからのDNACONV :ジャストジャンプ:グラフニューラルネットワークのダイナミック近隣集約(ICLR-W 2019)[例]
- Ma et alからのPanconv 。 :グラフニューラルネットワークのパス積分ベースの畳み込みとプーリング(ニューリップ2020)
- Qi et al 。 :ポイントネット:3D分類とセグメンテーション(CVPR 2017)およびポイントネット++のポイントセットのディープラーニング:メトリック空間内のポイントセットでのディープ階層機能学習(NIPS 2017)[ Example1 、 Example2 ]
- Wang et alからのedgeconv 。 :ポイントクラウドで学習するための動的グラフCNN(Corr、2018)[ Example1 、 Example2 ]
- Li et alからのXCONV 。 :PointCNN:Xトランスフォームポイントの畳み込み(Neurips 2018)[例]
- Deng et alからのppfconv 。 :PPFNET:堅牢な3Dポイントマッチングのためのグローバルコンテキスト認識ローカル機能(CVPR 2018)
- Monti et alからのGMMCONV 。 :混合モデルCNNを使用したグラフとマニホールドの幾何学的な学習(CVPR 2017)
- Verma et alからのfeastconv 。 :feastnet:3D形状分析用の機能ステアグラフ畳み込み(CVPR 2018)
- Zhao et al。 :ポイントトランス(2020)
- Bai et al。 :ハイパーグラフの畳み込みとハイパーグラフの注意(Corr 2019)
- Qasim et alからのGravnetConv 。 :距離加重グラフネットワークを使用した不規則な粒子検出器のジオメトリの学習表現(European Physics Journal C、2019)
- キムとオハイオ州のスーパーガット:あなたのフレンドリーな近所を見つける方法:セルフスーパービジョンを備えたグラフ注意デザイン(ICLR 2021)[例]
- Hu et al 。 :不均一なグラフ変圧器(www 2020)[例]
- Mo等からのHeatConv 。 :マルチエージェント軌道予測のための不均一なエッジ強化グラフ注意ネットワーク(Corr 2021)
- Zhu et al。 :シンプルなスペクトルグラフ畳み込み(ICLR 2021)
- Zhang et al。 :GNN計算グラフの理解:調整された計算、IO、およびメモリの視点(MLSYS 2022)
- RampášekらからのGPSCONV 。 :一般的で強力なスケーラブルなグラフ変圧器のレシピ(Neurips2022)[例]
プーリングレイヤー:グラフプーリングレイヤーは、グラフ(またはサブグラフ)のノードのセットのベクトル表現を、ノードの特性を要約する単一のベクトル表現に組み合わせます。通常、グラフレベルのタスクに適用され、ノード機能を単一のグラフ表現に結合する必要があります。
- GAOとJIからのトップKプール:グラフUネット(ICML 2019)、Cangea et al。 :スパース階層グラフ分類子(Neurips-W 2018)およびKnyazev et al。 :グラフニューラルネットワークの注意と一般化の理解(ICLR-W 2019)[例]
- Ying et alからのDiffpool 。 :微分可能なプーリングによる階層グラフ表現学習(Neurips 2018)[例]
実装されたすべてのプーリングレイヤーを見るために拡張します...
- Li et alからの注意集合体。 :グラフマッチングネットワークのグラフ構造化オブジェクトの類似性を学習するための(ICML 2019)[例]
- Vinyals et alからのset2set 。 :注文問題:セットのシーケンスへのシーケンス(ICLR 2016)[例]
- Zhang et al 。 :グラフ分類のためのエンドツーエンドのディープラーニングアーキテクチャ(AAAI 2018)[例]
- Bianchi et alからのMincut Pooling 。 :グラフプーリング用のグラフニューラルネットワークを使用したスペクトルクラスタリング(ICML 2020)[例]
- TsitsulinらからのDMONプール。 :グラフクラスタリンググラフニューラルネットワーク(CORR 2020)[例]
- DhillonらからのGraclusプール。 :固有ベクトルなしの加重グラフカット:マルチレベルアプローチ(Pami 2007)[例]
- たとえば、SimonovskyやKomodakisのボクセルグリッドプール:グラフ上の畳み込みニューラルネットワークの動的エッジコンディショナルフィルター(CVPR 2017)[例]
- Lee et alからのSAGプール。 :自己関節グラフプーリング(ICML 2019)およびKnyazev et al。 :グラフニューラルネットワークの注意と一般化の理解(ICLR-W 2019)[例]
- Diehlらからのエッジプール。 :エッジ収縮によるグラフプーリング(ICML-W 2019)およびDiehl:グラフニューラルネットワークのエッジ収縮プーリング(Corr 2019)[例]
- Ranjan et al 。 :ASAP:階層的グラフ表現を学習するための適応構造認識プーリング(AAAI 2020)[例]
- Ma et al 。 :グラフニューラルネットワークのパス積分ベースの畳み込みとプーリング(ニューリップ2020)
- Khasahmadi et al。 :メモリベースのグラフネットワーク(ICLR 2020)[例]
- Baek et alからのグラフマルチセット変圧器。 :グラフマルチセットプーリングを使用したグラフ表現の正確な学習(ICLR 2021)[例]
- Bartunovらからの平衡凝集。 :(UAI 2022)[例]
GNNモデル:サポートされているGNNモデルには複数のメッセージ通過レイヤーが組み込まれており、ユーザーはこれらの事前定義されたモデルを使用してグラフで予測することができます。 GNN層の単純なスタッキングとは異なり、これらのモデルには、前処理、追加の学習可能なパラメーター、スキップ接続、グラフの粗大化などが含まれます。
- SchüttetalからのSchnet 。 :schnet:量子相互作用をモデル化するための連続フィルター畳み込みニューラルネットワーク(NIP 2017)[例]
- Klicpera et al 。 :分子グラフ(ICLR 2020)の方向メッセージの渡され、非平衡分子のための高速で不確実性に対応する方向メッセージの合格(Neurips-W 2020)[例]
- GroverとLeskovecのnode2vec :node2vec:ネットワークのスケーラブルな機能学習(KDD 2016)[例]
- Veličkovićetal 。 :ディープグラフInfomax(ICLR 2019)[ Example1 、 Example2 ]
- Park et alからの深い多重グラフInfomax :監視されていない属性マルチプレックスネットワーク埋め込み(AAAI 2020)[例]
- Shi et alからのマスクされたラベル予測。 :マスクされたラベル予測:半監視分類のための統一されたメッセージ合格モデル(corr2020)[例]
- Yang et alからのPMLP 。 :グラフニューラルネットワークは本質的に優れた一般化者です:GNNとMLPSを埋めることによる洞察(ICLR 2023)
実装されたすべてのGNNモデルを見るために拡張します...
- Xu et alからのジャンプ知識。 :ジャンプナレッジネットワークを備えたグラフでの表現学習(ICML 2018)[例]
- Tensorflow Graph Nets Libraryと同様のあらゆる種類のグラフネットワークを構築するためのメタレイヤーBatglia et al。 :リレーショナルインダクティブバイアス、ディープラーニング、グラフネットワーク(Corr 2018)
- Dong et al 。 :MetaPath2Vec:異種ネットワークのスケーラブルな表現学習(KDD 2017)[例]
- グラフ自動エンコーダーと変分自動エンコーダーのすべてのバリエーション:
- KIPFとWellingからの変動グラフオートエンコーダー(NIPS-W 2016)[例]
- Pan et al。 (IJCAI 2018)[例]
- Salha et al。 (ECML 2020)[例]
- Zhang and Chenからのシール:グラフニューラルネットワークに基づくリンク予測(Neurips 2018)[例]
- ジンらからの皮。 :一時的な知識グラフ上の推論のための再発イベントネットワーク(ICLR-W 2019)[例]
- GaoとJiのGraphunet :Graph U-Nets(ICML 2019)[例]
- Xiong et al。 :グラフ注意メカニズムを使用した創薬の分子表現の境界を押し広げる(J.Med。Chem。2020)[例]
- deepgcnとli et alからのGenconv 。 :deepgcns:GCNSはCNNSと同じくらい深くなることができますか? (ICCV 2019)およびDeeperGCN:より深いGCNをトレーニングする必要があるすべて(Corr 2020)[例]
- Wang et al 。 :完全に均衡したラベルを備えたネットワーク埋め込み(TKDE 2020)[例]
- ying et al。のgnnexplainer 。 :gnnexplainer:グラフニューラルネットワークの説明を生成する(Neurips 2019)[ Example1 、 Example2 、 Example3 ]
- Zhangらからのグラフレスニューラルネットワーク。 :グラフレスニューラルネットワーク:蒸留による古いMLPSの新しいトリックを教える(Corr 2021)[例]
- Lim et alからのLinkx 。 :非溶原性グラフの大規模学習:新しいベンチマークと強力な簡単な方法(Neurips2021)[例]
- Li et alからのRevgnn 。 :1000層でグラフ神経をトレーニングする(ICML 2021)[例]
- Bordes et alからのTranse 。 :多関係データをモデル化するための埋め込みの翻訳(NIPS 2013)[例]
- Trouillon et alからの複合体。 :単純なリンク予測のための複雑な埋め込み(ICML 2016)[例]
- ヤン等からの際。 :知識ベースの学習と推論のためのエンティティと関係を埋め込む(ICLR 2015)[例]
- Sun et alから回転します。 :回転:複雑な空間でのリレーショナル回転による知識グラフの埋め込み(ICLR 2019)[例]
GNNオペレーターとユーティリティ: PYGには、多くのGNNモデルで一般的に使用されるニューラルネットワークオペレーターの豊富なセットが付属しています。拡張可能な設計に従います。これらの演算子とグラフユーティリティを既存のGNNレイヤーとモデルにグラフで適用して、モデルのパフォーマンスをさらに向上させることができます。
- Rong et al 。 :dropedge:ノード分類に関するディープグラフの畳み込みネットワーク(ICLR 2020)に向けて
- あなたからのドロップノード、 Maskfeature、およびaddrandomedge et al。 :グラフのコントラスト学習と増強(Neurips2020)
- Li et alからのドロップパス。 :Maskgae:マスクされたグラフモデリングはグラフオートエンコーダーを満たしています(ARXIV 2022)
- Veličkovićetal 。 :ディープグラフinfomax(ICLR 2019)
- Cai et al 。 :graphnorm:グラフニューラルネットワークトレーニングを加速するための原則的なアプローチ(ICML 2021)
- Klicpera et alからのGDC 。 :拡散によりグラフ学習が改善されます(Neurips 2019)[例]
実装されたすべてのGNNオペレーターとユーティリティを見るために拡張してください...
- Dwivedi et alからのgraphsizenorm 。 :ベンチマークグラフニューラルネットワーク(Corr2020)
- ZhaoとAkogluのペアノーム:ペアノーム:GNNSでの過剰な滑走の取り組み(ICLR 2020)
- Yang et alからのMeanSubtractionNorm :深いGCNSで「過剰な滑走」を再検討する(corr2020)
- Zhou et alからのDiffgroupNorm 。 :微分グループの正規化を伴うより深いグラフニューラルネットワークに向けて(ニューリップ2020)
- ジンらからの樹木分解。 :分子グラフ生成のためのジャンクションツリー変動自動エンコーダー(ICML 2018)
- Rossi et alからのTGN 。 :動的グラフ上の深い学習のための時間グラフネットワーク(GRL+ 2020)[例]
- Weisfeiler Lehman Weisfeiler and Lehmanのオペレーター:この削減中にグラフの削減と代数(Nauchno-Technicheskaya Informatsia 1968)[例]
- Togninalli et al 。 :Wasserstein Weisfeiler-Lehmanグラフカーネル(Neurips 2019)
- ZhuとGhahramaniからのラベル伝播:ラベルの伝播を使用したラベル付きおよび非標識データからの学習(CMU-Cald 2002)[例]
- CAIとWangのローカル度プロファイル:非属性グラフ分類のためのシンプルで効果的なベースライン(CORR 2018)
- Huang et alからの正解。 :ラベルの伝播とシンプルモデルの組み合わせグラフニューラルネットワーク(Corr 2020)[例]
- ヘンダーソンらからのジニと仲間の正則化。 :分子グラフの改善ニューラルネットワークの説明可能性と誘導されたスパース性(ICML 2021)
- Zhao et al 。 :星からサブグラフへ:局所構造の認識でGNNを高揚させる(ICLR 2022)
- Rossi et alからの特徴的なプロパゲーション。 :ノード機能が欠落しているグラフでの学習における機能伝播の不合理な有効性について(Corr 2021)
スケーラブルGNNS: PYGは、大規模なグラフにスケーリングできるグラフニューラルネットワークの実装をサポートします。このようなアプリケーションは、グラフ全体、関連する機能、GNNパラメーターがGPUメモリに適合できないため、困難です。多くの最先端のスケーラビリティアプローチは、ミニバッチトレーニング、グラフクラスタリング、パーティション化のために近隣をサンプリングするか、単純化されたGNNモデルを使用することにより、この課題に取り組みます。これらのアプローチはPYGで実装されており、上記のGNN層、演算子、モデルの恩恵を受けることができます。
- HamiltonらのNeighborLoader 。 :大きなグラフでの帰納的表現学習(NIP 2017)[ Example1 、 Example2 、 Example3 ]
- Chiang et alからのclustergcn 。 :cluster-gcn:深いグラフ畳み込みネットワークをトレーニングするための効率的なアルゴリズム(KDD 2019)[ Example1 、 Example2 ]
- Zeng et al 。 :graphsaint:グラフサンプリングベースの誘導学習方法(ICLR 2020)[例]
実装されたすべてのスケーラブルなGNNを見るために拡張します...
- Zeng et alからの影。 :グラフニューラルネットワークの深さと範囲の分離(ニューリップ2021)[例]
- Rossi et alからのサイン。 :サイン:スケーラブルインセプショングラフニューラルネットワーク(Corr 2020)[例]
- Hu et alのHgtloader 。 :不均一なグラフ変圧器(www 2020)[例]
インストール
PygはPython 3.9からPython 3.12に利用できます。
アナコンダ
これで、すべての主要なOS/Pytorch/Cudaの組み合わせについて、Anaconda経由でPYGをインストールできますか? Pytorchをまだインストールしていない場合は、公式のPytorchドキュメントに記載されているように、 conda経由でインストールしてください。 pytorchがインストールされていることを考えると( >=1.8.0 )、単に実行する
ピピ
Pyg 2.3以降、Pytorchを除いて外部ライブラリなしでPYGをインストールおよび使用できます。このために、単に実行してください
pip install torch_geometric
追加のライブラリ
PYGの完全な機能セットを利用したい場合は、インストールする可能性のある追加のライブラリがいくつかあります。
-
pyg-lib :不均一なGNN演算子とグラフサンプリングルーチン torch-scatter :加速された効率的なスパース削減torch-sparse : SparseTensorサポートtorch-cluster :グラフクラスタリングルーチンtorch-spline-conv : SplineConvサポート
これらのパッケージには、Pytorch C ++/CUDA/HIP(ROCM)拡張インターフェイスに基づいた独自のCPUおよびGPUカーネルの実装が付属しています。 PYGの基本的な使用のために、これらの依存関係は完全にオプションです。最小限のインストールから始めて、実際にそれらを必要とし始めたら、追加の依存関係をインストールすることをお勧めします。
これらの拡張機能を容易にするために、すべての主要なOS/Pytorch/Cudaの組み合わせにpipホイールを提供します。こちらをご覧ください。
Pytorch 2.5
Pytorch 2.5.0のバイナリをインストールするには、単に実行します
pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.5.0+${CUDA}.html
Pytorchのインストールに応じて、 ${CUDA} cpu 、 cu118 、 cu121 、またはcu124のいずれかに置き換える必要があります。
| cpu | cu118 | cu121 | cu124 |
|---|
| Linux | ✅ | ✅ | ✅ | ✅ |
| Windows | ✅ | ✅ | ✅ | ✅ |
| macos | ✅ | | | |
Pytorch 2.4
Pytorch 2.4.0のバイナリをインストールするには、単に実行します
pip install pyg_lib torch_scatter torch_sparse torch_cluster torch_spline_conv -f https://data.pyg.org/whl/torch-2.4.0+${CUDA}.html
Pytorchのインストールに応じて、 ${CUDA} cpu 、 cu118 、 cu121 、またはcu124のいずれかに置き換える必要があります。
| cpu | cu118 | cu121 | cu124 |
|---|
| Linux | ✅ | ✅ | ✅ | ✅ |
| Windows | ✅ | ✅ | ✅ | ✅ |
| macos | ✅ | | | |
注:古いバージョンのバイナリは、Pytorch 1.4.0、Pytorch 1.5.0、Pytorch 1.6.0、Pytorch 1.7.0/1.7.1、Pytorch 1.8.0/1.8.1、Pytorch 1.9.0、Pytorch 1.10.0/1.10.1/1.10.2、Pytthch 1.10.0にも提供されています。 1.12.0/1.12.1、Pytorch 1.13.0/1.13.1、Pytorch 2.0.0/2.0.1、Pytorch 2.1.0/2.1.1/2.1.2、Pytorch 2.2.0/2.2.1/2.2.2、およびPytorch 2.3.0/2.3.1(同じ手順)。古いバージョンの場合、ソースからの手動インストールを防ぐために、最新のサポートされているバージョン番号を明示的に指定するか、 pip install --no-indexを介してインストールする必要がある場合があります。ここで最新のサポートバージョン番号を調べることができます。
nvidia pygコンテナ
Nvidiaは、PYGでGPU加速GNNを簡単にトレーニングおよび展開するためのPyg Dockerコンテナを提供しています。こちらをご覧ください。
毎晩とマスター
まだ完全にリリースされていない最新のPYG機能を試してみる場合は、PYGの夜間バージョンをインストールします。
または、 Master ViaからPYGをインストールします
pip install git+https://github.com/pyg-team/pytorch_geometric.git
ROCMホイール
外部pyg-rocm-buildリポジトリは、ROCMのPYGをインストールする方法に関するホイールと詳細な指示を提供します。ご不明な点がございましたら、ここで問題を開いてください。
引用
自分の作品でこのコードを使用する場合は、私たちの論文(および使用した方法のそれぞれの論文)を引用してください。
@inproceedings{Fey/Lenssen/2019,
title={Fast Graph Representation Learning with {PyTorch Geometric}},
author={Fey, Matthias and Lenssen, Jan E.},
booktitle={ICLR Workshop on Representation Learning on Graphs and Manifolds},
year={2019},
}
あなたの仕事を外部リソースにリストしたい場合は、お気軽にメールでお問い合わせください。予期しないことに気付いた場合は、問題を開いてお知らせください。ご質問がある場合、または特定の機能が欠落している場合は、お気軽に話し合ってください。私たちは常にPYGをさらに良くするように動機付けられています。