Descripción
GraphSAINT es un marco general y flexible diseñado para entrenar Redes Neuronales Profundas de Grafos (GNNs) en grafos a gran escala. Se distingue por una novedosa metodología de entrenamiento por minilotes que emplea muestreo de grafos, una desviación de los enfoques convencionales de muestreo por capas. Esta técnica de muestreo de grafos permite la construcción de capas GNN completas en subgrafos muestreados pequeños, en lugar de muestrear dentro de las capas. Este cambio fundamental de perspectiva conduce a varias ventajas clave.
La precisión se mejora mediante técnicas de normalización simples pero efectivas que mitigan el sesgo introducido por el muestreo de grafos. Además, GraphSAINT propone muestreadores de grafos ligeros que preservan vecinos cruciales basados en características topológicas, abordando la pérdida de información inherente a cualquier proceso de muestreo. Esto también puede verse como una forma de aumento de datos o regularización de entrenamiento.
La eficiencia se mejora significativamente al resolver el problema de la 'explosión de vecinos', un desafío común en los métodos de muestreo por capas. Al construir capas GNN completas y sin muestrear en subgrafos, el número de vecinos permanece constante independientemente de la profundidad de la red, reduciendo el costo computacional por minilote de exponencial a lineal con respecto a la profundidad de la GNN. Esto también reduce drásticamente la sobrecarga de comunicación en entornos distribuidos.
La flexibilidad es un principio fundamental de GraphSAINT. La propagación de capas en un subgrafo de minilote refleja de cerca la del grafo completo, lo que permite el entrenamiento sin problemas de la mayoría de las arquitecturas GNN diseñadas para grafos completos. Esto contrasta con algunos algoritmos de muestreo por capas que solo admiten arquitecturas GNN limitadas. La escalabilidad se logra en tamaño de grafo, tamaño de modelo y recursos paralelos. Los tamaños de los subgrafos no necesitan crecer proporcionalmente con el tamaño del grafo, lo que permite que los grafos grandes quepan en la memoria de la GPU. Los costos de entrenamiento escalan linealmente con el ancho y la profundidad de la GNN, y el muestreo de grafos es altamente paralelizable.
El repositorio proporciona implementaciones en Python tanto en TensorFlow como en PyTorch, junto con una implementación en C++ para técnicas de entrenamiento paralelo. Soporta varias arquitecturas GNN como GraphSAGE, GAT y JK-Net, y múltiples muestreadores de grafos, incluyendo Node, Edge, RW y MRW. El marco está diseñado para investigadores y profesionales que trabajan con grandes conjuntos de datos de grafos y que necesitan un entrenamiento GNN eficiente y preciso.
Aspectos destacados de GraphSAINT
Entrenamiento por minilotes para GNNs profundas en grafos grandes
Método de aprendizaje inductivo basado en muestreo de grafos
Novedoso enfoque de entrenamiento por minilotes utilizando muestreo de grafos
Elimina el sesgo introducido por el muestreo de grafos mediante normalización
Muestreadores de grafos ligeros para preservar vecinos importantes
Resuelve el problema de la 'explosión de vecinos' para mayor eficiencia
Escalable con respecto al tamaño del grafo, tamaño del modelo y recursos paralelos
Soporta múltiples arquitecturas GNN (GraphSAGE, GAT, JK-Net, GaAN, MixHop)
Soporta varios muestreadores de grafos (Node, Edge, RW, MRW, Grafo completo)
Disponible en implementaciones de TensorFlow y PyTorch
Incluye implementación en C++ para técnicas de entrenamiento paralelo
Facilita la personalización para conjuntos de datos y muestreadores propios
Primeros pasos con GraphSAINT
Acceder al modelo: Clonar el repositorio de GitHub.
Configurar el entorno: Instalar dependencias incluyendo Python, TensorFlow/PyTorch, Cython y g++.
Compilar muestreadores: Ejecutar `python graphsaint/setup.py build_ext --inplace`.
Preparar el conjunto de datos: Formatear los datos del grafo en `adj_full.npz`, `adj_train.npz`, `role.json`, `class_map.json` y `feats.npy`.
Configurar el entrenamiento: Establecer hiperparámetros utilizando archivos de configuración YAML en `./train_config/`.
Ejecutar el entrenamiento: Ejecutar scripts de entrenamiento usando `python -m graphsaint.<tensorflow/pytorch>_version.train` con las banderas apropiadas para datos, configuración y uso de GPU.
Casos de uso de GraphSAINT
- Entrenamiento de grafos a gran escala
- Aprendizaje inductivo en grafos
- Aprendizaje de representación de grafos
- Clasificación de nodos
- Predicción de enlaces
- Predicción a nivel de grafo
- Desarrollo de GNN personalizadas







