Beschreibung
GraphSAINT ist ein allgemeines und flexibles Framework, das für das Training von Graph Neural Networks (GNNs) auf großen Graphen entwickelt wurde. Es zeichnet sich durch eine neuartige Minibatch-Trainingsmethodik aus, die Graph-Sampling verwendet, eine Abkehr von herkömmlichen Layer-Sampling-Ansätzen. Diese Graph-Sampling-Technik ermöglicht den Aufbau vollständiger GNN-Schichten auf kleinen, gesampelten Teilgraphen anstatt des Samplings innerhalb von Schichten. Dieser grundlegende Perspektivwechsel führt zu mehreren wichtigen Vorteilen.
Die Genauigkeit wird durch einfache, aber effektive Normalisierungstechniken verbessert, die Verzerrungen durch Graph-Sampling mindern. Darüber hinaus schlägt GraphSAINT leichtgewichtige Graph-Sampler vor, die wichtige Nachbarn basierend auf topologischen Merkmalen erhalten und so Informationsverluste, die bei jedem Sampling-Prozess auftreten, beheben. Dies kann auch als eine Form der Datenaugmentation oder Trainingsregularisierung betrachtet werden.
Die Effizienz wird durch die Lösung des Problems der 'Nachbar-Explosion', einer häufigen Herausforderung bei Layer-Sampling-Methoden, erheblich verbessert. Durch den Aufbau vollständiger, ungesampelter GNN-Schichten auf Teilgraphen bleibt die Anzahl der Nachbarn unabhängig von der Netzwerktiefe konstant, wodurch die Rechenkosten pro Minibatch von exponentiell auf linear in Bezug auf die GNN-Tiefe reduziert werden. Dies reduziert auch den Kommunikationsaufwand in verteilten Umgebungen drastisch.
Flexibilität ist ein Kernprinzip von GraphSAINT. Die Schichtpropagation auf einem Minibatch-Teilgraph spiegelt die auf dem vollständigen Graphen eng wider, was das nahtlose Training der meisten GNN-Architekturen, die für vollständige Graphen entwickelt wurden, ermöglicht. Dies steht im Gegensatz zu einigen Layer-Sampling-Algorithmen, die nur begrenzte GNN-Architekturen unterstützen. Skalierbarkeit wird über die Graphgröße, Modellgröße und parallele Ressourcen hinweg erreicht. Teilgraphgrößen müssen nicht proportional zur Graphgröße wachsen, sodass große Graphen in den GPU-Speicher passen. Die Trainingskosten skalieren linear mit der GNN-Breite und -Tiefe, und das Graph-Sampling ist hochgradig parallelisierbar.
Das Repository bietet Python-Implementierungen sowohl in TensorFlow als auch in PyTorch sowie eine C++-Implementierung für parallele Trainingstechniken. Es unterstützt verschiedene GNN-Architekturen wie GraphSAGE, GAT und JK-Net sowie mehrere Graph-Sampler, darunter Node, Edge, RW und MRW. Das Framework ist für Forscher und Praktiker konzipiert, die mit großen Graphdatensätzen arbeiten und ein effizientes und genaues GNN-Training benötigen.
GraphSAINT im Überblick
Minibatch-Training für tiefe GNNs auf großen Graphen
Graph-Sampling-basierte induktive Lernmethode
Neuartiger Minibatch-Trainingsansatz mittels Graph-Sampling
Eliminiert durch Graph-Sampling verursachte Verzerrungen durch Normalisierung
Leichtgewichtige Graph-Sampler zur Erhaltung wichtiger Nachbarn
Löst das Problem der 'Nachbar-Explosion' für Effizienz
Skalierbar in Bezug auf Graphgröße, Modellgröße und parallele Ressourcen
Unterstützt mehrere GNN-Architekturen (GraphSAGE, GAT, JK-Net, GaAN, MixHop)
Unterstützt verschiedene Graph-Sampler (Node, Edge, RW, MRW, Full graph)
Verfügbar in TensorFlow- und PyTorch-Implementierungen
Enthält C++-Implementierung für parallele Trainingstechniken
Ermöglicht Anpassung für eigene Datensätze und Sampler
Erste Schritte mit GraphSAINT
Modellzugriff: Klonen Sie das GitHub-Repository.
Umgebung einrichten: Installieren Sie Abhängigkeiten, einschließlich Python, TensorFlow/PyTorch, Cython und g++.
Sampler kompilieren: Führen Sie `python graphsaint/setup.py build_ext --inplace` aus.
Datensatz vorbereiten: Formatieren Sie Ihre Graphdaten in `adj_full.npz`, `adj_train.npz`, `role.json`, `class_map.json` und `feats.npy`.
Training konfigurieren: Legen Sie Hyperparameter mithilfe von YAML-Konfigurationsdateien in `./train_config/` fest.
Training ausführen: Führen Sie Trainingsskripte mit `python -m graphsaint.<tensorflow/pytorch>_version.train` mit entsprechenden Flags für Daten, Konfiguration und GPU-Nutzung aus.
GraphSAINT's Anwendungsfälle
- Großskaliges Graph-Training
- Induktives Lernen auf Graphen
- Graph-Repräsentationslernen
- Knotenklassifizierung
- Link-Vorhersage
- Graph-Level-Vorhersage
- Benutzerdefinierte GNN-Entwicklung







