Node classification on heterogeneous graph with RGCN
This example aims to demonstrate how to run node classification task on heterogeneous graph with DGL. Models are not tuned to achieve the best accuracy yet.
Run on ogbn-mag dataset
In the preprocess stage, reverse edges are added and duplicate edges are removed. Feature data of author and institution node types are generated dynamically with embedding layer.
Sample on CPU and train/infer on CPU
python3 hetero_rgcn.py --dataset ogbn-mag
Sample on CPU and train/infer on GPU
python3 hetero_rgcn.py --dataset ogbn-mag --num_gpus 1
Resource usage and time cost
Below results are roughly collected from an AWS EC2 g4dn.metal, 384GB RAM, 96 vCPUs(Cascade Lake P-8259L), 8 NVIDIA T4 GPUs(16GB RAM). CPU RAM usage is the peak value of used field of free command which is a bit rough. Please refer to RSS/USS/PSS which are more accurate. GPU RAM usage is the peak value recorded by nvidia-smi command.
| Dataset Size | CPU RAM Usage | Num of GPUs | GPU RAM Usage | Time Per Epoch(Training) |
|---|---|---|---|---|
| ~1.1GB | ~7GB | 0 | 0GB | ~233s |
| ~1.1GB | ~5GB | 1 | 4.5GB | ~73.6s |
Accuracies
Epoch: 01, Loss: 2.3386, Valid: 47.67%, Test: 46.96%
Epoch: 02, Loss: 1.5563, Valid: 47.66%, Test: 47.02%
Epoch: 03, Loss: 1.1557, Valid: 46.58%, Test: 45.42%
Test accuracy 45.3850
Run on ogb-lsc-mag240m dataset
In the preprocess stage, reverse edges are added and duplicate edges are removed. What's more, feature data are generated in advance for author and institution node types via message passing. Since such preprocessing will usually take a long time, we also offer the above files for download:
Sample on CPU and train/infer on CPU
python3 hetero_rgcn.py --dataset ogb-lsc-mag240m
Sample on CPU and train/infer on GPU
python3 hetero_rgcn.py --dataset ogb-lsc-mag240m --num_gpus 1
Resource usage and time cost
Below results are roughly collected from an AWS EC2 g4dn.metal, 384GB RAM, 96 vCPUs(Cascade Lake P-8259L), 8 NVIDIA T4 GPUs(16GB RAM). CPU RAM usage is the peak value of used field of free command which is a bit rough. Please refer to RSS/USS/PSS which are more accurate. GPU RAM usage is the peak value recorded by nvidia-smi command.
| Dataset Size | CPU RAM Usage | Num of GPUs | GPU RAM Usage | Time Per Epoch(Training) |
|---|---|---|---|---|
| ~404GB | ~72GB | 0 | 0GB | ~325s |
| ~404GB | ~61GB | 1 | 14GB | ~178s |
Accuracies
Epoch: 01, Loss: 2.0798, Valid: 52.04%
Epoch: 02, Loss: 1.8652, Valid: 54.51%
Epoch: 03, Loss: 1.8175, Valid: 53.71%