Descrição
GraphSAINT é um framework geral e flexível projetado para treinar Redes Neurais de Grafos (GNNs) em grafos de grande escala. Ele se distingue por uma metodologia inovadora de treinamento em minibatch que emprega amostragem de grafos, um desvio das abordagens convencionais de amostragem de camadas. Essa técnica de amostragem de grafos permite a construção de camadas completas de GNN em subgrafos amostrados pequenos, em vez de amostragem dentro das camadas. Essa mudança fundamental de perspectiva leva a várias vantagens-chave.
A precisão é aprimorada por meio de técnicas de normalização simples, porém eficazes, que mitigam o viés introduzido pela amostragem de grafos. Além disso, o GraphSAINT propõe amostradores de grafos leves que preservam vizinhos cruciais com base em características topológicas, abordando a perda de informação inerente a qualquer processo de amostragem. Isso também pode ser visto como uma forma de aumento de dados ou regularização de treinamento.
A eficiência é significativamente aprimorada ao resolver o problema de 'explosão de vizinhos', um desafio comum em métodos de amostragem de camadas. Ao construir camadas de GNN completas e não amostradas em subgrafos, o número de vizinhos permanece constante, independentemente da profundidade da rede, reduzindo o custo computacional por minibatch de exponencial para linear em relação à profundidade da GNN. Isso também reduz drasticamente a sobrecarga de comunicação em ambientes distribuídos.
A flexibilidade é um princípio central do GraphSAINT. A propagação de camadas em um subgrafo de minibatch espelha de perto a do grafo completo, permitindo o treinamento contínuo da maioria das arquiteturas de GNN projetadas para grafos completos. Isso contrasta com alguns algoritmos de amostragem de camadas que suportam apenas arquiteturas de GNN limitadas. A escalabilidade é alcançada em relação ao tamanho do grafo, tamanho do modelo e recursos paralelos. Os tamanhos dos subgrafos não precisam crescer proporcionalmente ao tamanho do grafo, permitindo que grafos grandes caibam na memória da GPU. Os custos de treinamento escalam linearmente com a largura e profundidade da GNN, e a amostragem de grafos é altamente paralelizável.
O repositório fornece implementações em Python em TensorFlow e PyTorch, juntamente com uma implementação em C++ para técnicas de treinamento paralelo. Ele suporta várias arquiteturas de GNN como GraphSAGE, GAT e JK-Net, e múltiplos amostradores de grafos, incluindo Node, Edge, RW e MRW. O framework é projetado para pesquisadores e profissionais que trabalham com grandes conjuntos de dados de grafos e que necessitam de treinamento de GNN eficiente e preciso.
Destaques de GraphSAINT
Treinamento em minibatch para GNNs profundas em grafos grandes
Método de aprendizado indutivo baseado em amostragem de grafos
Abordagem inovadora de treinamento em minibatch usando amostragem de grafos
Elimina o viés introduzido pela amostragem de grafos via normalização
Amostradores de grafos leves para preservar vizinhos importantes
Resolve o problema de 'explosão de vizinhos' para eficiência
Escalável em relação ao tamanho do grafo, tamanho do modelo e recursos paralelos
Suporta múltiplas arquiteturas de GNN (GraphSAGE, GAT, JK-Net, GaAN, MixHop)
Suporta vários amostradores de grafos (Node, Edge, RW, MRW, Grafo completo)
Disponível em implementações TensorFlow e PyTorch
Inclui implementação em C++ para técnicas de treinamento paralelo
Facilita a personalização para seus próprios conjuntos de dados e amostradores
Primeiros passos com GraphSAINT
Acessar modelo: Clone o repositório GitHub.
Configurar ambiente: Instale as dependências, incluindo Python, TensorFlow/PyTorch, Cython e g++.
Compilar amostradores: Execute `python graphsaint/setup.py build_ext --inplace`.
Preparar conjunto de dados: Formate seus dados de grafo em `adj_full.npz`, `adj_train.npz`, `role.json`, `class_map.json` e `feats.npy`.
Configurar treinamento: Defina hiperparâmetros usando arquivos de configuração YAML em `./train_config/`.
Executar treinamento: Execute scripts de treinamento usando `python -m graphsaint.<tensorflow/pytorch>_version.train` com flags apropriadas para dados, configuração e uso de GPU.
Casos de uso de GraphSAINT
- Treinamento de grafos em larga escala
- Aprendizado indutivo em grafos
- Aprendizado de representação de grafos
- Classificação de nós
- Predição de links
- Predição em nível de grafo
- Desenvolvimento de GNN personalizado







