설명
GraphSAINT는 대규모 그래프에서 그래프 신경망(GNN)을 훈련하기 위해 설계된 일반적이고 유연한 프레임워크입니다. 기존의 레이어 샘플링 접근 방식과 달리 그래프 샘플링을 사용하는 새로운 미니배치 훈련 방법론으로 차별화됩니다. 이 그래프 샘플링 기법은 레이어 내에서 샘플링하는 대신 작은 샘플링된 하위 그래프에 대해 완전한 GNN 레이어를 구성할 수 있도록 합니다. 이러한 관점의 근본적인 변화는 몇 가지 주요 이점을 가져옵니다.
그래프 샘플링으로 인해 발생하는 편향을 완화하는 간단하면서도 효과적인 정규화 기법을 통해 정확도가 향상됩니다. 또한 GraphSAINT는 토폴로지 특성에 따라 중요한 이웃을 보존하는 경량 그래프 샘플러를 제안하여 모든 샘플링 프로세스에 내재된 정보 손실을 해결합니다. 이는 데이터 증강 또는 훈련 정규화의 한 형태로 볼 수도 있습니다.
레이어 샘플링 방법에서 흔히 발생하는 '이웃 폭발' 문제를 해결하여 효율성이 크게 향상됩니다. 하위 그래프에 대해 샘플링되지 않은 완전한 GNN 레이어를 구성함으로써, 네트워크 깊이에 관계없이 이웃의 수가 일정하게 유지되어 GNN 깊이에 대한 미니배치당 계산 비용이 지수적에서 선형으로 감소합니다. 이는 분산 환경에서의 통신 오버헤드도 크게 줄여줍니다.
유연성은 GraphSAINT의 핵심 원칙입니다. 미니배치 하위 그래프에서의 레이어 전파는 전체 그래프에서의 전파와 매우 유사하므로, 전체 그래프용으로 설계된 대부분의 GNN 아키텍처를 원활하게 훈련할 수 있습니다. 이는 일부 레이어 샘플링 알고리즘이 제한된 GNN 아키텍처만 지원하는 것과 대조됩니다. 확장성은 그래프 크기, 모델 크기 및 병렬 리소스 전반에 걸쳐 달성됩니다. 하위 그래프 크기가 그래프 크기에 비례하여 성장할 필요가 없어 대규모 그래프를 GPU 메모리에 맞출 수 있습니다. 훈련 비용은 GNN 너비와 깊이에 따라 선형적으로 확장되며, 그래프 샘플링은 병렬화가 매우 용이합니다.
이 리포지토리는 TensorFlow와 PyTorch 모두에서 Python 구현을 제공하며, 병렬 훈련 기법을 위한 C++ 구현도 포함합니다. GraphSAGE, GAT, JK-Net과 같은 다양한 GNN 아키텍처와 Node, Edge, RW, MRW를 포함한 여러 그래프 샘플러를 지원합니다. 이 프레임워크는 효율적이고 정확한 GNN 훈련이 필요한 대규모 그래프 데이터셋을 다루는 연구원 및 실무자를 위해 설계되었습니다.
GraphSAINT 하이라이트
대규모 그래프에서 딥 GNN을 위한 미니배치 훈련
그래프 샘플링 기반 귀납적 학습 방법
그래프 샘플링을 이용한 새로운 미니배치 훈련 접근 방식
정규화를 통한 그래프 샘플링으로 인한 편향 제거
중요한 이웃을 보존하는 경량 그래프 샘플러
효율성을 위한 '이웃 폭발' 문제 해결
그래프 크기, 모델 크기 및 병렬 리소스에 대한 확장성
다양한 GNN 아키텍처 지원 (GraphSAGE, GAT, JK-Net, GaAN, MixHop)
다양한 그래프 샘플러 지원 (Node, Edge, RW, MRW, Full graph)
TensorFlow 및 PyTorch 구현 제공
병렬 훈련 기법을 위한 C++ 구현 포함
자체 데이터셋 및 샘플러에 대한 사용자 정의 용이
GraphSAINT 시작하기
모델 접근: GitHub 리포지토리를 클론합니다.
환경 설정: Python, TensorFlow/PyTorch, Cython, g++를 포함한 종속성을 설치합니다.
샘플러 컴파일: `python graphsaint/setup.py build_ext --inplace`를 실행합니다.
데이터셋 준비: 그래프 데이터를 `adj_full.npz`, `adj_train.npz`, `role.json`, `class_map.json`, `feats.npy` 형식으로 준비합니다.
훈련 구성: `./train_config/`의 YAML 구성 파일을 사용하여 하이퍼파라미터를 설정합니다.
훈련 실행: 데이터, 구성 및 GPU 사용에 대한 적절한 플래그와 함께 `python -m graphsaint.<tensorflow/pytorch>_version.train`을 사용하여 훈련 스크립트를 실행합니다.
GraphSAINT의 사용 사례
- 대규모 그래프 훈련
- 그래프에서의 귀납적 학습
- 그래프 표현 학습
- 노드 분류
- 링크 예측
- 그래프 수준 예측
- 사용자 정의 GNN 개발







