Documentação | Papel | Notebooks de colab e tutoriais em vídeo | Recursos externos | Exemplos OGB
O PYG (Pytorch Geométrico) é uma biblioteca construída sobre Pytorch para escrever e treinar facilmente redes neurais (GNNs) para uma ampla gama de aplicações relacionadas a dados estruturados.
Consiste em vários métodos para aprendizado profundo em gráficos e outras estruturas irregulares, também conhecidas como aprendizado geométrico profundo , a partir de uma variedade de artigos publicados. Além disso, consiste em carregadores de mini-lotes fáceis de usar para operar em muitos gráficos pequenos e únicos, com suporte multi-GPU, suporte DataPipe torch.compile .
Clique aqui para se juntar à nossa comunidade Slack!
- Destaques da biblioteca
- Tour rápido para novos usuários
- Visão geral da arquitetura
- Modelos GNN implementados
- Instalação
Destaques da biblioteca
Seja você um pesquisador de aprendizado de máquina ou usuário de primeira vez em kits de ferramentas de aprendizado de máquina, aqui estão alguns motivos para experimentar a PYG para aprendizado de máquina em dados estruturados por gráficos.
- API fácil de usar e unificada : tudo o que é preciso são de 10 a 20 linhas de código para começar o treinamento de um modelo GNN (consulte a próxima seção para um passeio rápido). O PYG é Pytorch-on-the-Rocks : utiliza uma API centrada no tensor e mantém os princípios de design próximos ao Vanilla Pytorch. Se você já está familiarizado com Pytorch, a utilização da PYG é direta.
- Modelos GNN abrangentes e bem conservados : A maioria das arquiteturas de rede neural de gráficos de ponta foi implementada por desenvolvedores de bibliotecas ou autores de trabalhos de pesquisa e estão prontos para serem aplicados.
- Grande flexibilidade : os modelos PYG existentes podem ser facilmente estendidos para conduzir sua própria pesquisa com o GNNS. Fazer modificações nos modelos existentes ou a criação de novas arquiteturas é simples, graças à sua API de aprovação de mensagens fácil de usar e a uma variedade de operadores e funções de utilidade.
- Modelos de GNN do mundo real em larga escala : nos concentramos na necessidade de aplicativos GNN em desafiar cenários desafiadores do mundo real e apoiar o aprendizado de diversos tipos de gráficos, incluindo, entre outros, GNNs escaláveis para gráficos com milhões de nós; GNNs dinâmicos para previsões de nós ao longo do tempo; GNNs heterogêneos com vários tipos de nós e tipos de borda.
Tour rápido para novos usuários
Neste rápido passeio, destacamos a facilidade de criar e treinar um modelo GNN com apenas algumas linhas de código.
Treine seu próprio modelo GNN
No primeiro vislumbre da PYG, implementamos o treinamento de um GNN para classificar documentos em um gráfico de citação. Para isso, carregamos o conjunto de dados CORA e criamos um modelo GCN simples de 2 camadas usando o GCNConv predefinido:
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 ) Agora podemos otimizar o modelo em um loop de treinamento, semelhante ao procedimento padrão de treinamento de 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 () Mais informações sobre como avaliar o desempenho final do modelo podem ser encontradas no exemplo correspondente.
Crie sua própria camada GNN
Além da aplicação fácil dos GNNs existentes, o PYG facilita a implementação de redes neurais gráficas personalizadas (consulte aqui o tutorial de acompanhamento). Por exemplo, isso é o suficiente para implementar a camada convolucional de borda de Wang et al. :
$$ x_i^{ prime} ~ = ~ max_ {j in mathcal {n} (i)} ~ textrm {mlp} _ { theta} esquerda ([~ x_i, ~ x_j - x_i ~] direita) $.
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] Visão geral da arquitetura
A PYG fornece uma estrutura de várias camadas que permite aos usuários criar soluções de rede neural gráficas em níveis baixos e altos. Compreende os seguintes componentes:
- O mecanismo PYG utiliza a poderosa estrutura de aprendizado profundo do Pytorch com suporte completo de
torch.compile e tochcript, bem como adições de bibliotecas de CPU/CUDA eficientes para operar em dados esparsos, por exemplo , pyg-lib . - O armazenamento da PYG lida com o processamento de dados, transformação e carregamento. É capaz de lidar e processar conjuntos de dados de gráficos em larga escala e fornece soluções eficazes para gráficos heterogêneos. Além disso, fornece uma variedade de soluções de amostragem, que permitem o treinamento de GNNs em gráficos em larga escala.
- Os operadores da PYG agrupam funcionalidades essenciais para implementar redes neurais gráficas. A PYG suporta importantes blocos de construção do GNN que podem ser combinados e aplicados a várias partes de um modelo GNN, garantindo uma rica flexibilidade do design do GNN.
- Finalmente, a PYG fornece um conjunto abundante de modelos GNN e exemplos que mostram modelos GNN em benchmarks de gráficos padrão. Graças à sua flexibilidade, os usuários podem criar e modificar facilmente modelos GNN personalizados para atender às suas necessidades específicas.
Modelos GNN implementados
Atualmente, listamos modelos, camadas e operadores da PYG, de acordo com a categoria:
Camadas GNN: Todas as camadas de rede neural gráficas são implementadas através da interface nn.MessagePassing . Uma camada GNN especifica como executar a passagem de mensagens, ou seja, projetando diferentes funções de mensagem, agregação e atualização, conforme definido aqui. Essas camadas GNN podem ser empilhadas para criar modelos de rede neural gráficos.
- GCNCONV da KIPF e Welling: Classificação semi-supervisionada com redes convolucionais de gráficos (ICLR 2017) [ Exemplo ]
- Chebconv de Defderrard et al. : Redes neurais convolucionais em gráficos com filtragem espectral localizada rápida (NIPS 2016) [ Exemplo ]
- GatConv de Veličković et al. : Redes de atenção gráfica (ICLR 2018) [ Exemplo ]
Expanda para ver todas as camadas GNN implementadas ...
- GCN2Conv de Chen et al. : Redes convolucionais de gráfico simples e profundo (ICML 2020) [ Exemplo1 , Exemplo2 ]
- SplineConv de Fey et al. :
- NnConv de Gilmer et al. : Mensagem neural Passagem para química quântica (ICML 2017) [ Exemplo1 , Exemplo2 ]
- CGCONV de Xie e Grossman: Crystal Graph Convolucional Neural Redes para uma previsão precisa e interpretável das propriedades do material (Cartas de revisão física 120, 2018)
- Ecconv de Simonovsky e Komodakis: Convolução condicionada de Edge nos gráficos (CVPR 2017)
- Egconv de Tailor et al. : Filtros adaptativos e fusão agregadora para convoluções eficientes de gráficos (GNNSYS 2021) [ Exemplo ]
- Gatv2Conv de Brody et al. : Quão atenciosos são as redes de atenção gráfica? (ICLR 2022)
- TransformerConv de Shi et al. : Previsão de rótulo mascarado: modelo de passagem de mensagens unificado para classificação semi-supervisionada (CORR 2020) [ Exemplo ]
- Sageconv de Hamilton et al. : Aprendizagem de representação indutiva em gráficos grandes (NIPS 2017) [ Exemplo1 , Exemplo2 , Exemplo3 , Exemplo4 ]
- GraphConv de, por exemplo , Morris et al. : Weisfeiler e Leman Go Neural: Redes neurais de gráficos de ordem superior (AAAI 2019)
- Gatedgraphconv de Li et al. : Redes neurais de sequência de gráficos fechados (ICLR 2016)
- Resgatedgraphconv de Bresson e Laurent: Convnets de Gráfico de Gatada Residual (CORR 2017)
- Ginconv de Xu et al. : Quão poderosas são redes neurais gráficas? (ICLR 2019) [ Exemplo ]
- GineConv de Hu et al. : Estratégias para redes neurais de gráfico pré-treinamento (ICLR 2020)
- Armaconv de Bianchi et al. : Redes neurais gráficas com filtros ARMA convolucionais (corr 2019) [ Exemplo ]
- SGCONV de Wu et al. : Simplificando redes convolucionais de gráficos (corr 2019) [ Exemplo ]
- Appnp de Klicpera et al. : Prever então propagar: redes neurais gráficas atendem ao PageRank personalizado (ICLR 2019) [ Exemplo ]
- Mfconv de Duvenaud et al. : Redes convolucionais em gráficos para aprender impressões digitais moleculares (NIPS 2015)
- AgnnConv de Thekumparampil et al. : Rede neural de gráfico baseado em atenção para aprendizado semi-supervisionado (CORR 2017) [ Exemplo ]
- TagConv de Du et al. : Topologia Redes Convolucionais de Gráfico Adaptativo (CORR 2017) [ Exemplo ]
- Pnaconv de Corso et al. : Agregação principal da vizinhança para redes de gráficos (corrig 2020) [ Exemplo ]
- Faconv de Bo et al. : Além de informações de baixa frequência em redes convolucionais de gráficos (AAAI 2021)
- PdnConv de Rozemberczki et al. : Pathfinder Discovery Redes para passagem de mensagens neurais (www 2021)
- RGCNCONV de Schlichtkrull et al. : Modelando dados relacionais com redes convolucionais de gráfico (ESWC 2018) [ Exemplo1 , Exemplo2 ]
- RGATCONV de Busbridge et al. : Redes de atenção do gráfico relacional (corr 2019) [ Exemplo ]
- FilmConv de Brockschmidt: GNN-film: redes neurais gráficas com modulação linear em termos de recursos (ICML 2020) [ Exemplo ]
- Sinalizado de Derr et al. : Rede convolucional de gráfico assinado (ICDM 2018) [ Exemplo ]
- DNACONV DE FEY: Just Jump: Agregação Dinâmica do Bairro em Redes Neurais Gráficas (ICLR-W 2019) [ Exemplo ]
- Panconv de Ma et al. : Convolução e pool baseados em caminho baseados no caminho para redes neurais gráficas (Neurips 2020)
- PointNetConv (incluindo amostragem de ponto mais distante iterativo , geração dinâmica de gráficos com base na distância vizinha ou máxima mais próxima e na interpolação de K-NN para amostragem) de Qi et al. : PointNet: Aprendizagem profunda nos conjuntos de pontos para classificação e segmentação em 3D (CVPR 2017) e PointNet ++: Aprendizagem hierárquica profunda dos conjuntos de pontos em um espaço métrico (NIPS 2017) [ Exemplo1 , Exemplo2 ]
- Edgeconv de Wang et al. : Gráfico dinâmico CNN para aprender nas nuvens de ponto (Corr, 2018) [ Exemplo1 , Exemplo2 ]
- Xconv de Li et al. : Pointcnn: Convolução em pontos transformados X (Neurips 2018) [ Exemplo ]
- PPFConv de Deng et al. :
- GMMConv de Monti et al. : Aprendizagem geométrica profunda em gráficos e coletores usando o Model Model CNNS (CVPR 2017)
- FEASTCONV de Verma et al. :
- PointTransformerConv de Zhao et al. : Point Transformer (2020)
- Hypergraphconv de Bai et al. : Convolução de hipergraph e atenção hipergraph (corr 2019)
- GravnetConv de Qasim et al. : Aprendendo representações de geometria irregular de detectores de partículas com redes de gráficos ponderadas à distância (European Physics Journal C, 2019)
- Supergat de Kim e OH: Como encontrar seu bairro amigável: design de atenção gráfico com auto-supervisão (ICLR 2021) [ Exemplo ]
- Hgtconv de Hu et al. : Transformador de gráfico heterogêneo (www 2020) [ Exemplo ]
- HeatConv de Mo et al. : Rede heterogênea de atenção do gráfico com borda de borda para previsão de trajetória multi-agente (CORR 2021)
- SSGConv de Zhu et al. : Convolução do gráfico espectral simples (ICLR 2021)
- Fusedgatconv de Zhang et al. : Entendendo o Gráfico Computacional GNN: um Computação Coordenada, IO e Perspectiva de Memória (MLSYS 2022)
- GPSConv de Rampášek et al. : Receita para um transformador de gráfico geral, poderoso e escalável (Neurips 2022) [ Exemplo ]
Camadas de agrupamento: as camadas de agrupamento de gráficos combinam as representações vetoriais de um conjunto de nós em um gráfico (ou um subgrafão) em uma única representação vetorial que resume suas propriedades de nós. É comumente aplicado a tarefas de nível gráfico, que exigem combinar recursos do nó em uma única representação gráfica.
- Ponching Top-K do GAO e JI: Gráfico U-Nets (ICML 2019), Cangea et al. : Em direção a classificadores de gráficos hierárquicos esparsos (Neurips-W 2018) e Knyazev et al. : Compreendendo a atenção e a generalização em redes neurais gráficas (ICLR-W 2019) [ Exemplo ]
- Diffpool de Ying et al. : Aprendizagem hierárquica de representação de gráficos com pool diferenciável (Neurips 2018) [ Exemplo ]
Expanda para ver todas as camadas de pool implementadas ...
- Agregação atencional de Li et al. : Redes de correspondência de gráficos para aprender a semelhança de objetos estruturados de gráficos (ICML 2019) [ Exemplo ]
- Set2Set de Vinyals et al. : Ordem Matters: Sequência à sequência para conjuntos (ICLR 2016) [ Exemplo ]
- A agregação de classificar de Zhang et al. : Uma arquitetura de aprendizado profundo de ponta a ponta para classificação de gráficos (AAAI 2018) [ Exemplo ]
- Mundial pool de Bianchi et al. : Cluster Spectral com redes neurais gráficas para pool de gráficos (ICML 2020) [ Exemplo ]
- DMMON GOLING de Tsitsulin et al. : Cluster de gráfico com redes neurais gráficas (corrig 2020) [ Exemplo ]
- Graclus pool de Dhillon et al. : Cortes de gráficos ponderados sem autovetores: uma abordagem multinível (Pami 2007) [ Exemplo ]
- Voxel Grid Griding de, por exemplo , Simonovsky e Komodakis: filtros dinâmicos condicionados a borda em redes neurais convolucionais em gráficos (CVPR 2017) [ Exemplo ]
- Sag Pooling de Lee et al. : Pool de gráficos de auto-distribuição (ICML 2019) e Knyazev et al. : Compreendendo a atenção e a generalização em redes neurais gráficas (ICLR-W 2019) [ Exemplo ]
- Pool de arestas de Diehl et al. : Em direção ao agrupamento de gráficos por contração de arestas (ICML-W 2019) e Diehl: pool de contração de arestas para redes neurais gráficas (corr 2019) [ Exemplo ]
- ASAPOOLING de Ranjan et al. :
- Panpooling de Ma et al. : Convolução e pool baseados em caminho baseados no caminho para redes neurais gráficas (Neurips 2020)
- Mempooling de Khasahmadi et al. : Redes de gráficos baseadas em memória (ICLR 2020) [ Exemplo ]
- Transformador de multiset de gráfico de Baek et al. : Aprendizagem precisa de representações de gráficos com o gráfico multiset pooling (ICLR 2021) [ Exemplo ]
- Agregação de equilíbrio de Bartunov et al. : (UAI 2022) [ Exemplo ]
Modelos GNN: Nossos modelos GNN suportados incorporam várias camadas de passagem de mensagens e os usuários podem usar diretamente esses modelos predefinidos para fazer previsões nos gráficos. Ao contrário do empilhamento simples de camadas GNN, esses modelos podem envolver pré-processamento, parâmetros aprendidos adicionais, conexões de ignorar, enrolamento de gráficos, etc.
- Schnet de Schütt et al. : Schnet: Uma rede neural convolucional de filtro contínuo para modelar interações quânticas (NIPS 2017) [ Exemplo ]
- DIMENET e DIMENETPLUSPLUS de Klicpera et al. : Mensagem direcional Passagem para gráficos moleculares (ICLR 2020) e mensagem direcional rápida e com consciência da incerteza que passa para moléculas de não equilíbrio (Neurips-W 2020) [ Exemplo ]
- Node2vec de Grover e Leskovec: Node2vec: aprendizado de recursos escaláveis para redes (KDD 2016) [ Exemplo ]
- Gráfico profundo Infomax de Veličković et al. : Graph Deep Infomax (ICLR 2019) [ Exemplo1 , Exemplo2 ]
- Gráfico multiplex profundo Infomax de Park et al. : Incorporação de rede multiplex atribuída não supervisionada (AAAI 2020) [ Exemplo ]
- Previsão de etiquetas mascaradas de Shi et al. : Previsão de rótulo mascarado: modelo de passagem de mensagens unificado para classificação semi-supervisionada (CORR 2020) [ Exemplo ]
- PMLP de Yang et al. : As redes neurais gráficas são inerentemente boas generalizadoras: Insights bidging GNNs e MLPs (ICLR 2023)
Expanda para ver todos os modelos GNN implementados ...
- Jumping Knowledge de Xu et al. : Aprendizagem de representação em gráficos com redes de conhecimento de salto (ICML 2018) [ Exemplo ]
- Um metalayer para criar qualquer tipo de rede de gráficos semelhante à biblioteca de redes de gráficos Tensorflow de Battaglia et al. : Vieses indutivos relacionais, aprendizado profundo e redes de gráficos (CORR 2018)
- Metapath2vec de Dong et al. : metapath2vec: aprendizado de representação escalável para redes heterogêneas (KDD 2017) [ Exemplo ]
- Todas as variantes de autoencoders de gráfico e autoencoders variacionais de:
- Opoders de auto-codificadores de gráficos variacionais da KIPF e Welling (NIPS-W 2016) [ Exemplo ]
- AutoEncoder de gráfico regularizado adversário para incorporação de gráfico de Pan et al. (IJCAI 2018) [ Exemplo ]
- Autoencoders de gráfico simples e eficazes com modelos lineares de um salto de Saiha et al. (ECML 2020) [ Exemplo ]
- Seal de Zhang e Chen: previsão de link com base em redes neurais gráficas (Neurips 2018) [ Exemplo ]
- Renet de Jin et al. : Rede de eventos recorrentes para raciocínio sobre gráficos de conhecimento temporal (ICLR-W 2019) [ Exemplo ]
- GRAPHUNET DE GAO e JI: GRAPL U-Nets (ICML 2019) [ Exemplo ]
- AttentiveFP de Xiong et al. : Empurrando os limites da representação molecular para descoberta de medicamentos com o mecanismo de atenção do gráfico (J. Med. Chem. 2020) [ Exemplo ]
- Deepgcn e o Genconv de Li et al. : DeepGCNs: Os GCNs podem ir tão profundos quanto os CNNs? (ICCV 2019) e Deepergcn: Tudo o que você precisa para treinar GCNs mais profundos (CORR 2020) [ Exemplo ]
- Rect de Wang et al. : Incorporação de rede com rótulos completamente imbalançados (TKDE 2020) [ Exemplo ]
- GNNexplainer de Ying et al. : GNNexplainer: Gerando explicações para redes neurais gráficas (Neurips 2019) [ Exemplo1 , Exemplo2 , Exemplo3 ]
- Redes neurais sem gráfico de Zhang et al. : Redes neurais sem gráfico: ensinando novos truques antigos da MLPS via destilação (corrig 2021) [ Exemplo ]
- Linkx de Lim et al. : Aprendizagem em larga escala em gráficos não homofilosos: novos benchmarks e fortes métodos simples (Neurips 2021) [ Exemplo ]
- Revgnn de Li et al. : Gráfico de treinamento Neural com 1000 camadas (ICML 2021) [ Exemplo ]
- Transe de Bordes et al. : Traduzindo incorporação para modelar dados multi-relacional (NIPS 2013) [ Exemplo ]
- Complexo de Trouillon et al. : Incorporações complexas para previsão simples de link (ICML 2016) [ Exemplo ]
- Distmult de Yang et al. : Incorporar entidades e relações de aprendizado e inferência em bases de conhecimento (ICLR 2015) [ Exemplo ]
- Gire de Sun et al. : Girar: Gráfico de conhecimento incorporado por rotação relacional no espaço complexo (ICLR 2019) [ Exemplo ]
Operadores e utilitários GNN: A PYG vem com um rico conjunto de operadores de rede neural comumente usados em muitos modelos GNN. Eles seguem um design extensível: é fácil aplicar esses operadores e utilitários gráficos às camadas e modelos de GNN existentes para melhorar ainda mais o desempenho do modelo.
- DropEdge de Rong et al. : DropEdge: em direção às redes convolucionais de gráficos profundos na classificação dos nó (ICLR 2020)
- DropNode , MaskFeature e AddrandomEdge Your et al. : Aprendizagem contrastiva de gráficos com aumentos (Neurips 2020)
- Droppath de Li et al. : Maskgae: Modelagem de gráficos mascarada encontra autoencoders de gráfico (ARXIV 2022)
- Shufflenode de Veličković et al. : Graph Deep Infomax (ICLR 2019)
- GraphNorm de Cai et al. : GraphNorm: uma abordagem de princípios para acelerar o treinamento de rede neural gráfico (ICML 2021)
- GDC de Klicpera et al. : A difusão melhora o aprendizado de gráficos (Neurips 2019) [ Exemplo ]
Expanda para ver todos os operadores e utilitários da GNN implementados ...
- Graphsizenorm de Dwivedi et al. : Benchmarking Gráfico Neural Redes (CORR 2020)
- ParNorm de Zhao e Akoglu: Paranorm: abordando o enfrentamento no GNNS (ICLR 2020)
- SignificasubtractionNorm de Yang et al. : Revisitando "suavizando" em GCNs profundos (corrig 2020)
- DiffGroupNorm de Zhou et al. : Em direção a redes neurais mais profundas com normalização do grupo diferenciável (Neurips 2020)
- Decomposição de árvores de Jin et al. : Junction Tree Variational AutoEncoder para geração de gráficos moleculares (ICML 2018)
- TGN de Rossi et al. : Redes de gráficos temporais para aprendizado profundo em gráficos dinâmicos (GRL+ 2020) [ Exemplo ]
- Weisfeiler Lehman Operador de Weisfeiler e Lehman: uma redução de um gráfico em uma forma canônica e uma álgebra surgindo durante essa redução (Nauchno-Technicheskaya Informatsia 1968) [ Exemplo ]
- O operador contínuo de Weisfeiler Lehman de Togninalli et al. : Wasserstein Weisfeiler-Lehman Kernels (Neurips 2019)
- Propagação de etiqueta de Zhu e Ghahramani: Aprendendo com dados rotulados e não marcados com propagação de etiquetas (CMU-CALD 2002) [ Exemplo ]
- Perfil de graduação local da CAI e Wang: uma linha de base simples e eficaz para a classificação de gráficos não atribuídos (CORR 2018)
- Correto e o teto de Huang et al. : Combinando a propagação do rótulo e os modelos simples superam redes neurais gráficas (correr 2020) [ Exemplo ]
- Gini e Bro regularização de Henderson et al. : Melhorando a explicação da rede neural de gráficos moleculares com ortonormalização e esparsidade induzida (ICML 2021)
- RooteGonets e RootedRWSubGraph de Zhao et al. : De estrelas aos sub -regra: elevando qualquer GNN com conscientização da estrutura local (ICLR 2022)
- Featurepropagation de Rossi et al. : Sobre a eficácia irracional da propagação de recursos na aprendizagem em gráficos com os recursos de nó ausentes (Corr 2021)
GNNs escaláveis: a PYG suporta a implementação de redes neurais gráficas que podem escalar para gráficos em larga escala. Esse aplicativo é desafiador, pois o gráfico inteiro, seus recursos associados e os parâmetros GNN não podem se encaixar na memória da GPU. Muitas abordagens de escalabilidade de última geração enfrentam esse desafio, amostrando bairros para treinamento em mini-lotes, agrupamento de gráficos e particionamento ou usando modelos GNN simplificados. Essas abordagens foram implementadas no PYG e podem se beneficiar das camadas, operadores e modelos acima do GNN.
- Vizerloader de Hamilton et al. : Aprendizagem de representação indutiva em gráficos grandes (NIPS 2017) [ Exemplo1 , Exemplo2 , Exemplo3 ]
- Clustergcn de Chiang et al. : Cluster-GCN: um algoritmo eficiente para o treinamento de redes convolucionais de gráficos profundas e grandes (KDD 2019) [ Exemplo1 , Exemplo2 ]
- Graphsaint de Zeng et al. : GraphSaint: Método de Aprendizagem Indutiva baseada em amostragem de gráficos (ICLR 2020) [ Exemplo ]
Expanda para ver todos os GNNs escaláveis implementados ...
- Sombra de Zeng et al. : Decuitar a profundidade e o escopo das redes neurais gráficas (Neurips 2021) [ Exemplo ]
- Sinal de Rossi et al. : Sign: Iniciação escalável Redes neurais do gráfico (CORR 2020) [ Exemplo ]
- Hgtloader de Hu et al. : Transformador de gráfico heterogêneo (www 2020) [ Exemplo ]
Instalação
O PYG está disponível para Python 3.9 para Python 3.12.
Anaconda
Agora você pode instalar o PYG via Anaconda para todas as principais combinações de OS/Pytorch/Cuda? Se você ainda não instalou o Pytorch, instale -o via conda , conforme descrito na documentação oficial do Pytorch. Dado que você tem o pytorch instalado ( >=1.8.0 ), basta executar
Pypi
A partir do PYG 2.3 , você pode instalar e usar o PYG sem qualquer biblioteca externa necessária, exceto Pytorch. Para isso, basta correr
pip install torch_geometric
Bibliotecas adicionais
Se você deseja utilizar o conjunto completo de recursos da PYG, existem várias bibliotecas adicionais que você pode querer instalar:
-
pyg-lib : Operadores de GNN heterogêneos e rotinas de amostragem de gráficos -
torch-scatter : reduções esparsas aceleradas e eficientes -
torch-sparse : suporte de SparseTensor -
torch-cluster : rotinas de agrupamento de gráficos -
torch-spline-conv : SplineConv SUPORTE
Esses pacotes vêm com suas próprias implementações de kernel de CPU e GPU com base na interface de extensão Pytorch C ++/CUDA/HIP (ROCM). Para um uso básico da PYG, essas dependências são totalmente opcionais . Recomendamos começar com uma instalação mínima e instalar dependências adicionais depois de começar a precisar delas.
Para facilitar a instalação dessas extensões, fornecemos rodas pip para todas as principais combinações de OS/Pytorch/Cuda, consulte aqui.
Pytorch 2.5
Para instalar os binários para Pytorch 2.5.0, basta executar
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
onde ${CUDA} deve ser substituído por cpu , cu118 , cu121 ou cu124 dependendo da instalação do Pytorch.
| cpu | cu118 | cu121 | cu124 |
|---|
| Linux | ✅ | ✅ | ✅ | ✅ |
| Windows | ✅ | ✅ | ✅ | ✅ |
| macos | ✅ | | | |
Pytorch 2.4
Para instalar os binários para Pytorch 2.4.0, basta executar
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
onde ${CUDA} deve ser substituído por cpu , cu118 , cu121 ou cu124 dependendo da instalação do Pytorch.
| cpu | cu118 | cu121 | cu124 |
|---|
| Linux | ✅ | ✅ | ✅ | ✅ |
| Windows | ✅ | ✅ | ✅ | ✅ |
| macos | ✅ | | | |
Note: Binaries of older versions are also provided for 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, PyTorch 1.11.0, PyTorch 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 e pytorch 2.3.0/2.3.1 (seguindo o mesmo procedimento). Para versões mais antigas, pode ser necessário especificar explicitamente o número mais recente da versão suportada ou a instalação via pip install --no-index para impedir que uma instalação manual da fonte. Você pode procurar o número mais recente da versão suportada aqui.
Contêiner Nvidia PYG
A NVIDIA fornece um contêiner PYG Docker para treinamento e implantação sem esforço, GPU acelerou os GNNs com PYG, veja aqui.
Todas as noites e mestre
Caso você queira experimentar os mais recentes recursos da PYG que ainda não estão totalmente lançados, instale a versão noturna do PYG via
ou instalar pyg do mestre via
pip install git+https://github.com/pyg-team/pytorch_geometric.git
ROCM WHELS
O repositório externo pyg-rocm-build fornece rodas e instruções detalhadas sobre como instalar o PYG para o ROCM. Se você tiver alguma dúvida, abra um problema aqui.
Citar
Cite nosso artigo (e os respectivos papéis dos métodos utilizados) se você usar este código em seu próprio trabalho:
@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},
}
Sinta -se à vontade para nos enviar um e -mail se desejar que seu trabalho seja listado nos recursos externos. Se você notar algo inesperado, abra um problema e informe -nos. Se você tiver alguma dúvida ou estiver perdendo um recurso específico, sinta -se à vontade para discuti -los conosco. Estamos motivados a tornar a PYG constantemente melhor.