Open
Description
🚀 The feature, motivation and pitch
Different GNN applications require customized sampling to improve the accuracy and/or performance. We propose the following advanced sampling routines with detailed benchmarking reports.
- Multi-threading support: All sampling operations are single-threaded. We can expect additional speed-ups when providing multi-threading implementation:
- Multi-threaded
neighbor_sample
implementation - Multi-threaded
hetero_neighbor_sample
implementation (Hetero neighbor sampler multithreading pyg-lib#215) - Introduce benchmarks in
pyg-lib
and/or PyG
- Multi-threaded
- Bi-directional sampling: Allow the option to return a bidirectional graph as part of sampling (e.g., for allowing GNNs with more layers than sampled hops)
- Add
SubgraphType
withbidirectional
sampling support (1/2) #7199 - Add
SubgraphType
with bidirectional sampling support (2/2) #7200 - Introduce
bidirectional
sampling benchmarks
- Add
- Hierarchical Neighborhood sampling: Hierarchical Neighborhood Sampling is extending classical Neighborhood Sampling by collecting additional information about number of sampled nodes and edges per each hop. That information can be used in special features like Hierarchical Graph Adjacency Matrix implemented by
trim_to_layer
functionality which helps to boost the performance.- Adding option to return info about sampled graph pyg-lib#197
- Adding
trim_to_layer
utility function #6661 -
SparseTensor
support fortrim_to_layer
#7089 - Adds an example for Hierarchical Sampling #7244
- Add automatic trimming example via a separate HGAM layer and add an example
- Write documentation/tutorial
- Weighted Sampling: Allow passing a
weight
vector toneighbor_sample
to sample based on- Allow passing a
weight
vector toneighbor_sample
to sample based on importance scores. Reference DGL implementation (seeprob
argument). - Integrate into PyG
- Allow passing a
- Subgraph sampling
- Initial version in
pyg-lib
, see here - Benchmarking efforts
- Integrate into
pyg_lib.neighbor_sample
in casedirected=False
- Initial version in
Activity